source: project/chicken/trunk/TODO @ 12562

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

macro defs in import libs are syntax-stripped

File size: 4.1 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
10** expander
11*** expansion of r5rs_pitfall 4.2 incorrect
12    possibly due to a non-aliased implicit "begin" somewhere
13*** dirty-macros.scm loops when using `defile'
14    possibly due to unrenamed special forms
15
16** modules
17*** `require-extension' fails in interpreter when extension is .so without import library
18    probably because load and import is in same toplevel form, and the
19    load is performed after the import (at runtime). A possibly fix
20    would be to load the extension immediately (at
21    compile-/expansion-time), when import is #t and o import lib
22    exists.
23
24
25* tasks
26
27** branches
28*** test irregular branch, merge if performance is acceptable
29
30** expander
31*** at some stage disable debug-output in expand.scm
32
33** module issues
34*** need a way to omit generating module registration without generating import lib
35    for example when compiling static version, where implib already exists
36*** code-duplication in compiler and evaluator for ##core#module
37*** "scheme" module does not include some special forms ("define-syntax", etc.)
38*** import-for-syntax imports value bindings into import-env
39    should actually be a distinct meta-import-env.
40    (does it work at all?)
41*** curried define performs expansion in empty se - problem?
42    (as comment in expand.scm indicated (##sys#register-export))
43*** check phase separation and module access
44**** interaction for define-for-syntax, begin-for-syntax, and macros
45     also check for different execution modes (compile-time, run-time, csi, ...)
46*** checks to be implemented
47**** reimport of imported id
48**** unused defs?
49
50** compiler
51*** remove "custom-declare" + stuff?
52*** generate object-files in /tmp (or TMPDIR)?
53
54** csc
55*** automatically compile import-libraries?
56
57** setup/install
58*** setup-download
59**** use HTTP_PROXY env. var
60**** handle redirects in http-fetch
61
62** library units
63*** read-mark list should be stored in read-table
64*** ports should have indicator slot about exact type (tcp, file, ...)
65
66** syntax-error
67*** if ##sys#current-module is set, add name to error message?
68*** fluidly keep track of expanded forms (extend meaning of culprit) to pprint pruned expr on error
69
70** build
71*** rules.make should really be generated by a script
72*** need script to process import libraries for generating indices for doc.callcc.org
73    then tell Toby about it
74
75
76* tests
77
78** optional longer run (env. var)
79*** syntax-rules-stress-test
80*** fully compiled ec-tests
81
82
83* documentation
84
85** document ("HI/LO") expander (-> wiki, internals)
86   will we ever have the time for that?
87** document new .meta entries in tutorials on wiki
88   depends, test-depends
89** chicken.texi needs to be regenerated
90
91
92* optimizations
93
94** self-recursion optimization
95   what MacScheme called "benchmark-mode" (assume self-calls are recursion)
96*** needs declaration or option, >= -O2
97
98** when inlining, consing arg-list with "list" may make get-keyword possible foldable
99
100** local flow analysis
101
102** lambda-fusion / "fuse-and-dispatch" (suggested by Alex)
103   convert groups of local lambdas referenced to only in operator-position into
104   looping lambda + dispatch (static variable can be used), otherwise similar to
105   a conditional
106*** new forms (after optimization, prepared language)
107    [##core#dispatch LAMBDABODY1 ... BODY]
108    [##core#call/dispatch {INDEX} ARGUMENT1 ...}
109
110** handle optional args primitively
111   for example, set to distinguished val (checking argc) on C level, core
112   primitive for checking this - should be quite simple, but llist processing
113   (decompose-lambda-list) will be more expensive and cumbersome.
114
115** pre-hashed symbols (extra symbol slot)
116   The memory usage should be acceptable, performance gain is hard to guess.
117   Some experiments indicate that hashing the string is cheaper than it appears,
118   but low-level hashtables should get the most of this (and thus speed up
119   the compiler)
120
121** Lisp2-hack by Dybvig
122*** add function-cell to symbol, call on direct call without checks
123*** initialized to trap function on set!/define, which does fixup
124*** would also allow inline-caching hacks
Note: See TracBrowser for help on using the repository browser.