Happy New Year
Tue, 01 Jan 2002 16:49:54 +0000
Happy New Year
Happy New Year
New Year's Resolutions:
Current candidates for finishing: db-sockets, asdf, sbcl ppc, sbcl alpha
OK, let's review a little.
I recently got reacquainted with db-sockets, while looking for a file descriptor leak in on of my araneida-using sites. It's not actually as bad as I remember it. Upcoming new version will have
New release soon when I've removed the icky bits which assume foreign pointers can be represented in 32 bit. I'm pondering making it use asdf for defsystem instead of mk-, but I don't know yet.
Araneida got some updates too, though nothing you'd actually notice unless you have lots of traffic and particularly slow response handlers.
No news on SBCL recently; I've been dealing with too much administrivia lately to get really involved with it. I think the answer for closures might be to punt all the PPC-specific stuff and make them work exactly as the Alpha does.
There was a power cut here last night, two seconds after Inspector Morse pegged it.
"Thank Lewis for me"
click. fizz. dark. descending-pitch whirring noises from upstairs.
The house is so much quieter with no electricity. And, yes, darker.
After the usual routine checks (is nextdoor out as well, where is my torch, is it the circuit breakers, is it the meter, what exactly does the central heating boiler do in these circumstances) (yes, in the shed, no, no, pilot light remains lit but let's turn the central heating off for the duration just in case) I found the phone number for the electricity distribution company (thanks to the slightly odd way that the electricity system runs in the UK, that is not the same company as actually bills me for using the stuff) and called them. A substantial proportion of the neighborhood had apparently already done so; seems that the fuse on one of the phases had gone. Power came back an hour or so later, briefly, causing me to leap out of bed, run downstairs, turn the lights off and stop the cd player. Power came back again some time after that, causing me to leap out of bed, run downstairs (in the dark, this time) and turn the cd player off altogether.
Since yesterday I've had a headache, sore throat and general aches. I'm assuming it is a cold. So, at least I got an early night last night.
Having in mind my other and previously unstated New Year's Resolution, my introduction into Drug Culture happened on Saturday afternoon. It consisted of two Nurofen (ibuprofen) `tabs', as I believe the young people call them.
Like, wow, man. Away with huddling-for-warmth-against-the-radiator, I can move around again.
Sunday was OxLUG day: Martin Ling on Wireless Networking.
Today, cold has mostly subsided into cough, lungsful of liquid, and disinclination to drink vast amounts of beer. This is a mild handicap for OxLUG, but it's probably doing me good.
New ftx13, as you'd expect for the first Monday of the month.
New db-sockets released at last - find it in cClan. Works in SBCL on both Alpha and x86; haven't tried it anywhere else or on anything else.
Two hours later, found a fairly obvious bug in the passive open code. Updated release released after some struggle with shell.sf.net: edited highlights
dpkg-deb: subprocess tar killed by signal (Segmentation fault)
`md5sum < dists/local/lisp/binary-powerpc/lisa0.9.2-2all.deb' exited with 11
sh: xmalloc: cannot allocate 3 bytes (0 bytes allocated) `md5sum < dists/local/lisp/binary-powerpc/common-lisp-controller2.7.1all.deb' exited with 512
dpkg-deb: subprocess gzip -dc killed by signal (Segmentation fault)
sh: xmalloc: cannot allocate 3 bytes (0 bytes allocated) `md5sum < dists/local/lisp/binary-powerpc/cl-faq20011115-1all.deb' exited with 512
dpkg-deb: subprocess gzip -dc killed by signal (Segmentation fault)
This service is not worth much more than I paid for it...
This is more of a placeholder than a diary entry.
New new db-sockets released after Christophe pointed out that 0.5 < 0.44, so expect to get 0.52. Comes with free update to the documentation generator, which looks marginally prettier
Spent too long hunting necessary bits of paper to do tax return. It seems to all make sense now, though.
Not the best driving lesson in the world. If I could just concentrate for 40 minutes, I could pass the test. Need to work on that, I fear.
Back to SBCL/PPC
So, SBCL PPC. Decided that the easiest way to solve all the problems with closures and so on was to rewrite the function calling code to work just like the Alpha code does. So, done that, now finding out what breaks. (So far, everything, but that was an off-by-one error)
An SBCL rebuild is not the thing my computer is fastest at. Expect to see more diary entries in the near future while I wait for builds, I guess. In the meantime, Nathan Froyd sent me a patch for db-sockets that needs applying. Lispers are the best kind of users - they're just rare (some claim mythical)
Spring is here, tra la la.
Well, near enough. When I stepped outside at 2pm, the temperature was above zero, and it was not raining. So, first bike ride of the year.
I am so out of condition. Average 27km/h (down from 32 last summer) and now it feels like there is a big hole in my chest where my lungs used to be. So, it can only get better from here. It had better.
Some SBCL progress yesterday, but more staring at PPC assembler still needed. After a certain amount of it, I gave up, cooked dinner, and reread the fourth Harry Potter book. Ho hum.
And the days are getting longer again. It's still light at 16:30 now.
A whole day of rebuilding bits of SBCL PPC with not much clear idea of what's going wrong, except that it's probably something to do with the combination of MAP, anonymous lambdas, and APPLY. It all works fine until I want the closure to modify the state it's closed over, but that seems to affect the way in which the closure is compiled (which is fair enough), causing it to not work at all (which isn't).
Later: well, in some cases it works fine even when one tries to mutate the closed-over state.
More PPC, la la la.
Fixes 1 and 2 cured yesterday's problem; I'm hoping that fix 3 should fix the next bug to come along if I rebuild it cleanly, but I've already tried a simple make-host-2 with no success, so I'm not entirely expecting it will.
Also driving lesson, but but more about that tomorrow when I've taken the test.
Fix 3 did indeed, once rebuilt from clean. Function call is now working again, at least to the extent that we're back fighting the same bug as we had last month were before we started messing about with it
Oh, driving test? I get to have another go at it :-(
Stand back world, I am going to buy a proper guitar. Went to the guitar shop (caution: web site consists entirely of a flash object and isn't actually all that useful anyway) on Friday, played for half an hour with a suitable slab of wood. Red, round at one end, pointy at the other, bits of wire running from one end to the other. (More precisely: made by Tokai, looks like a 1950s Strat). That was fun. This week I go back and hand over actual money.
On Saturday I went to see the Oxford University Museum of Natural History and the Pitt Rivers Museum with Simon and Judith (who subsequently found this diary and has advised me that she will be annoyed if she can't find any references to her in it. Google being what it is, I don't usually like mentioning names of people with no net presence, but on re-reading this I find that I have already anyway, so there).
The Pitt Rivers Museum is definitely recommended if you're in Oxford. It retains the original layout that it had in Victorian times - exhibits are sorted by type or purpose rather than by region or period - the display cases are crowded, and a lot of the exhibits are really pretty random. All with neat little hand-written tags describing what they are, where they came from, who donated them, etc. Usually museums give me that sinking "too much information; I am not going to remember anything I've seen here" feeling, but the Pitt Rivers is great because there is just so much on display that nobody could be expected to remember anything. Liberating, yes
Dinner at Judith's: conversation, cheese, leek, ham, conversation, chicken, rice, veggies, wine, conversation, cheese, conversation, chocolate, coffee. I don't eat much (actually, I don't say much either when there are other people carrying the conversation) but I do enjoy a good dinner. Right.
Then back here to stare at SBCL again. After tracing through more type system innards than I really wanted to know about, I see that it all hinges on a call to (%instance-ref structure (dsd-index dsd)) which of course we all know has been broken for months. Having realised that, went to bed at 5am ish.
Spent most of today idly speculating about designing my own accounts software, as GnuCash has a slew of features I don't need and is missing a bunch of others (support for VAT; hooks into my invoicing system; a real database for the data so I can have more confidence that it'll still be there in six years). It looks like a Simple Matter Of Programming: a real sql database to keep the splits in, and some handy functions using usql for posting transactions. Stopped before I actually got as far as writing code, though, and applied Christophe's %instance-ref fix for the SPARC to see if the PPC can work the same way. Rebuilding now to see what effect it has.
It Moves! SBCL PPC now gets as far as the first prompt
Later today (i.e. when the shops open) I need to buy some more memory for my poor iMac, and a guitar. And get my mobile fixed - or at least take it in for repair and see how long it will take.
I'm still thinking about a new accounts system.
Everything is on hold. Replacement driving test not until March, phone won't be repaired for a couple of days, local computer shop refuse to sell me memory when I tell them it's for a Mac (so, mail-ordered it, so not here yet), guitar shop sold someone else the guitar I wanted to buy and due to the NAMM show probably won't be getting another for a couple of weeks. At least I succeeded in getting a haircut.
128Mb of 10ns SODIMM arrived this morning, and was fitted with assistance from the instructions at http://www.theimac.com/ram_vram_steps.shtml - completely painless. Suddenly my GC speed increased from 1Mb/second to something over 20.
Armed with that, was able to fix yesterday's problem. It was dying when doing a GC that had been stalled during a pseudo-atomic section. This turns out to be due to a disagreement between glibc and the kernel about the size of sigsett; given that the kernel puts its idea ofa sigsett onto my stack, it seems a trifle unsporting to arrange headers so that i only get access to the glibc version - especially when I then want to change this information and merrily trash the following (1024-64)/32 words as well because glibc thinks I have 1024 signals. Hate hate despise despise.
Next problem is GCs during assembly routines: if we use the `raw' return convention to call a routine that GC might occur during (which actually, horrible thought, is any of them, if they get interrupted and the signal handler conses), the GC does not adjust the link register (it's unboxed, which makes it difficult to decide what to update it to) so we end up returning to our old address instead of the new one. The only reliable fix for this, I think, is (1) don't use the `raw' return convention anywhere, or (2) figure out some way to adjust lr in GC. That's going to involve finding the caller's code vector and fiddling with offsets in much the same way we fiddle with our own code vector to calculate PC
No it doesn't
Assembly routines don't have their own code vectors, so we still have the callers code vector on entry to gc, so we can calculate the new lr perfectly easily as an offset from it just like we do for PC when PC is in fromspace. Easy
And it was. But now we blow up building PCL, trying to make a TN in an infeasibly high-numbered storage class. cvs-commit-and-bed-time
Infeasibly big TNs were actually a symptom of an endianness problem - although not in exactly the same area as I thought when I wrote that. But they would have been only sensibly big if they'd been the right way around.
On Saturday, Simon (who would get a link to his real homepage, only it appears to have turned into something else) turned up, so time for the impromptu tour of Oxford's Historic Buildings.
Well, some of them. We only had the afternoon available, so I picked an unrepresentative subset plus the Norrington Room at Blackwells. And it rained, which is not unusual for the area at this time of year.
A lot of the time since then has been spent hitting (and where possible, fixing) small bugs in SBCL PPC. Flaoting point traps and endianness; suddenly I know more about IEEE 754 than I (a) ever felt the need to, or (b) did after a month studying numerical analysis at university. Which is, actually, still not much. Kahan looks like an amazingly cool guy, though.
In between that I've been looking for file descriptor leaks in Araneida. I can't find any way to trigger them on demand, and I can't find out what causes them, and they're still happening. Bah. I thought common lisp was supposed to be good for robust systems?