On Sat, Nov 17, 2001 at 07:55:21PM +1100, Brian Spilsbury wrote:
> If Lovecraft had known cmucl, he would have never bothered with Cthulhu.
Hmm. That's a connection I'd never made before. I've always liked the
EncyCMUCLopedia-or-whatever-it-is-exactly pun, but I never went
hunting for others.
I really, really dislike the "build the system by incrementally
mutating an old version" thing that CMU CL does. When I discovered
that junk can remain in the binaries from things which haven't been in
the source code for ages, it blew my mind. Hence, in part, the quote
from Queinnec in make.sh.:-| As ESR famously says, Lisp "is worth
learning for the profound enlightenment experience you have when you
finally get it" but there are some profound revelations --
endarkenments? -- which I'd just as soon avoid, since they cost too
much sanity, not necessarily at revelation time but definitely at
maintenance time, to be worth it.:-( So if I'd thought of it, I could
have mined Lovecraft for quotes about rebuilding software systems.
There might be something about loathesome rituals which fits...:-)
On a tangentially related (through "the universe is deeply broken
sometimes") theme, right now I'm pretty thoroughly burned out on
system programming in general, and in particular on debugging SBCL
stuff that's messed up by my carelessness, by my confusion, or by my
pushing fragile CMU CL code into regimes where it -- especially in
debugging retrospect :-| -- was clearly never intended to go.
Grump grump grump.
My mood was not helped any by discovering a while ago that what I
believed about structure accessors, closures, and static linking seems
no longer to be true in current SBCL. In the original bootstrapping
conversion of CMU CL I tried to avoid static linking of structure
accessors (by making sure that all structures used in cold init were
defined before they were used, so that all slot accesses could be
inlined, so that out-of-line accessors weren't needed at cold init)
but I failed messily, concluding that it was intractable. Remembering
that, I figured that static-ish early linkage of the out-of-line slot
accessors was (still, today) a near-absolute requirement, and that set
me off on my ill-starred quest to make the compiler emit functions
directly without FUNCTIONAL-KIND=:TOPLEVEL cruft. (The motivation was
that that was functionality that I wanted to use to set up
DEFSTRUCT-related closures at cold init.)
So eventually I made it basically work, but it has ended up being a
huge chore already, and it still needs cleaning up in order to make
0.7.0 roughly as usable as 0.6.13. (And of course the current flaky
branch needs at least one more bug fix in order to work at all...) And
then I discovered accidentally that in current SBCL it's dead easy to
make all needed-at-cold-init structure slot accesses compile inline.
Argh. It might be good in the long term, since I've made the compiler
cleaner in some ways, but since it also caused lots of the
aforementioned coding mistakes and pushing-too-far problems, it's not
really a winner in the short run. And it's many, many hours of work
that I'd much rather have spent on other things, including any of
several outstanding issues in SBCL which would probably have had much
lower cost-to-benefit ratios.
Whine whine whine...
I should still get 0.7.0 ready at some point. My apologies to the
people who have things pending "until after 0.7.0" which wasn't
supposed to mean "December I think" but now seems to.
William Harold Newman <william.newman@...>
"I must not have fun. Fun is the time-killer. Fun is for children,
customers, and the help. I will forget fun. I will take a pass on it.
And while it is going, I will turn a blind eye toward it. When fun is
gone there will be nothing. Only I will remain--I, and my will to win.
Damn, I'm good."
-- _National Lampoon's Doon_
PGP key fingerprint 85 CE 1C BA 79 8D 51 8C B9 25 FB EE E0 C3 E5 7C