Two undergraduate students, Eric Thivierge and Vincent Foley, will be working on various Gambit compiler back-ends over the summer.
Vincent is working on a back-end for x86 and ARM. Eric is working on a "universal" back-end which can generate code for high-level languages (such as JavaScript, Python, and PHP).
Release 4.6.6 of Gambit contains a very preliminary version of the universal back-end (file gsc/_t-univ.scm). It is currently a proof of concept and only able to compile simple programs. The JavaScript back-end is selected by passing the option "-target js" to gsc. Here is a sample use:
% cat fib.scm
(declare
(standard-bindings)
(extended-bindings)
(block)
(inlining-limit 0)
(not safe)
(not interrupts-enabled)
)
(define (fib n)
(if (fx< n 2)
n
(fx+ (fib (fx- n 1))
(fib (fx- n 2)))))
(print (fib 30))
% gsc -c -target js fib.scm
% d8 fib.js
832040
% gsi fib.scm
832040
If you are interested in contributing to the development of these back-ends, please inform the mailing list and get in touch with Eric and Vincent so that the efforts can be coordinated.
Marc