source: project/chicken/trunk/TODO @ 12596

Last change on this file since 12596 was 12596, checked in by felix winkelmann, 13 years ago

fixed import form check (handles aliasing); bumped version to 4.0.0x3

File size: 4.3 KB
1TODO for trunk                                                          -*- Outline -*-
4* bugs
6** compiler
7*** pre-optimization
8**** changes call-sites and makes them invalid for later pre-optimization
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
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.
25* tasks
27** NEWS
28*** document changes between now and last time, this was updated
29    (4.0.0x2 doesn't appear, for example)
31** branches
32*** test irregular branch, merge if performance is acceptable
34** expander
35*** at some stage disable debug-output in expand.scm
37** module issues
38*** need a way to omit generating module registration without generating import lib
39    for example when compiling static version, where implib already exists
40*** code-duplication in compiler and evaluator for ##core#module
41*** "scheme" module does not include some special forms ("define-syntax", etc.)
42*** import-for-syntax imports value bindings into import-env
43    should actually be a distinct meta-import-env.
44    (does it work at all?)
45*** curried define performs expansion in empty se - problem?
46    (as comment in expand.scm indicated (##sys#register-export))
47*** check phase separation and module access
48**** interaction for define-for-syntax, begin-for-syntax, and macros
49     also check for different execution modes (compile-time, run-time, csi, ...)
50*** checks to be implemented
51**** reimport of imported id
52**** unused defs?
54** compiler
55*** use ##core#db information
56    either automatically add use/require code (tricky) or at least warn and suggest
57    use
58*** generate object-files in /tmp (or TMPDIR)?
60** setup/install
61*** setup-download
62**** use HTTP_PROXY env. var
63**** handle redirects in http-fetch
64*** automatically update db after extension installation?
66** library units
67*** read-mark list should be stored in read-table
68*** ports should have indicator slot about exact type (tcp, file, ...)
70** syntax-error
71*** if ##sys#current-module is set, add name to error message?
72*** fluidly keep track of expanded forms (extend meaning of culprit) to pprint pruned expr on error
74** build
75*** rules.make should really be generated by a script
76*** need script to process import libraries for generating indices for
77    then tell Toby about it
80* tests
82** optional longer run (env. var)
83*** syntax-rules-stress-test
84*** fully compiled ec-tests
87* documentation
89** document ("HI/LO") expander (-> wiki, internals)
90   will we ever have the time for that?
91** document new .meta entries in tutorials on wiki
92   depends, test-depends
93** chicken.texi needs to be regenerated
96* optimizations
98** self-recursion optimization
99   what MacScheme called "benchmark-mode" (assume self-calls are recursion)
100*** needs declaration or option, >= -O2
102** when inlining, consing arg-list with "list" may make get-keyword possible foldable
104** local flow analysis
106** lambda-fusion / "fuse-and-dispatch" (suggested by Alex)
107   convert groups of local lambdas referenced to only in operator-position into
108   looping lambda + dispatch (static variable can be used), otherwise similar to
109   a conditional
110*** new forms (after optimization, prepared language)
111    [##core#dispatch LAMBDABODY1 ... BODY]
112    [##core#call/dispatch {INDEX} ARGUMENT1 ...}
114** handle optional args primitively
115   for example, set to distinguished val (checking argc) on C level, core
116   primitive for checking this - should be quite simple, but llist processing
117   (decompose-lambda-list) will be more expensive and cumbersome.
119** pre-hashed symbols (extra symbol slot)
120   The memory usage should be acceptable, performance gain is hard to guess.
121   Some experiments indicate that hashing the string is cheaper than it appears,
122   but low-level hashtables should get the most of this (and thus speed up
123   the compiler)
125** Lisp2-hack by Dybvig
126*** add function-cell to symbol, call on direct call without checks
127*** initialized to trap function on set!/define, which does fixup
128*** would also allow inline-caching hacks
Note: See TracBrowser for help on using the repository browser.