July 1st, 2013

Direct syscalls on CMUCL and maybe SBCL

About 10 years ago I read an article on comp.lang.lisp about system calls and the condition system:

... I would have liked a native Unix system call interface that could skip the dumbing-down that the C interface library represents. e.g., most system calls in most Unix implementations return an error as a CPU flag, not as some stupid special value and setting a global variable like the C library exports to C programmers. that is, it should be fairly simple to create a condition system for Unix system calls that could be more efficient and less insane than the C stuff we have to deal with via today's foreign function interfaces.

That sounded interesting, and I started hacking around on it, and someone sent me code from Douglas T. Crosher for direct syscalls in CMUCL on Linux/x86. Then I lost interest in the project and forgot about the code, until yesterday. So I posted the code on github in case it seems interesting to someone else. I'm not sure how much work it would take to get it running on modern CMUCL or SBCL.

Mark Watson is updating his Common Lisp book

Mark Watson wrote to me about an announcement he made today on his blog:

I ... got back to my Common Lisp “roots” last week when I was enjoying playing with the mocl Common Lisp system for Android and iOS development. I wrote an AI book using Common Lisp for Springer-Verlag in the 1980s, which was lots of fun, and in 2007 I put together a very short PDF free “book” called “Loving Lisp, or the Savvy Programmer’s Secret Weapon” with the help of many people in the Common Lisp community who offered corrections and suggestions. A few years ago I spent a weekend correcting and adding material to “Loving Lisp, or the Savvy Programmer’s Secret Weapon” but I never published the new material. I just decided last night to spend some of my free time updating this book adding more material on: accessing PostgreSQL, MongoDB and CouchDB; writing web apps; a native Common Lisp SPARQL client and some ideas for using SPARQL endpoints in Common Lisp applications, and some general material on information gathering. Basically, supporting an old language like Common Lisp with some fun modern application examples.

(Emphasis added.)

Read more on Mark's blog.