On Mon, Aug 27, 2001 at 03:49:46AM +0100, Daniel Barlow wrote:
> It's August, so time for the start of the annual "SBCL port to another
> architecture" exercise. This time I want to get some exercise from
> the imac in the corner, so I'm looking at an SBCL port to GNU/Linux on
> the IBM/Motorola/Apple/Whoever PPC, based on Gary Byers 1997 CMUCL
> port to that architecture.
> Timescale: I think it unlikely that it will be worth merging before 0.7
I dunno exactly how long 0.7.0 will take, but the interesting part --
elimination of the IR1 interpreter -- seems to be done now. Last night
I checked in an IR1-interpreter-free version which should be the end
of the flaky4_branch: it builds itself, builds under CMU CL, and seems
to work essentially as well as the old IR1 interpreted version. (I've
tripped across some bugs in the byte compiler/interpreter, and I
haven't fixed all of them; but the switch to the new EVAL gives a
fundamentally ANSI-compliant EVAL-WHEN, which is IMHO enough of a win
to make up for raising the profile of old byte compiler bugs.)
My remaining todo list looks something like
Make the incompatible changes listed in NEWS.
?? changed fasl file extension to .fasl
?? changed debugger prompt to "5]", "5", "5", etc.
?? changed default output representation of printed
unprintable ASCII characters to #\Nul, #\Soh, etc.
?? changed INTERNAL-TIME-UNITS-PER-SECOND to 1000
Do some FIXMEs with high disruptive potential (or at least try,
then punt if they're hard:-) (or at least think about
?? Search lists go away.
?? the big SB!CL repackaging in the FIXME note in
?? Get rid of :SB-CONSTRAIN-FLOAT-TYPE,
:SB-PROPAGATE-FLOAT-TYPE, and :SB-PROPAGATE-FUN-TYPE
features; the code they control becomes
unconditional. (Then the cross float KLUDGE needs
to be redone.)
Systematize names in the Lisp code:
?? Consistently use standard global abbreviations for
FUN, VAR, LEXENV, ARG, INIT, INST(instruction),
SEQ, OK (not OKAY), and possibly others. (Maybe
either DEF or DEFINE, as in the ANSI spec:
DEFFOO when all as one word, DEFINE-FOO-BAR
otherwise. Note that that affects some public
extension names in the FFI, and we can deal with
that by adding new names and deprecating the
old ones.) (In C code, and perhaps in Lisp
code too: PTR for POINTER.)
?? Unabbreviate PRED into PREDICATE, to avoid ambiguity
with the competing abbreviations PRED/SUCC.
Possibly unabbreviate some other stuff too.
?? Things named COMPLEX for non-SIMPLE vectors/arrays
become HAIRY instead. COMPLEX is reserved for
numbers with potentially nonzero imaginary parts.
?? Reserve DO-FOO names for things which have to do with
iteration (e.g. DOTIMES, DOVECTOR, DO-NODES
DO-DEBUG-FUNCTION-BLOCKS). The other stuff which
used to be named DO-FOO gets various other names,
sometimes just dropping the DO- prefix, e.g.
DO-ARG-COUNT-ERROR becomes ARG-COUNT-ERROR,
sometimes using FROB-FOO instead, sometimes
making less systematic changes.
?? (I've flirted with the idea of -P suffixes to more
predicate names, but I won't do it here.
I don't know any automated way
of hunting down predicates to find the ones
to rename, and I'm not motivated to just
manually review all 3000 pages of source.)
?? Rename %PRIMITIVE to %VOP, and do the related renamings
discussed in the KLUDGE/FIXME notes at the
definition of DEF-IR1-TRANSLATOR %PRIMITIVE.
Systematize names in the C code:
?? redid many cpp macros as inline functions: LowtagOf,
TypeOf (now tagof()), HeaderValue, Pointerp, CEILING,
ALIGNED_SIZE, GET_FREE_POINTER, SET_FREE_POINTER,
GET_GC_TRIGGER, SET_GC_TRIGGER, GetBSP, SetBSP,
?? removed various avoid-evaluating-C-macro-arg-twice cruft.
?? renamed preprocessor definitions to uppercase:
type_Mask, lowtag_Bits, lowtag_Mask, type_Bits
?? Systematize indentation in the C code: 4 spaces.
I think this should be almost completely routine. The only place where
I think gotchas could be possible are tweaking
INTERNAL-TIME-UNITS-PER-SECOND and removing search lists.
William Harold Newman <william.newman@...>
"Our users will know fear and cower before our software! Ship it! Ship
it and let them flee like the dogs they are!" -- Klingon programmer
PGP key fingerprint 85 CE 1C BA 79 8D 51 8C B9 25 FB EE E0 C3 E5 7C