source: project/chicken/trunk/TODO @ 12952

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

removed redundant module check

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