source: project/chicken/trunk/TODO @ 12227

Last change on this file since 12227 was 12227, checked in by felix winkelmann, 12 years ago
  • added helpful script for testing in build dir
  • chicken-install checks for TCP timeouts and handles multiple default sources to download from
  • alias-global-hook is saved and restored when loading compiler extensions
  • making bootstrap automaticaly makes confclean
File size: 4.1 KB
Line 
1TODO for trunk                                                          -*- Outline -*-
2
3
4* sort this document by order of importance
5  bugs, tasks, tests, documentation, optimizations
6
7* bugs
8** fprint benchmark crashes (base, out of heap) on 64-bit x86
9   (even with debug info)
10** compiler
11*** pre-optimization
12**** changes call-sites and makes them invalid for later pre-optimization
13** expander
14*** expansion of r5rs_pitfall 4.2 incorrect
15    possibly due to a non-aliased implicit "begin" somewhere
16*** dirty-macros.scm loops when using `defile'
17    possibly due to unrenamed special forms
18** modules
19*** chicken.import.scm refers to ##sys#chicken-macro-environment
20    ... which is only set, if chicken-more-macros.scm is loaded, which
21    is of course not the case inside a compiled executable (current
22    workaround is to set them to nil by default)
23*** same for ##sys#chicken-ffi-macro-environment
24*** re-exports of syntax doesn't work
25    generating import library requires source
26    (compiled-module-registration), but original module is lost after
27    importing. Can we simply pull expander closure out of module from which
28    we imported?
29*** `require-extension' fails in interpreter when extension is .so without import library
30    probably because load and import is in same toplevel form, and the
31    load is performed after the import (at runtime). A possibly fix
32    would be to load the extension immediately (at
33    compile-/expansion-time), when import is #t and o import lib
34    exists.
35
36* branches
37** merge cmi branch and announce changes
38
39* expander
40** at some stage disable debug-output in expand.scm
41
42* compiler
43** remove "custom-declare" + stuff?
44
45* optimizations
46** allocation-estimation in conditionals should take max of both branches, not sum
47** self-recursion optimization
48   what MacScheme called "benchmark-mode" (assume self-calls are recursion)
49*** needs declaration or option, >= -O2
50** when inlining, consing arg-list with "list" may make get-keyword possible foldable
51** local flow analysis
52** lambda-fusion / "fuse-and-dispatch" (suggested by Alex)
53   convert groups of local lambdas referenced to only in operator-position into
54   looping lambda + dispatch (static variable can be used), otherwise similar to
55   a conditional
56*** new forms (after optimization, prepared language)
57    [##core#dispatch LAMBDABODY1 ... BODY]
58    [##core#call/dispatch {INDEX} ARGUMENT1 ...}
59** handle optional ags primitively
60   for example, set to distinguished val (checking argc) on C level, core
61   primitive for checking this - should be quite simple, but llist processing
62   (decompose-lambda-list) will be more expensive and cumbersome.
63
64* tests
65** optional longer run (env. var)
66*** syntax-rules-stress-test
67*** fully compiled ec-tests
68
69* module issues
70** code-duplication in compiler and evaluator for ##core#module
71** "scheme" module does not include some special forms ("define-syntax", etc.)
72** import-for-syntax imports value bindings into import-env
73   should actually be a distinct meta-import-env.
74   (does it work at all?)
75** curried define performs expansion in empty se - problem?
76   (as comment in expand.scm indicated (##sys#register-export))
77** checks to be implemented
78*** reimport of imported id
79*** unused defs?
80
81* setup/install
82** setup-download
83*** use HTTP_PROXY env. var
84*** handle redirects in http-fetch
85*** connect timeout and alternative download location
86** chicken-install
87*** should cache extension-info
88    necessary?
89** funky: allow CHICKEN_REPOSITORY to be a list and try in order
90*** special name to refer to default repo
91
92* library
93** read-mark list should be stored in read-table
94
95* documentation
96** document ("HI/LO") expander (-> wiki, internals)
97   will we ever have the time for that?
98** document new .meta entries
99   depends, test-depends
100
101* build
102** chicken.texi needs to be regenerated
103** rules.make should really be generated by a script
104
105* syntax-error
106** if ##sys#current-module is set, add name to error message?
107** fluidly keep track of expanded forms (extend meaning of culprit)
108   to pprint pruned expr on error
109
110* infrastructure
111** need script to process import libraries for generating indices for doc.callcc.org
112   then tell Toby about it
Note: See TracBrowser for help on using the repository browser.