-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtodo.txt
68 lines (50 loc) · 1.98 KB
/
todo.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
Done
====
* allow single-file outputs.
* typed Paths.
* Make an assembly derivation (just ln -s based on a map)
* Commandline UI: depthfirst queue
* better descriptions
* parallelism throughout
* qsub integration: detect completion / job killed / etc. (must use qstat)
* Track job status (e.g., Running); job scheduling
* qsub status in mongo; treat like CachingDerivationStrategy?
* non-qsub lifecycle model
* run on EmergeNet
* cleanup mongo representation
Underway
========
* Commandline UI: cleanup, showlog, lastfailure, archive closure
* detailed provenance for debugging
* explain from symlink
* invalidate recipe, provenance, or artifact...
Garbage collection
------------------
* add a table for roots.
* mark derivation roots. Database cleanup.
* db could track total count of downstream consumers, for easy cleanup
Immediate
=========
* Artifact[TypedFile] needs to be in the DB to distinguish it from Artifact[DefaultPath] (??)
* Yikes: dependencies are tracked as Sets in various places, so provenances may lose track of important order information e.g. for StringInterpolationDerivations.
Medium
======
* store info about cost / duration / etc.
* Add a completion estimator to system derivations
* Make the file store adapt to usage based on hash characters
* Limit access to the resolve function
* detect cycles (or make impossible?). Already impossible due to Scala syntax?
* url hash verifier
* qsub the file validations?
Hard
====
* recursive loading of worldmake recipes (e.g., runtime compilation and classloading)
* option to continue computing in spite of failure (hard: https://github.com/scala/scala/pull/2563)
* what if a library function called inside a derivation is changed? Need to hash the whole call tree??
* distinguish "meaningful" changes (to the code) from supposedly meaningless context (e.g., platform, JDK version)
* distinguish compile-time from runtime ("retained") dependencies
* Web UI
more
====
* add table for executors; request abort, etc.
* separate executor