source: project/chicken/trunk/TODO @ 12595

Last change on this file since 12595 was 12595, checked in by felix winkelmann, 11 years ago
  • removed custom declarations
  • added "-update-db" option to chicken-install
  • chicken: "-quiet" is useless and DEPRECATED
  • added support for db file in repository (not used yet)
  • compiler warns if first form in module body is not an `import' form
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*** generate object-files in /tmp (or TMPDIR)?
52
53** csc
54*** automatically compile import-libraries?
55
56** setup/install
57*** setup-download
58**** use HTTP_PROXY env. var
59**** handle redirects in http-fetch
60
61** library units
62*** read-mark list should be stored in read-table
63*** ports should have indicator slot about exact type (tcp, file, ...)
64
65** syntax-error
66*** if ##sys#current-module is set, add name to error message?
67*** fluidly keep track of expanded forms (extend meaning of culprit) to pprint pruned expr on error
68
69** build
70*** rules.make should really be generated by a script
71*** need script to process import libraries for generating indices for doc.callcc.org
72    then tell Toby about it
73
74
75* tests
76
77** optional longer run (env. var)
78*** syntax-rules-stress-test
79*** fully compiled ec-tests
80
81
82* documentation
83
84** document ("HI/LO") expander (-> wiki, internals)
85   will we ever have the time for that?
86** document new .meta entries in tutorials on wiki
87   depends, test-depends
88** chicken.texi needs to be regenerated
89
90
91* optimizations
92
93** self-recursion optimization
94   what MacScheme called "benchmark-mode" (assume self-calls are recursion)
95*** needs declaration or option, >= -O2
96
97** when inlining, consing arg-list with "list" may make get-keyword possible foldable
98
99** local flow analysis
100
101** lambda-fusion / "fuse-and-dispatch" (suggested by Alex)
102   convert groups of local lambdas referenced to only in operator-position into
103   looping lambda + dispatch (static variable can be used), otherwise similar to
104   a conditional
105*** new forms (after optimization, prepared language)
106    [##core#dispatch LAMBDABODY1 ... BODY]
107    [##core#call/dispatch {INDEX} ARGUMENT1 ...}
108
109** handle optional args primitively
110   for example, set to distinguished val (checking argc) on C level, core
111   primitive for checking this - should be quite simple, but llist processing
112   (decompose-lambda-list) will be more expensive and cumbersome.
113
114** pre-hashed symbols (extra symbol slot)
115   The memory usage should be acceptable, performance gain is hard to guess.
116   Some experiments indicate that hashing the string is cheaper than it appears,
117   but low-level hashtables should get the most of this (and thus speed up
118   the compiler)
119
120** Lisp2-hack by Dybvig
121*** add function-cell to symbol, call on direct call without checks
122*** initialized to trap function on set!/define, which does fixup
123*** would also allow inline-caching hacks
Note: See TracBrowser for help on using the repository browser.