source: project/chicken/branches/scrutiny/TODO @ 14827

Last change on this file since 14827 was 14827, checked in by felix winkelmann, 10 years ago

merged trunk changes until 14826 into scrutiny branch

File size: 6.5 KB
Line 
1TODO for chicken                                                        -*- Outline -*-
2================
3
4
5* bugs
6
7** compiler
8*** pre-optimization
9**** changes call-sites and makes them invalid for later pre-optimization
10*** check profiling (-profile vs. profile-declaration)
11**** this doesn't always seem to work, in particular with library units
12**** ##sys#finish-profile should always be invoked
13     is it in `exit'?
14*** when re-defining intrinsics, the compiler should warn and disable re-writes
15    add declaration to keep re-writes enabled for core library files
16*** check in foreign.import.scm and compiler.import.scm whether the import
17    took place in the compiler
18*** -prologue, -epilogue, -prelude, -postlude should check for argument being directory
19    (reported by Eduardo Cavazos)
20
21** expander
22*** expansion of r5rs_pitfall 4.2 incorrect
23    possibly due to a non-aliased implicit "begin" somewhere
24*** dirty-macros.scm loops when using `defile'
25    possibly due to unrenamed special forms
26*** extended lambda-lists refer to `optional' and `let-optionals[*]'
27    this will break, when these macros are renamed on import or not imported
28    at all
29**** a possible solution is to use internal forms, provided by the "scheme" module.
30*** need way to force generating module-registration code for standalone executables.
31
32** modules
33*** `require-extension' fails in interpreter when extension is .so without import library
34    probably because load and import is in same toplevel form, and the
35    load is performed after the import (at runtime). A possibly fix
36    would be to load the extension immediately (at
37    compile-/expansion-time), when import is #t and o import lib
38    exists.
39*** mark import-source (module) on plist of imported symbols and use in re-import warning
40    doesn't work that easily, try to find another solution
41*** DSSSL lambda-lists need imports of `chicken' module ("optional", "let-optionals", ...)
42**** should probably use internal aliases
43
44** libraries
45*** library/runtime: cyclic list checks for assq/assv/assoc/memq/memv/member
46    and C_i_list_tail
47*** finalizers on lexically ref'd data not working in interpreter
48    reported by Jim Ursetto
49    reverted original patch, see patches/finalizer-closures.diff
50
51** tools
52*** chicken-bug: SMTP servers not accessible
53
54** build
55*** somehow get SONAME to work
56*** integrate and build/install chicken-base.scm
57
58** tests
59*** should run without installation
60
61** setting nursery default size doesn't seem to work properly (reported by Zbigniew)
62
63
64* tasks
65
66** branches
67*** try to improve performance in lazy-gensyms
68*** scrutiny
69
70** expander
71*** at some stage remove debug-output in expand.scm
72
73** module issues
74*** need a way to omit generating module registration without generating import lib
75    for example when compiling static version, where implib already exists
76*** code-duplication in compiler and evaluator for ##core#module
77*** "scheme" module does not include some special forms ("define-syntax", etc.)
78*** import-for-syntax imports value bindings into import-env
79    should actually be a distinct meta-import-env.
80    example: we need `(import-for-syntax chicken)' to have access to
81    `receive' in a procedural syntax definition.
82*** curried define performs expansion in empty se - problem?
83    (as comment in expand.scm indicated (##sys#register-export))
84*** check phase separation and module access
85**** see "expander" above
86** complete chicken-base.scm
87*** syntax reexports
88*** integrate into build
89
90** compiler
91*** test define-rewrite-rule
92*** (csc) generate object-files in /tmp (or TMPDIR)?
93
94** setup/install
95*** setup-download
96**** use "HTTP_PROXY"/"http_proxy" env. var
97**** handle redirects in http-fetch
98**** option in chicken-install to list available eggs
99*** automatically update db after extension installation?
100
101** library units
102*** read-mark list should be stored in read-table
103*** ports should have indicator slot about exact type (tcp, file, ...)
104*** normalize-pathname: return short name on windows? (mingw/msvc)
105*** Use record-descriptors instead of symbols as 1st slot in structure objects?
106**** see Kon's proposal for new record-descriptors in "misc/Chicken Runtime Data Type Proposal"
107*** deprecate "getenv"
108
109** syntax-error
110*** if ##sys#current-module is set, add name to error message?
111*** fluidly keep track of expanded forms (extend meaning of culprit) to pprint pruned expr on error
112
113** build
114*** need script to process import libraries for generating indices for doc.callcc.org
115    then tell Toby Butzon about it
116*** test DESTDIR and proper linking
117*** test special status of setup-api.import.scm and setup-download.import.scm
118    touching .c files caused chicken-install to be rebuilt; did using
119    .SECONDARY help?
120*** using "touch" with WINDOWS_SHELL won't work (need alternative)
121*** extend scripts/guess-platforms.sh for more platforms
122
123** documentation
124*** document qs, normalize-pathname
125
126** scrutiny
127*** allow giving toplevel procedure names to `scrutinize' option?
128*** write test file to trigger every type of warning (diff with result file in test-suite)
129
130
131* wiki
132
133** compatibility page
134
135
136* extensions
137
138** check status of `s48-modules'
139
140
141* tests
142
143** optional longer run (env. var)
144*** syntax-rules-stress-test
145*** fully compiled ec-tests
146** 3-stage bootstrap with compiler-output comparison
147
148
149* optimizations
150
151** self-recursion optimization
152   what MacScheme called "benchmark-mode" (assume self-calls are recursion)
153*** needs declaration or option, >= -O2
154
155** when inlining, consing arg-list with "list" may make get-keyword possible foldable
156
157** compiler-support for get-keyword ?
158
159** lambda-fusion / "fuse-and-dispatch" (suggested by Alex Shinn)
160   convert groups of local lambdas referenced to only in operator-position into
161   looping lambda + dispatch (static variable can be used), otherwise similar to
162   a conditional
163
164** lazy gensyms (see "lazy-gensyms" branch)
165
166** handle optional args primitively
167   for example, set to distinguished val (checking argc) on C level, core
168   primitive for checking this - should be quite simple, but llist processing
169   (decompose-lambda-list) will be more expensive and cumbersome.
170
171** pre-hashed symbols (extra symbol slot)
172   The memory usage should be acceptable, performance gain is hard to guess.
173   Some experiments indicate that hashing the string is cheaper than it appears,
174   but low-level hashtables should get the most of this (and thus speed up
175   the compiler)
176
177** Lisp2-hack by Dybvig
178*** add function-cell to symbol, call on direct call without checks
179*** initialized to trap function on set!/define, which does fixup
180*** would also allow inline-caching hacks
Note: See TracBrowser for help on using the repository browser.