source: project/chicken/trunk/TODO @ 12359

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

fixed ellipsis check (srfi-46 extension); chicken-install removes failed http locations from defaults list

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