Log in

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.



Actually, appears to work well on sbcl (the few thinks I tried, from getpid to write). Only package name needed to be changed.
I think we implemented direct systems calls on some of the earlier ports, but my memory is fuzzy.