[gambit-list] Strategies on decreasing executable size for Gambit-based software for client distribution

Marc Feeley feeley at iro.umontreal.ca
Fri Oct 3 19:40:55 EDT 2008


Eval introduces an interesting problem because it allows  
introspection, e.g.

(define (foo x) (* x x)) ;; foo is not called directly by the program

(pretty-print ((eval 'foo) 10)) ;; should print 100

So if the code can call eval, then anything accessible from the  
toplevel must be retained in the executable.  If after tree-shaking  
the code contains a call to eval, then nothing can be thrown away.   
That's the price to pay for an introspective system.  Note that many  
things might call eval, such as the REPL, or the exception handling  
system and even "read", so in practice it may be hard to remove much  
code.  One "solution" is to add some switches to the compiler to ask  
it to not support the REPL, and to exit abruptly when an exception is  
raised.

Marc

On 3-Oct-08, at 5:38 PM, Mikael More wrote:

> In case you would implement this, how would eval work?
>
> Mikael
>




More information about the Gambit-list mailing list