source: project/chicken/trunk/TODO @ 13351

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

aliases remembers original name (otherwise stripping will not recover orig. name)

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