1 | TODO for trunk -*- Outline -*- |
---|
2 | |
---|
3 | |
---|
4 | * sort this document by order of importance |
---|
5 | bugs, tasks, tests, documentation, optimizations |
---|
6 | |
---|
7 | * bugs |
---|
8 | ** fprint benchmark crashes (base, out of heap) on 64-bit x86 |
---|
9 | (even with debug info) |
---|
10 | ** compiler |
---|
11 | *** pre-optimization |
---|
12 | **** changes call-sites and makes them invalid for later pre-optimization |
---|
13 | ** expander |
---|
14 | *** expansion of r5rs_pitfall 4.2 incorrect |
---|
15 | possibly due to a non-aliased implicit "begin" somewhere |
---|
16 | *** dirty-macros.scm loops when using `defile' |
---|
17 | possibly due to unrenamed special forms |
---|
18 | ** modules |
---|
19 | *** chicken.import.scm refers to ##sys#chicken-macro-environment |
---|
20 | ... which is only set, if chicken-more-macros.scm is loaded, which |
---|
21 | is of course not the case inside a compiled executable (current |
---|
22 | workaround is to set them to nil by default) |
---|
23 | *** same for ##sys#chicken-ffi-macro-environment |
---|
24 | *** re-exports of syntax doesn't work |
---|
25 | generating import library requires source |
---|
26 | (compiled-module-registration), but original module is lost after |
---|
27 | importing. Can we simply pull expander closure out of module from which |
---|
28 | we imported? |
---|
29 | *** `require-extension' fails in interpreter when extension is .so without import library |
---|
30 | probably because load and import is in same toplevel form, and the |
---|
31 | load is performed after the import (at runtime). A possibly fix |
---|
32 | would be to load the extension immediately (at |
---|
33 | compile-/expansion-time), when import is #t and o import lib |
---|
34 | exists. |
---|
35 | |
---|
36 | * branches |
---|
37 | ** merge cmi branch and announce changes |
---|
38 | |
---|
39 | * expander |
---|
40 | ** at some stage disable debug-output in expand.scm |
---|
41 | |
---|
42 | * compiler |
---|
43 | ** remove "custom-declare" + stuff? |
---|
44 | |
---|
45 | * optimizations |
---|
46 | ** self-recursion optimization |
---|
47 | what MacScheme called "benchmark-mode" (assume self-calls are recursion) |
---|
48 | *** needs declaration or option, >= -O2 |
---|
49 | ** when inlining, consing arg-list with "list" may make get-keyword possible foldable |
---|
50 | ** local flow analysis |
---|
51 | ** lambda-fusion |
---|
52 | ** handle optional ags primitively |
---|
53 | for example, set to distinguished val (checking argc) on C level, core |
---|
54 | primitive for checking this - should be quite simple, but llist processing |
---|
55 | (decompose-lambda-list) will be more expensive and cumbersome. |
---|
56 | |
---|
57 | * tests |
---|
58 | ** optional longer run (env. var) |
---|
59 | *** syntax-rules-stress-test |
---|
60 | *** fully compiled ec-tests |
---|
61 | |
---|
62 | * module issues |
---|
63 | ** code-duplication in compiler and evaluator for ##core#module |
---|
64 | ** "scheme" module does not include some special forms ("define-syntax", etc.) |
---|
65 | ** import-for-syntax imports value bindings into import-env |
---|
66 | should actually be a distinct meta-import-env. |
---|
67 | (does it work at all?) |
---|
68 | ** curried define performs expansion in empty se - problem? |
---|
69 | (as comment in expand.scm indicated (##sys#register-export)) |
---|
70 | ** checks to be implemented |
---|
71 | *** reimport of imported id |
---|
72 | *** unused defs? |
---|
73 | |
---|
74 | * setup/install |
---|
75 | ** setup-download |
---|
76 | *** use HTTP_PROXY env. var |
---|
77 | *** handle redirects in http-fetch |
---|
78 | *** connect timeout and alternative download location |
---|
79 | ** chicken-install |
---|
80 | *** should cache extension-info |
---|
81 | necessary? |
---|
82 | ** funky: allow CHICKEN_REPOSITORY to be a list and try in order |
---|
83 | *** special name to refer to default repo |
---|
84 | |
---|
85 | * library |
---|
86 | ** read-mark list should be stored in read-table |
---|
87 | |
---|
88 | * documentation |
---|
89 | ** document ("HI/LO") expander (-> wiki, internals) |
---|
90 | will we ever have the time for that? |
---|
91 | ** document new .meta entries |
---|
92 | depends, test-depends |
---|
93 | |
---|
94 | * build |
---|
95 | ** chicken.texi needs to be regenerated |
---|
96 | ** rules.make should really be generated by a script |
---|
97 | |
---|
98 | * syntax-error |
---|
99 | ** if ##sys#current-module is set, add name to error message? |
---|
100 | ** fluidly keep track of expanded forms (extend meaning of culprit) |
---|
101 | to pprint pruned expr on error |
---|
102 | |
---|
103 | * infrastructure |
---|
104 | ** need script to process import libraries for generating indices for doc.callcc.org |
---|
105 | then tell Toby about it |
---|