Hi folks! It's been a long time for me to be inactive here. ;-) I saw there's thread to discuss Guile benchmark, I think it's better to mention the JIT compiler of Guile. It exists and real, and of course, very fast.
Thanks Atsuro Hoshino, who is the author of Guile JIT compiler. We've met on ICFP2016 in Nara. And I'm great impressed by this work. I'm enjoying the contribution very much, especially when yesterday I made it work successfully! I think Atsuro is very busy these months, so that he has no time to take a look on my patches. After waited half a year, I decide to take the responsibility to maintain this project. I have to mention that JIT compiler is not in Guile upstream repo at present, it's maintained on GitHub. I've forked the repo and patched it to make it work, and rebased it to our latest master branch (2.1.7.980-f5904-dirty). Now it works on the latest Guile code base. I'lI keep on maintaining it before Atsuro come back to take it. My plan is to keep it updating with the latest Guile master branch, and try to fix problems, respond the issues, finally, when it becomes mature, I'll send patches-set to Guile upstream. Please come back soon, we need you, Atsuro ;-) Here's my repo, reports and patches are welcome, I prefer maintain it on GitHub, this will be easier for most of folks: ============================== https://github.com/NalaGinrut/guile-tjit ============================== Please follow nala-tjit branch which is maintaining by me. To build it , you need gnu-lightning, and you should add --enable-lightning when configure: ============== ./configure --enable-lightning ============== To run it with JIT, please add --tjit option: ================= guile --tjit ================= The JIT is still experimental, so please report if you encounter any problem, I'll try to help to fix it, and I'm here to invite contributors to help this significant project. Atsuro's paper is here: =================== http://scheme2016.snow-fort.org/static/scheme16-paper3.pdf =================== About the performance, I tried a poor test: ========code======== (define (fib n) (define (iter a b c) (cond ((= c 0) b) (#t (iter (+ a b) a (- c 1))))) (iter 1 0 n)) (define a (fib 1000000)) =========end======== It's not a fair test, and I'm a bad benchmarker, but it shows interesting result on my machine: Chez: 15s guile-master: 28s guile-jit: 15s Now you know it's different, huh? Come to get involved please, try it on your code, and report something, find bugs as possible. And let's pray it could be fixed automatically. ;-P Best regards.