source: project/chicken/trunk/TODO @ 13339

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

reverted fix for separately marked finalizer procedures reported by Alejandro to re-enable finalization in the interpreter

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