I see they say they can't use the ffi [1] as libc is not in the initrd which is kind of unfortunate as it makes it a lot more work. Issue is that glibc is insanely big for an initrd. For my similar project based on LuaJIT [2] I use the ffi and Musl libc [3] which is a sane sub 600k shared library (all in one file). Will put up a bootable system soon.<p>[1] <a href="http://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/patches/guile-linux-syscalls.patch" rel="nofollow">http://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/...</a><p>[2] <a href="https://github.com/justincormack/ljsyscall" rel="nofollow">https://github.com/justincormack/ljsyscall</a><p>[3] <a href="http://www.musl-libc.org/" rel="nofollow">http://www.musl-libc.org/</a>
This brings back great memories of embedding guile into practically every piece of software I wrote from 1997 to 2000. At the time Guile sported a very simple-to-use embedding API and it was lovely to use Scheme for scripting my web server, for building the logic for Braitenberg vehicles, etc.
Disappointingly, they're still booting Linux — this is not a standalone Guile running on bare metal (even emulated), but rather Guile running on top of the Linux kernel, loaded from an initrd.