source: project/chicken/trunk/TODO @ 12301

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

merged changes from cmi branch

File size: 4.2 KB
Line 
1TODO 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** test irregular branch
39
40* expander
41** at some stage disable debug-output in expand.scm
42
43* compiler
44** remove "custom-declare" + stuff?
45
46* optimizations
47** allocation-estimation in conditionals should take max of both branches, not sum
48** self-recursion optimization
49   what MacScheme called "benchmark-mode" (assume self-calls are recursion)
50*** needs declaration or option, >= -O2
51** when inlining, consing arg-list with "list" may make get-keyword possible foldable
52** local flow analysis
53** lambda-fusion / "fuse-and-dispatch" (suggested by Alex)
54   convert groups of local lambdas referenced to only in operator-position into
55   looping lambda + dispatch (static variable can be used), otherwise similar to
56   a conditional
57*** new forms (after optimization, prepared language)
58    [##core#dispatch LAMBDABODY1 ... BODY]
59    [##core#call/dispatch {INDEX} ARGUMENT1 ...}
60** handle optional args primitively
61   for example, set to distinguished val (checking argc) on C level, core
62   primitive for checking this - should be quite simple, but llist processing
63   (decompose-lambda-list) will be more expensive and cumbersome.
64
65* tests
66** optional longer run (env. var)
67*** syntax-rules-stress-test
68*** fully compiled ec-tests
69
70* module issues
71** code-duplication in compiler and evaluator for ##core#module
72** "scheme" module does not include some special forms ("define-syntax", etc.)
73** import-for-syntax imports value bindings into import-env
74   should actually be a distinct meta-import-env.
75   (does it work at all?)
76** curried define performs expansion in empty se - problem?
77   (as comment in expand.scm indicated (##sys#register-export))
78** checks to be implemented
79*** reimport of imported id
80*** unused defs?
81
82* setup/install
83** setup-download
84*** use HTTP_PROXY env. var
85*** handle redirects in http-fetch
86
87* library
88** read-mark list should be stored in read-table
89
90* runtime
91** pre-hashed symbols (extra symbol slot)
92   The memory usage should be acceptable, performance gain is hard to guess.
93   Some experiments indicate that hashing the string is cheaper than it appears,
94   but low-level hashtables should get the most of this (and thus speed up
95   the compiler)
96
97* benchmarks
98** add more realistic benchmarks
99
100* documentation
101** document ("HI/LO") expander (-> wiki, internals)
102   will we ever have the time for that?
103** document new .meta entries
104   depends, test-depends
105
106* build
107** chicken.texi needs to be regenerated
108** rules.make should really be generated by a script
109
110* syntax-error
111** if ##sys#current-module is set, add name to error message?
112** fluidly keep track of expanded forms (extend meaning of culprit)
113   to pprint pruned expr on error
114
115* infrastructure
116** need script to process import libraries for generating indices for doc.callcc.org
117   then tell Toby about it
Note: See TracBrowser for help on using the repository browser.