source: project/chicken/trunk/TODO @ 12342

Last change on this file since 12342 was 12342, checked in by felix winkelmann, 13 years ago

removed some dead code

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