(As far as I know, as of this announcement I've responded to all
pending patches -- by merging them or by explicitly bouncing them one
way or another. Unless Raymond Wiker's "-Xlinker -export-dynamic"
suggestion for OpenBSD from 2000-12-01 (!) counts as a patch, since I
seem to be the only OpenBSDer and since I don't currently need dynamic
loading of object files. Also, Arthur Lemmens' recent message isn't
exactly a patch, but I'll try to include fixes from it after the Alpha
integration turbulence settles down a little bit. If I've overlooked
anything else, please let me know.)
I had five patches pending from Martin Atzmueller:
1. "make-load-form for logical host problem/patch"
2. "sysinit/userinit-toplevel suggestion/patch"
3. "stream patch"
4. "fix for ceiling derive type optimizer"
5. "some values-declaration fixes"
#1 and #2 were user-interface improvements, and I merged them. #5 was
declaration fixes to anticipate making the compiler more pedantic
about (THE XYZZY (FOO)) declarations when (FOO) returns multiple
values. This is a little bit ugly but seems to be the most
pedantically correct way to deal with an issue that ANSI didn't think
through very carefully, i.e. how a single-value type is promoted to a
VALUES type. I merged it too. #3 and #4 were nontrivial fixes to
nontrivial code which mostly worked already, and I didn't want to
merge them without regression tests. (I realize that they were ports
of CMU CL patches, and I realize that CMU CL coders are so studly that
they don't need regression tests, but for this kind of change I really
want regression tests anyway.) I wrote a regression test for #3 and
merged it. After that, I was insufficiently motivated to write a
regression test for #4 right now, so I filed it as a (very
detailed:-) bug report until a regression test gets written one way or
Martin's patches became versions 0.6.12.1 and 0.6.12.2 in CVS.
Now the only remaining patch was Daniel Barlow's Opus Alpha. (If I'm
overlooking someone's patch, speak up!) I made a first pass at merging
it, making a few changes as seemed appropriate but mostly just trying
to get it into place so that I could run X86 tests on it, in order to
check that I didn't mess anything up too badly. That became 0.6.12.3.
Probably Alpha patch issues will also dominate 0.6.12.4 and even
0.6.12.5 or later as I look at it more carefully.
I put my notes on my 0.6.12.3 changes into the CVS checkin message:
NOTE: This is a slightly screwed-up checkin, which won't
quite build as is, because the checked-in changes from
the Alpha port expect various src/code/*types.lisp
files (e.g. src/code/x86-linux-types.lisp) which
Daniel Barlow created by hand once and for all. Those
are in my working directory but I didn't check them in
because almost immediately, probably 0.6.12.4, I
expect to rearrange things so that the build
process generates a types file on every run of
make.sh. So since CVS add/delete is a little mixed up,
I thought I'd just skip it, even though it means that
this version isn't quite buildable unless you grab
those files from DB's patch.
merged Daniel Barlow's port to the Alpha CPU sbcl-devel
moved CIRCULAR-LIST-P to early-extensions.lisp (since it
logically belongs there, and DB's new definition,
unlike the old one, doesn't have a physical dependence
on IGNORE-ERRORS which prevents it from being there)
merged boot-extensions.lisp, early-extensions.lisp, and
late-extensions.lisp, since there's no longer any
distinction between the files
deleted CVS files from sbcl-alpha-extra-files.tar, since
they were probably an oversight, I think
The patch change
- (/hexstr arguments)
+ #!+sb-show (/hexstr arguments)
shouldn't be necessary because /SHOW, like all the
/FOO macros, is already conditional on SB-SHOW. So I
undid this change (and added some comments in
src/code/show.lisp explaining the intended behavior
of /FOO macros).
merged stat_wrapper.c into the relatively new, related
wrap.c file; deleted stat_wrapper.h since stat wrappers
seem never intended to be used by C code anyway
renamed build-tools/ to tools-for-build/ in the interest of
unambiguous (even painfully unambiguous)
tweaked tests/alien.impure.lisp so that the test uses a
non-GENCGC-dependent variable (instead of having to
have the test conditional on #+GENCGC).
My questions and observations and speculations and whatnot about the
Alpha patch form the rest of this message:
As far as I can see, it would make sense to make the existence or
nonexistence of the SYMBOL-HASH slot be consistent between
architectures. I tend to lean toward having a SYMBOL-HASH slot on
every architecture, especially since SBCL's hash functions are fairly
compute-intensive. But I haven't done any benchmarks or anything,
and it's possible that it would be better to have no SYMBOL-HASH
slot on any architecture. Opinions?
The cold-error.lisp code
(set-floating-point-modes :traps '(:overflow #-x86 :underflow :invalid
corresponds to CMU CL lispinit.lisp code which is not conditional
on processor architecture. Is it really not needed for Alpha/SBCL?
Was it actually unneeded for Alpha/CMUCL too?
In src/runtime/backtrace.c, does cs_valid_pointer_p(..) work for
In coreparse.c, why is it a good idea only to issue a warning when the
space addresses are mismatched (instead of handling it as a fatal
Re. the kludginess note in debug_print() in interr.c, is it possible
to fix the DEFINE-VOP for PRINT instead (so that it does the right
thing with the stacks before the call)?
I like the idea of grovel-headers.c. I'll try to make it run as part
of the make.sh process real soon now, maybe in 0.6.12.4, especially
since as noted in the checkin message, the CVS image won't build until
I do. It will be nice to have any differences between O/S versions and
whatnot be taken care of automatically without having to think about
when it needs to be run by hand. ("Good programming eliminates
thought," to mutate a phrase from Professor Eric Siggia, who was in
turn mutating (I think) Lord Whitehead's observation about
The GC size tweak -- I assume that's what it was, since I didn't
notice any other change which would've been responsible -- reduced
make.sh runtime on my 450 MHz 256Mb K6/3 Linux machine by 25%. I guess
I should've experimented more with GC settings! 15 minutes per build
would've added up to quite a lot over all the times I've rebuilt the
I'll find someplace in the distribution to put the porting notes you
just mailed. For now I'll just stick them in doc/, alongside my
FOR-CMUCL-DEVELOPERS notes. Sometime around 0.7.x I plan to split some
or all of the developer-oriented documentation (at least the old CMU
CL stuff) out of the main distribution package files and at that point
I'll probably also rethink how other documentation should be
William Harold Newman <william.newman@...>
"Here ends the second part of the title work of Brother Thomas Aquinas of
the Dominican Order; very long, very verbose, and very tedious for the
scribe; thank God, thank God, and again thank God." -- a medieval scribe
quoted in Marc Drogin, _Medieval Calligraphy_, p. 12
PGP key fingerprint 85 CE 1C BA 79 8D 51 8C B9 25 FB EE E0 C3 E5 7C