[gambit-list] How to create small standalone executable with
Taylor R Campbell
campbell at mumble.net
Mon Aug 17 10:17:44 EDT 2009
Date: Mon, 17 Aug 2009 09:35:04 -0400
From: Marc Feeley <feeley at iro.umontreal.ca>
Tree-shaking in a Lisp-like language is not easy...
> (##global-var-ref (##make-global-var (string->symbol (string-append
"ev" "al"))))
#<procedure #2 eval>
This is so only if one insists upon having such global databases at
run-time. Nothing prevents a Scheme implementation from using other
mechanisms. In Scheme48, the compiler, not the run-time system, knows
about environments. You can build a system that includes the compiler
and run-time system and knows about its own environments (called
reifying the system), or you can build a system that includes only the
run-time system, without the compiler or environments; then any unused
parts of the run-time system are omitted. If you use EVAL, and also
use, say, SCHEME-REPORT-ENVIRONMENT, but don't reify your own
program's environments, then the compiler and only the environments
containing the bindings of the RnRS are included -- no other
environments need be.
An environment is a compiler data structure, not a run-time data
structure -- a map from names to meanings, which for variables
describe the location where the variable's value is stored at
run-time. The locations can exist at run-time in the absence of the
environment data structure that the compiler used. Procedures such as
Gambit's ##MAKE-GLOBAL-VAR are not necessary to make Scheme work.
More information about the Gambit-list
mailing list