On 17-Aug-09, at 10:17 AM, Taylor R Campbell wrote:
Procedures such as Gambit's ##MAKE-GLOBAL-VAR are not necessary to make Scheme work.
You are correct. Scheme can be made to work with very little code. For example the PICBIT system which implements most of R4RS can fit in roughly 20kb of code, and the PICOBIT VM fits in less than 10kb of code. Gambit's design goals do not include "a compact runtime system". Gambit was designed to be portable and efficient, and to provide a superior development and production environment for Scheme.
In my message I was explaining that in Lisp-like languages, such as Gambit Scheme, where dynamism is pervasive and features are highly interdependent, it is hard to implement an effective tree-shaker.
Are you saying that Scheme48 does not adhere to that Lisp philosophy? I thought Scheme48 supported "live debugging" and that it was the default execution mode. Does the debugger rely on eval? What happens when an exception is raised at run time? On my MacBook Pro I checked the size of the runtime system of Scheme48 and Gambit and there is in fact very little difference (scheme48.image=2.7MB and gsi=3.3MB). Also, when executing (let loop () (loop)) the ps program reveals that Scheme48 has a RSS of 6.4MB and Gambit has a RSS of 2.4MB. So at execution time, for a small program, Scheme48 seems to take 2.5 times as much memory as Gambit.
Marc