source: project/chicken/trunk/TODO @ 13062

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

more char-code safety measures

File size: 5.7 KB
1TODO for trunk                                                          -*- Outline -*-
4* bugs
6** compiler
7*** pre-optimization
8**** changes call-sites and makes them invalid for later pre-optimization
9*** check profiling (-profile vs. profile-declaration)
10**** this doesn't always seem to work, in particular with library units
11**** ##sys#finish-profile should always be invoked
12     is it in `exit'?
13*** when re-defining intrinsics, the compiler should warn and disable re-writes
14    add declaration to keep re-writes enabled for core library files
15*** check in foreign.import.scm and compiler.import.scm whether the import
16    took place in the compiler
18** expander
19*** expansion of r5rs_pitfall 4.2 incorrect
20    possibly due to a non-aliased implicit "begin" somewhere
21*** dirty-macros.scm loops when using `defile'
22    possibly due to unrenamed special forms
23*** extended lambda-lists refer to `optional' and `let-optionals[*]'
24    this will break, when these macros are renamed on import
26** modules
27*** `require-extension' fails in interpreter when extension is .so without import library
28    probably because load and import is in same toplevel form, and the
29    load is performed after the import (at runtime). A possibly fix
30    would be to load the extension immediately (at
31    compile-/expansion-time), when import is #t and o import lib
32    exists.
33*** mark import-source (module) on plist of imported symbols and use in re-import warning
34    doesn't work that easily, try to find another solution
36** libraries
37*** library/runtime: cyclic list checks for assq/assv/assoc/memq/memv/member
38    and C_i_list_tail
40** setup/install
41*** broken on cygwin/mingw (vista): gets #!eof from server
42    Vista security paranoia?
44** henrietta
45*** installed version on kitten-tech seems not to work?
48* tasks
50** branches
51*** try to improve performance in lazy-gensyms
53** expander
54*** test new implementation of `define-for-syntax'
55**** test "numbers" egg
56**** is s48-modules still working?
57**** port xlib egg
58*** at some stage remove debug-output in expand.scm
60** module issues
61*** need a way to omit generating module registration without generating import lib
62    for example when compiling static version, where implib already exists
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    example: we need `(import-for-syntax chicken)' to have access to
69    `receive' in a procedural syntax definition.
70**** could be tested with xlib egg
71*** curried define performs expansion in empty se - problem?
72    (as comment in expand.scm indicated (##sys#register-export))
73*** check phase separation and module access
74**** see "expander" above
75**** interaction for define-for-syntax, begin-for-syntax, and macros
76***** check for different execution modes (compile-time, run-time, csi, ...)
77***** figure out visibility
79** compiler
80*** test define-rewrite-rule
81*** (csc) generate object-files in /tmp (or TMPDIR)?
83** setup/install
84*** setup-download
85**** use "HTTP_PROXY"/"http_proxy" env. var
86**** handle redirects in http-fetch
87*** automatically update db after extension installation?
88*** test sudo
90** library units
91*** read-mark list should be stored in read-table
92*** ports should have indicator slot about exact type (tcp, file, ...)
93*** normalize-pathname: return short name on windows? (mingw/msvc)
95** syntax-error
96*** if ##sys#current-module is set, add name to error message?
97*** fluidly keep track of expanded forms (extend meaning of culprit) to pprint pruned expr on error
99** build
100*** rules.make should really be generated by a script
101*** need script to process import libraries for generating indices for
102    then tell Toby Butzon about it
103*** test DESTDIR and proper linking
104*** test special status of setup-api.import.scm and setup-download.import.scm
105    touching .c files caused chicken-install to be rebuilt; did using
106    .SECONDARY help?
108** documentation
109*** document qs, normalize-pathname
112* tests
114** optional longer run (env. var)
115*** syntax-rules-stress-test
116*** fully compiled ec-tests
117** 3-stage bootstrap with compiler-output comparison
120* documentation
122** document new .meta entries in tutorials on wiki
123   depends, test-depends
124** chicken.texi needs to be regenerated
127* optimizations
129** self-recursion optimization
130   what MacScheme called "benchmark-mode" (assume self-calls are recursion)
131*** needs declaration or option, >= -O2
133** when inlining, consing arg-list with "list" may make get-keyword possible foldable
135** compiler-support for get-keyword ?
137** lambda-fusion / "fuse-and-dispatch" (suggested by Alex Shinn)
138   convert groups of local lambdas referenced to only in operator-position into
139   looping lambda + dispatch (static variable can be used), otherwise similar to
140   a conditional
141*** new forms (after optimization, prepared language)
142    [##core#dispatch LAMBDABODY1 ... BODY]
143    [##core#goto {INDEX} ARGUMENT1 ...}
145** lazy gensyms (see "lazy-gensyms" branch)
147** handle optional args primitively
148   for example, set to distinguished val (checking argc) on C level, core
149   primitive for checking this - should be quite simple, but llist processing
150   (decompose-lambda-list) will be more expensive and cumbersome.
152** pre-hashed symbols (extra symbol slot)
153   The memory usage should be acceptable, performance gain is hard to guess.
154   Some experiments indicate that hashing the string is cheaper than it appears,
155   but low-level hashtables should get the most of this (and thus speed up
156   the compiler)
158** Lisp2-hack by Dybvig
159*** add function-cell to symbol, call on direct call without checks
160*** initialized to trap function on set!/define, which does fixup
161*** would also allow inline-caching hacks
Note: See TracBrowser for help on using the repository browser.