Skip to content
This repository
Newer
Older
100644 185 lines (134 sloc) 6.294 kb
a48b0a0e »
2007-07-19 1.0.7.31: updated TODO file
1 SBCL TODO
2 =========
3
4 "There's nothing an agnostic can't do as long as he doesn't know
5 whether he believes in anything or not."
6 -- Monty Python.
7
8 "God grant me serenity to accept the code I cannot change, courage
9 to change the code I can, and wisdom to know the difference."
10 -- Erik Naggum
11
12 "Accumulation of half-understood design decisions eventually
13 chokes a program as a water weed chokes a canal. By refactoring
14 you can ensure that your full understanding of how the program
15 should be designed is always reflected in the program. As a water
16 weed quickly spreads its tendrils, partially understood design
17 decisions quickly spread their effects throughout your program. No
18 one or two or even ten individual actions will be enough to
19 eradicate the problem."
20 -- Martin Fowler, in _Refactoring: Improving the Design of Existing
21 Code_, p. 360
22
23 "I wish I didn't know now what I didn't know then."
24 -- Bob Seger
25
26 This files is maintained as part of the SBCL distribution, and
27 describes flying pies and moons on sticks that SBCL developers dream
28 about. The items are in no particular order.
29
30 The omission of an item is no guarantee that no-one would like it,
31 just like the inclusion of an item is no guarantee that someone is
32 actively working on it.
33
34 In addition to this file, there is the BUGS file, and there are also
35 hundreds of FIXME notes in the sources. (Things marked as KLUDGE are
36 in general things which are ugly or confusing, but that, for
37 whatever reason, may stay that way indefinitely.)
38
39 THREADING INTERFACE
40
41 SB-THREAD has some problems: recursivity of a mutex should probably
42 be a feature of the mutex, and not of the lexical location. Thread
43 local variables are needed. Sessions and sharing the terminal need
44 to be thought about.
45
46 PEEPHOLE OPTIMIZER
47
48 Have you ever read SBCL disassembly?
49
50 DEFGLOBAL
51
52 Global lexical variables. Esp. since with threads special variable
53 accesses is no speed daemon.
54
55 FINISHING EXTERNAL FORMATS
56
57 Byte order marks. Newline conventions. A way to specify an external
58 format without needing to duplicate code. Fixing the inefficiencies.
59
60 TIMEOUTS
61
62 Asyncronous unwinds suck horribly, but to implement reliable systems
63 one simply needs timeouts. These should probably be local, since
64 otherwise they effectively become asynchronous unwinds. Basically,
65 for any potentially blocking operation there should be a :TIMEOUT
66 arguent (or a version of the operation that accepts the argument).
67
68 ADVICE/FWRAP
69
70 SBCL has an internal function encapsulation mechanism, and is able to
71 install breakpoint to function start/end -- this is used to implement
72 the instrumentation based profiler and tracing. It would be good to
73 have this as an exported interface, and it would be good if the
74 SYMBOL-FUNCTION / FDEFINITION confusion was fixed: currently the
75 latter returns the underlying definition, whereas the first returns
76 the encapsulation.
77
78 GENERIC FUNCTION TRACING
79
80 This sucks currently. It would also be good to be able to trace
81 individual methods.
82
83 POLICY MADNESS
84
85 The interactions between various optimization policies are far from
86 obvious. Someone should figure out how to make this better, and fix
87 it. One option would be to have just a few (eg. DEBUG, SMALL,
88 FAST-SAFE, FAST-UNSAFE) "dominant" policies, and expose the rest
89 as separately declarable optimization toggles.
90
91 MAYBE-INLINE is also nice, but it would be good if someone could
92 figure out how to get rid of it while retaining the semantics it
93 provides. Inlining recursive functions is also something to think
94 about.
95
96 INHIBIT-WARNINGS really needs to go away.
97
98 WINDOWS
99
100 Needs love.
101
102 DARWIN
103
104 Needs love, particularly threads and exceptions/signals. slam.sh is
105 also broken there.
106
107 FUNCTION NAMES
108
109 We'd like to be able to (SETF %FUNCTION-NAME) on a closure.
110
111 UNDEFINED FUNCTION / VARIABLE RESTARTS
112
113 You know, like Allegro is reputed to have.
114
115 MISC CLEANUPS
116
117 These need to be taken a good look at -- it might be that some of them
118 are already done, or otherwise no longer relevant.)
119
120 * EVAL/EVAL-WHEN/%COMPILE/DEFUN/DEFSTRUCT cleanups:
121 ** make %COMPILE understand magicality of DEFUN FOO
4eb1a6d3 »
2001-10-31 0.pre7.74:
122 w.r.t. e.g. preexisting inlineness of FOO
a48b0a0e »
2007-07-19 1.0.7.31: updated TODO file
123 ** use %COMPILE where COMPILE-TOP-LEVEL used to be used
124 ** remove redundant COMPILE-TOP-LEVEL and
4eb1a6d3 »
2001-10-31 0.pre7.74:
125 FUNCTIONAL-KIND=:TOP-LEVEL stuff from the compiler
a48b0a0e »
2007-07-19 1.0.7.31: updated TODO file
126 * outstanding embarrassments
b1abaa98 »
2002-01-19 0.7.0:
127 ** :IGNORE-ERRORS-P cruft in stems-and-flags.lisp-expr. (It's
128 reasonable to support this as a crutch when initially
129 bootstrapping from balky xc hosts with their own
130 idiosyncratic ideas of what merits FAILURE-P, but it's
a48b0a0e »
2007-07-19 1.0.7.31: updated TODO file
131 embarrassing to have to use it when bootstrapping
b1abaa98 »
2002-01-19 0.7.0:
132 under SBCL!),
a48b0a0e »
2007-07-19 1.0.7.31: updated TODO file
133 * miscellaneous simple refactoring
4eb1a6d3 »
2001-10-31 0.pre7.74:
134 * belated renaming:
a48b0a0e »
2007-07-19 1.0.7.31: updated TODO file
135 ** rename %PRIMITIVE to %VOP
07ab1e48 »
2008-12-17 1.0.23.49: Eliminate FCN as function moniker.
136 ** A few hundred things named FN should be named FUN
4eb1a6d3 »
2001-10-31 0.pre7.74:
137 * These days ANSI C has inline functions, so..
a48b0a0e »
2007-07-19 1.0.7.31: updated TODO file
138 ** redo many cpp macros as inline functions:
4eb1a6d3 »
2001-10-31 0.pre7.74:
139 HeaderValue, Pointerp, CEILING, ALIGNED_SIZE,
140 GET_FREE_POINTER, SET_FREE_POINTER,
141 GET_GC_TRIGGER, SET_GC_TRIGGER, GetBSP, SetBSP,
142 os_trunc_foo(), os_round_up_foo()
a48b0a0e »
2007-07-19 1.0.7.31: updated TODO file
143 ** remove various avoid-evaluating-C-macro-arg-twice
4eb1a6d3 »
2001-10-31 0.pre7.74:
144 cruft
a48b0a0e »
2007-07-19 1.0.7.31: updated TODO file
145 * Some work on conditions emitted by the system
146 ** eliminate COMPILER-WARN and COMPILER-STYLE-WARN, which
bfa4310e »
2004-05-27 0.8.10.57:
147 were simply limited versions of WARN and STYLE-WARN.
a48b0a0e »
2007-07-19 1.0.7.31: updated TODO file
148 ** eliminate use of INHIBIT-WARNINGS by code emitted by the
bfa4310e »
2004-05-27 0.8.10.57:
149 system from user code.
a48b0a0e »
2007-07-19 1.0.7.31: updated TODO file
150 ** cause use of INHIBIT-WARNINGS to signal a STYLE-WARNING.
151 ** eliminate use of INHIBIT-WARNINGS within the system
152 ** deprecate INHIBIT-WARNINGS, causing its use to signal a
bfa4310e »
2004-05-27 0.8.10.57:
153 full WARNING.
a48b0a0e »
2007-07-19 1.0.7.31: updated TODO file
154 ** begin work on developing a class hierarchy of conditions
bfa4310e »
2004-05-27 0.8.10.57:
155 along semantic lines.
a48b0a0e »
2007-07-19 1.0.7.31: updated TODO file
156
157 PCL INTEGRATION
158
159 AKA CLOS in cold init.
160
161 HIGH LEVEL SOCKET INTERFACE
162
163 Something slightly above the level of BSD sockets would be nice.
164
165 RPC INTERFACE
166
167 For talking with other processes.
168
169 CROSS PLATFORM GUI
170
171 Since this is a high priority we're waiting for PHP coders to
172 offer their help to build a website about this.
173
174 BLOCK COMPILATION
175
176 You know, like CMUCL does.
177
178 (MOSTLY) PARALLEL GC
179
180 Several algorithms exist, even one would be nice.
181
182 INCREMENTAL GC
183
184 For those who need it.
Something went wrong with that request. Please try again.