source: project/chicken/trunk/TODO @ 12314

Last change on this file since 12314 was 12314, checked in by felix winkelmann, 12 years ago

updated TODO

File size: 4.2 KB
Line 
1TODO for trunk                                                          -*- Outline -*-
2
3
4* bugs
5
6** compiler
7*** pre-optimization
8**** changes call-sites and makes them invalid for later pre-optimization
9** expander
10*** when import-libraries are used, reference to unexported syntax in exported syntax fails
11    it seems that we have to add unexported syntax to the import lib, in case it is referenced
12    from exported syntax. sigh.
13*** expansion of r5rs_pitfall 4.2 incorrect
14    possibly due to a non-aliased implicit "begin" somewhere
15*** dirty-macros.scm loops when using `defile'
16    possibly due to unrenamed special forms
17** modules
18*** chicken.import.scm refers to ##sys#chicken-macro-environment
19    ... which is only set, if chicken-more-macros.scm is loaded, which
20    is of course not the case inside a compiled executable (current
21    workaround is to set them to nil by default)
22*** same for ##sys#chicken-ffi-macro-environment
23*** re-exports of syntax doesn't work
24    generating import library requires source
25    (compiled-module-registration), but original module is lost after
26    importing. Can we simply pull expander closure out of module from which
27    we imported?
28*** `require-extension' fails in interpreter when extension is .so without import library
29    probably because load and import is in same toplevel form, and the
30    load is performed after the import (at runtime). A possibly fix
31    would be to load the extension immediately (at
32    compile-/expansion-time), when import is #t and o import lib
33    exists.
34
35
36* tasks
37
38** branches
39*** test irregular branch, merge if performance is acceptable
40
41** expander
42*** at some stage disable debug-output in expand.scm
43
44** module issues
45*** code-duplication in compiler and evaluator for ##core#module
46*** "scheme" module does not include some special forms ("define-syntax", etc.)
47*** import-for-syntax imports value bindings into import-env
48    should actually be a distinct meta-import-env.
49    (does it work at all?)
50*** curried define performs expansion in empty se - problem?
51    (as comment in expand.scm indicated (##sys#register-export))
52*** checks to be implemented
53**** reimport of imported id
54**** unused defs?
55
56** compiler
57*** remove "custom-declare" + stuff?
58
59** setup/install
60*** setup-download
61**** use HTTP_PROXY env. var
62**** handle redirects in http-fetch
63
64** library
65*** read-mark list should be stored in read-table
66
67** syntax-error
68*** if ##sys#current-module is set, add name to error message?
69*** fluidly keep track of expanded forms (extend meaning of culprit) to pprint pruned expr on error
70
71** build
72*** rules.make should really be generated by a script
73*** need script to process import libraries for generating indices for doc.callcc.org
74    then tell Toby about it
75
76
77* tests
78
79** optional longer run (env. var)
80*** syntax-rules-stress-test
81*** fully compiled ec-tests
82
83
84* documentation
85
86** document ("HI/LO") expander (-> wiki, internals)
87   will we ever have the time for that?
88** document new .meta entries in tutorials on wiki
89   depends, test-depends
90** chicken.texi needs to be regenerated
91
92
93* optimizations
94
95** allocation-estimation in conditionals should take max of both branches, not sum
96
97** self-recursion optimization
98   what MacScheme called "benchmark-mode" (assume self-calls are recursion)
99*** needs declaration or option, >= -O2
100
101** when inlining, consing arg-list with "list" may make get-keyword possible foldable
102
103** local flow analysis
104
105** lambda-fusion / "fuse-and-dispatch" (suggested by Alex)
106   convert groups of local lambdas referenced to only in operator-position into
107   looping lambda + dispatch (static variable can be used), otherwise similar to
108   a conditional
109*** new forms (after optimization, prepared language)
110    [##core#dispatch LAMBDABODY1 ... BODY]
111    [##core#call/dispatch {INDEX} ARGUMENT1 ...}
112
113** handle optional args primitively
114   for example, set to distinguished val (checking argc) on C level, core
115   primitive for checking this - should be quite simple, but llist processing
116   (decompose-lambda-list) will be more expensive and cumbersome.
117
118** pre-hashed symbols (extra symbol slot)
119   The memory usage should be acceptable, performance gain is hard to guess.
120   Some experiments indicate that hashing the string is cheaper than it appears,
121   but low-level hashtables should get the most of this (and thus speed up
122   the compiler)
Note: See TracBrowser for help on using the repository browser.