Initial revision
[sbcl.git] / UGLINESS
1 There are a number of hacks that I've used to make the system work
2 that even I can see are ugly. Some which come to mind..
3
4 It's dependent on being compiled in a rigid sequence, all in a single
5 compilation pass, particularly in the cross-compilation phase.
6 There's very little support for compiling modules in parallel
7 or recompiling the system incrementally.
8
9 The way the cross-compiler uses UNCROSS is ugly.
10
11 The heavy use of %PYTHON:DEFMACRO to construct basic macros is
12 arguably ugly. But it's better than what I tried before that, and the
13 system is still slightly contaminated with fallout from what I tried..
14 When I was first trying to bootstrap the system, I went off on a wild
15 goose chase of trying to define everything (even fundamental macros
16 like DEFUN and DEFMACRO) in terms of ordinary functions and Lisp
17 special operators. I later realized that I could do without this, but
18 a number of the changes that I made to the code while on that chase
19 still live on, and the code is unnecessarily unclear because of them.
20
21 The contrapuntal intertwingling of the cross-compiler and 
22 target Lisp build sequences is, well, baroque.
23
24 Using host floating point numbers to represent target floating point
25 numbers, or host characters to represent target characters, is theoretically
26 shaky. (The characters are OK as long as the characters are
27 in the ANSI-guaranteed character set, though.)
28
29 Despite my attempts to make the compiler portable, it still makes assumptions
30 about the cross-compilation host Common Lisp:
31         Simple bit vectors are distinct from simple vectors (in
32                 DEFINE-STORAGE-BASE and elsewhere). (Actually, I'm not sure
33                 that things would really break if this weren't so, but I 
34                 strongly suspect that they would.)
35         SINGLE-FLOAT is distinct from DOUBLE-FLOAT.