source: project/chicken/trunk/TODO @ 12609

Last change on this file since 12609 was 12609, checked in by felix winkelmann, 13 years ago
  • updated NEWS and chicken-install.1
  • added import suggestion to compiler using modules.db
  • renamed db file to "modules.db"
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
10** expander
11*** expansion of r5rs_pitfall 4.2 incorrect
12    possibly due to a non-aliased implicit "begin" somewhere
13*** dirty-macros.scm loops when using `defile'
14    possibly due to unrenamed special forms
15*** slow
16
17** modules
18*** `require-extension' fails in interpreter when extension is .so without import library
19    probably because load and import is in same toplevel form, and the
20    load is performed after the import (at runtime). A possibly fix
21    would be to load the extension immediately (at
22    compile-/expansion-time), when import is #t and o import lib
23    exists.
24
25
26* tasks
27
28** NEWS
29*** document changes between now and last time, this was updated
30    (4.0.0x2 doesn't appear, for example)
31
32** branches
33*** test irregular branch, merge if performance is acceptable
34
35** expander
36*** at some stage disable debug-output in expand.scm
37
38** module issues
39*** need a way to omit generating module registration without generating import lib
40    for example when compiling static version, where implib already exists
41*** code-duplication in compiler and evaluator for ##core#module
42*** "scheme" module does not include some special forms ("define-syntax", etc.)
43*** import-for-syntax imports value bindings into import-env
44    should actually be a distinct meta-import-env.
45    (does it work at all?)
46*** curried define performs expansion in empty se - problem?
47    (as comment in expand.scm indicated (##sys#register-export))
48*** check phase separation and module access
49**** interaction for define-for-syntax, begin-for-syntax, and macros
50     also check for different execution modes (compile-time, run-time, csi, ...)
51*** checks to be implemented
52**** reimport of imported id
53**** unused defs?
54
55** compiler
56*** use ##core#db information
57    either automatically add use/require code (tricky) or at least warn and suggest
58    use
59*** generate object-files in /tmp (or TMPDIR)?
60
61** setup/install
62*** setup-download
63**** use HTTP_PROXY env. var
64**** handle redirects in http-fetch
65*** automatically update db after extension installation?
66
67** library units
68*** read-mark list should be stored in read-table
69*** ports should have indicator slot about exact type (tcp, file, ...)
70
71** syntax-error
72*** if ##sys#current-module is set, add name to error message?
73*** fluidly keep track of expanded forms (extend meaning of culprit) to pprint pruned expr on error
74
75** build
76*** running "chicken-install -u" may be problematic with changed DESTDIR
77*** rules.make should really be generated by a script
78*** need script to process import libraries for generating indices for doc.callcc.org
79    then tell Toby about it
80
81
82* tests
83
84** optional longer run (env. var)
85*** syntax-rules-stress-test
86*** fully compiled ec-tests
87
88
89* documentation
90
91** document ("HI/LO") expander (-> wiki, internals)
92   will we ever have the time for that?
93** document new .meta entries in tutorials on wiki
94   depends, test-depends
95** chicken.texi needs to be regenerated
96
97
98* optimizations
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)
126
127** Lisp2-hack by Dybvig
128*** add function-cell to symbol, call on direct call without checks
129*** initialized to trap function on set!/define, which does fixup
130*** would also allow inline-caching hacks
Note: See TracBrowser for help on using the repository browser.