Recent SBCL activity

Posted on 2006-01-11 in Lisp
» 6 comments

There's been a lot of SBCL-related activity since the last release. Some committed, some work-in-progress, and some outside core SBCL but still tightly coupled to it. For example:

  • The last of the GC changes I've been committing since 0.9.4 are finally in. These should be especially useful to people with a modern x86/x86-64 processor running Linux (the GC used a slightly different implementation strategy on BSDs; somewhat to my surprise the benchmarks show a modest speedup for the new version on FreeBSD).

  • James Bielman has done a couple of iterations on a patch that adds the option to dump a self-contained executable with save-lisp-and-die. Basically it works by just concatenating the SBCL runtime (the 200kB executable) and the produced core file. This is in contrast to the patches that Timmy Douglas made last August, which did some fancy manipulation to embed the core in an ELF section. While the latter choice is ideologically and technically sounder, the former one has the benefit of being simpler to implement and much simpler to port. It even works on Windows.

  • Speaking of which, there's been impressive progress on the win32 port. I won't go into the details (read sbcl-devel or join #lisp on freenode for that), but at least Alastair, Christophe, James, Luis and Rudi seem to have put in a lot of effort on it. I'm also slightly nauseated by the Windows API details they've been flogging on #lisp.

  • Gábor Melis has made significant improvements to the constraint propagation code in the compiler.

  • Cyrus Harmon has fixed a huge amount of callback bugs in the PPC port. And also made some tests that discovered some similar problems on x86-64, which I then felt honour-bound to correct. Additionally I fixed a x86/x86-64 bug that lead to callbacks not working properly when saved in a core.

  • Actually many other small x86-64 code-generation improvements and backend cleanups too, some contributed by Lutz Euler and some by me.

  • David Lichteblau is working on sb-heapdump, a program that can do a selective memory dump of a running SBCL image. The idea is that the memory dump can be loaded faster than a FASL thanks to dropping a lot of the generality that a FASL has. "Just" load the dump into memory and go through it once to fix up various references. At the same time it'd be more usable than a core since you can dump just a subset of the image (e.g. "dump package FOO") and later load that image into a compatible core. Definitely cool stuff, though getting all the small details right is going to be tricky.

    David has made a preliminary version of sb-heapdump available.

In all likelyhood I forgot something or someone. Apologies for that.

Next » Re: <insert trollish c.l.l subject here> (2006-01-30)
Previous » Comment support and thread safety (2006-01-07)

Comments

By fb on 2006-01-12

Perhaps I'm being dumb, but I just pulled sbcl from cvs (built fine), and tried to apply the patch for save-lisp-and-die :prepend-runtime (pasted out of the message), and patch just gave me " Only garbage was found in the patch input.", even when I tried to force unified diff. What am I missing?

~/temp/sbcl-cvs/sbcl] $ patch --verbose -u < patch.diff Hmm... I can't seem to find a patch in there anywhere. patch: **** Only garbage was found in the patch input.

By fb on 2006-01-12

Hey, thanks a lot! I really appreciate it. :-)

By jamesjb on 2006-01-13

I haven't gotten very much feedback on the patch---if you do try it out, please let me know how it works out for you...

James

By fb on 2006-01-13

I tried it (for trivial hello world so far) on debian with linux 2.4 and it works great.

One note to others trying the raw patch link above: the argument to pass to enable this feature is :executable, not :prepend-runtime (as in original example). The reasons for this are in the discussion thread.

I love the patch - it's great to have real executable delivery with sbcl. It does produce 23M executeables (and thats with an sbcl that seems to use at least some shared libs), but that clearly beats needing to have a seperate lisp executable and core file around to run an app. I love the idea of having a free software LISP that can do executable delivery with the performance charateristics of the sbcl/cmucl family. (The only other f/oss lisp I've gotten to do executable delivery is ECL, which is a of the KCL family, and has some very different quirks, as well as tying everything to LGPL or GPL.)

Now I just have to come up with a project to provide an excuse to play with it some more. :-)

By jamesjb on 2006-01-14

Cool, glad to hear it's working for you.

Name
Message

As an antispam measure, you need to write a super-secret password below. Today's password is "xyzzy" (without the quotes).

Password

Formatting guidelines for comments: No tags, two newlines can be used for separating paragraphs, http://... is automatically turned into a link.