On Sat, 2024-12-14 at 18:11 +0100, Basile Starynkevitch wrote: > On Sat, 2024-12-14 at 09:15 +0900, Nala Ginrut wrote: > > Hi Hakan! > > The current Guile is not AOT yet. Although the object file is ELF, > > it's > > just bytecode wrapped ELF header. So you can't run it as a regular > > executable file. > > >
[Sorry if I'm missing context here, I'm only seeing the part of the thread where Basile CCed the jit@gcc.gnu.org mailing list] > Those willing to contribute a proper ahead-of-time compiler to GNU > guile could use the GNU CC libgccjit library which is part of the GCC > compiler. > https://gcc.gnu.org/onlinedocs/jit/ ...and https://gcc.gnu.org/wiki/JIT Indeed, it turns out that everyone using libgccjit is using it for ahead-of-time compilation, rather than jit-compilation. Sorry about picking a bad name :) Probably of most interest to guile developers might be the gccemacs project here: https://akrl.sdf.org/gccemacs.html since AFAIK that has successfully used libgccjit from within a lisp- like language to get noticeable speedups. But guile developers probably know more about this than I do; I confess I don't know much about the lisp/scheme world. > > This libgccjit layer of the GCC compiler is stable and maintained C > API > and has some obsolete C++ API (which seems unmaintained in december > 2024). Most of the libgccjit code is internally coded (under GPL > license) in C++, but the stable API is for C. Indeed, it is gcc's code generation source code (which is C++), wrapped in a C API and header (it looks like a frontend to the rest of gcc, and like an API to the client code). Hope this is constructive Dave > > I am using the C API of libgccjit in the RefPerSys open source > inference engine project (GPLv3+ licensed) on > https://github.com/RefPerSys/RefPerSys/ > > Both libgccjit and GNU lightning (see > https://www.gnu.org/software/lightning/ ...) could be a basis for > adding a genuine compilation layer to GNU guile. And RefPerSys uses > both. > > I guess a significant issue would be to use libgccjit (or GNU > lightning) with GUILE's garbage collector (which seems to be Boehm > conservative GC). > > The RefPerSys project has a precise garbage collector and some > persistence (to textual files). Since it is GPLv3+ licensed, its code > could be reused in a future GUILE major version. RefPerSys is mostly > coded in C++. > > I did contribute to GCC long time ago and hope that RefPerSys could > become a GNU project (but don't know how to make that happen) > > Regards from near Paris in France. >