[gambit-list] Whole-program tree-shake & trampolinefreeness by amalgamating runtime&program, possible?

Adam adam.mlmb at gmail.com
Sat Oct 19 08:03:46 EDT 2019

Dear Marc,

An interesting question came up when discussing treeshaked Gerbil static

One could get a C-compiled program

 * that is optimally and maximally tree-shaked hence omitting inclusion in
the binary of evidently unused code, and

 * with optimal performance in the respect of having no trampoline calls at

if one would just append together Gambit's runtime's .scm files with one's
program's .scm files, into one gigantic total.scm file, which has (declare
(optimize-dead-definitions)) and is built with --enable-single-host .

To take this conversation one step further, I like to ask, is this
practically possible?

I'd really guess it is. If so, your hints about how I can actually do this
would be much appreciated.

My program consists of the three vanilla Gambit .scm files a.scm b.scm
c.scm .

I guess very roughly this will be a tweak of

echo "(declare (optimize-dead-definitions))"  > total.scm
cat gambit/lib/*.scm a.scm b.scm c.scm >> total.scm
gsc -e '(compile-file-to-target "total.scm")' (aka gsc -c total.scm)
cat gambit/lib/os_*.c total.c > c_total.c
gcc -o mystaticexe -Igambit/include/ c_total.c

Here especially, any more C files than gambit/lib/os_*.c needed, and should
the Gambit runtime .c and .scm files be appended in a particular order if
so which?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.iro.umontreal.ca/pipermail/gambit-list/attachments/20191019/0f112998/attachment.htm>

More information about the Gambit-list mailing list