source: project/chicken/trunk/TODO @ 13328

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

fixed broken fix for non-ascii character case conversion

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