source: project/chicken/trunk/TODO @ 13783

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

added initial attempt at script to generate egg-index page

File size: 6.0 KB
Line 
1TODO for chicken                                                        -*- 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 or not imported
26    at all
27**** a possible solution is to use internal forms, provided by the "scheme" module.
28
29** modules
30*** `require-extension' fails in interpreter when extension is .so without import library
31    probably because load and import is in same toplevel form, and the
32    load is performed after the import (at runtime). A possibly fix
33    would be to load the extension immediately (at
34    compile-/expansion-time), when import is #t and o import lib
35    exists.
36*** mark import-source (module) on plist of imported symbols and use in re-import warning
37    doesn't work that easily, try to find another solution
38*** DSSSL lambda-lists need imports of `chicken' module ("optional", "let-optionals", ...)
39**** should probably use internal aliases
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
45    reported by Jim Ursetto
46    reverted original patch, see patches/finalizer-closures.diff
47
48
49* tasks
50
51** branches
52*** try to improve performance in lazy-gensyms
53
54** expander
55*** test new implementation of `define-for-syntax'
56**** test "numbers" egg
57**** is s48-modules still working?
58*** at some stage remove debug-output in expand.scm
59
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    example: we need `(import-for-syntax chicken)' to have access to
68    `receive' in a procedural syntax definition.
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
74** compiler
75*** test define-rewrite-rule
76*** (csc) generate object-files in /tmp (or TMPDIR)?
77*** warning on unused local variable
78
79** setup/install
80*** setup-download
81**** use "HTTP_PROXY"/"http_proxy" env. var
82**** handle redirects in http-fetch
83**** option in chicken-install to list available eggs
84*** automatically update db after extension installation?
85*** test sudo
86
87** library units
88*** read-mark list should be stored in read-table
89*** ports should have indicator slot about exact type (tcp, file, ...)
90*** normalize-pathname: return short name on windows? (mingw/msvc)
91*** Use record-descriptors instead of symbols as 1st slot in structure objects?
92**** see Kon's proposal for new record-descriptors in "misc/Chicken Runtime Data Type Proposal"
93
94** syntax-error
95*** if ##sys#current-module is set, add name to error message?
96*** fluidly keep track of expanded forms (extend meaning of culprit) to pprint pruned expr on error
97
98** build
99*** need script to process import libraries for generating indices for doc.callcc.org
100    then tell Toby Butzon about it
101*** test DESTDIR and proper linking
102*** test special status of setup-api.import.scm and setup-download.import.scm
103    touching .c files caused chicken-install to be rebuilt; did using
104    .SECONDARY help?
105*** using "touch" with WINDOWS_SHELL won't work (need alternative)
106*** script for guessing PLATFORM
107
108** documentation
109*** document qs, normalize-pathname
110*** compatibility notes for `define-macro' in FAQ, manual
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** distribution-test script
120
121
122* documentation
123
124** document new .meta entries in tutorials on wiki
125   depends, test-depends
126** chicken.texi needs to be regenerated
127
128
129* optimizations
130
131** self-recursion optimization
132   what MacScheme called "benchmark-mode" (assume self-calls are recursion)
133*** needs declaration or option, >= -O2
134
135** when inlining, consing arg-list with "list" may make get-keyword possible foldable
136
137** compiler-support for get-keyword ?
138
139** lambda-fusion / "fuse-and-dispatch" (suggested by Alex Shinn)
140   convert groups of local lambdas referenced to only in operator-position into
141   looping lambda + dispatch (static variable can be used), otherwise similar to
142   a conditional
143
144** lazy gensyms (see "lazy-gensyms" branch)
145
146** handle optional args primitively
147   for example, set to distinguished val (checking argc) on C level, core
148   primitive for checking this - should be quite simple, but llist processing
149   (decompose-lambda-list) will be more expensive and cumbersome.
150
151** pre-hashed symbols (extra symbol slot)
152   The memory usage should be acceptable, performance gain is hard to guess.
153   Some experiments indicate that hashing the string is cheaper than it appears,
154   but low-level hashtables should get the most of this (and thus speed up
155   the compiler)
156
157** Lisp2-hack by Dybvig
158*** add function-cell to symbol, call on direct call without checks
159*** initialized to trap function on set!/define, which does fixup
160*** would also allow inline-caching hacks
Note: See TracBrowser for help on using the repository browser.