source: project/chicken/branches/prerelease/TODO @ 13240

Last change on this file since 13240 was 13240, checked in by felix winkelmann, 11 years ago

merged trunk svn rev. 13239 into prerelease

File size: 5.6 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** henrietta
41*** installed version on kitten-tech seems not to work?
44* tasks
46** branches
47*** try to improve performance in lazy-gensyms
49** expander
50*** test new implementation of `define-for-syntax'
51**** test "numbers" egg
52**** is s48-modules still working?
53**** port xlib egg
54*** at some stage remove debug-output in expand.scm
56** module issues
57*** need a way to omit generating module registration without generating import lib
58    for example when compiling static version, where implib already exists
59*** code-duplication in compiler and evaluator for ##core#module
60*** "scheme" module does not include some special forms ("define-syntax", etc.)
61*** import-for-syntax imports value bindings into import-env
62    should actually be a distinct meta-import-env.
63    (does it work at all?)
64    example: we need `(import-for-syntax chicken)' to have access to
65    `receive' in a procedural syntax definition.
66**** could be tested with xlib egg
67*** curried define performs expansion in empty se - problem?
68    (as comment in expand.scm indicated (##sys#register-export))
69*** check phase separation and module access
70**** see "expander" above
71**** interaction for define-for-syntax, begin-for-syntax, and macros
72***** check for different execution modes (compile-time, run-time, csi, ...)
73***** figure out visibility
75** compiler
76*** test define-rewrite-rule
77*** (csc) generate object-files in /tmp (or TMPDIR)?
79** setup/install
80*** setup-download
81**** use "HTTP_PROXY"/"http_proxy" env. var
82**** handle redirects in http-fetch
83*** automatically update db after extension installation?
84*** test sudo
86** library units
87*** read-mark list should be stored in read-table
88*** ports should have indicator slot about exact type (tcp, file, ...)
89*** normalize-pathname: return short name on windows? (mingw/msvc)
91** syntax-error
92*** if ##sys#current-module is set, add name to error message?
93*** fluidly keep track of expanded forms (extend meaning of culprit) to pprint pruned expr on error
95** build
96*** need script to process import libraries for generating indices for
97    then tell Toby Butzon about it
98*** test DESTDIR and proper linking
99*** test special status of setup-api.import.scm and setup-download.import.scm
100    touching .c files caused chicken-install to be rebuilt; did using
101    .SECONDARY help?
102*** using "touch" with WINDOWS_SHELL won't work (need alternative)
104** documentation
105*** document qs, normalize-pathname
108* tests
110** optional longer run (env. var)
111*** syntax-rules-stress-test
112*** fully compiled ec-tests
113** 3-stage bootstrap with compiler-output comparison
116* documentation
118** document new .meta entries in tutorials on wiki
119   depends, test-depends
120** chicken.texi needs to be regenerated
123* optimizations
125** self-recursion optimization
126   what MacScheme called "benchmark-mode" (assume self-calls are recursion)
127*** needs declaration or option, >= -O2
129** when inlining, consing arg-list with "list" may make get-keyword possible foldable
131** compiler-support for get-keyword ?
133** lambda-fusion / "fuse-and-dispatch" (suggested by Alex Shinn)
134   convert groups of local lambdas referenced to only in operator-position into
135   looping lambda + dispatch (static variable can be used), otherwise similar to
136   a conditional
137*** new forms (after optimization, prepared language)
138    [##core#dispatch LAMBDABODY1 ... BODY]
139    [##core#goto {INDEX} ARGUMENT1 ...}
141** lazy gensyms (see "lazy-gensyms" branch)
143** handle optional args primitively
144   for example, set to distinguished val (checking argc) on C level, core
145   primitive for checking this - should be quite simple, but llist processing
146   (decompose-lambda-list) will be more expensive and cumbersome.
148** pre-hashed symbols (extra symbol slot)
149   The memory usage should be acceptable, performance gain is hard to guess.
150   Some experiments indicate that hashing the string is cheaper than it appears,
151   but low-level hashtables should get the most of this (and thus speed up
152   the compiler)
154** Lisp2-hack by Dybvig
155*** add function-cell to symbol, call on direct call without checks
156*** initialized to trap function on set!/define, which does fixup
157*** would also allow inline-caching hacks
Note: See TracBrowser for help on using the repository browser.