[gambit-list] Gambit's Linking Model

Guillaume Cartier gcartier at jazzscheme.org
Wed Jun 13 23:02:59 EDT 2007


Marc Feeley wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> On 13-Jun-07, at 9:45 PM, Guillaume Cartier wrote:
>
>> Thanks Marc. These results are *very* interesting!
>>
>> 2 questions:
>>
>> 1- Will Gambit do as good a job in optimizing the code if I package my
>> application as a bunch of .o1 files than if I had compiled them together
>> in one executable?
>
> Yes... if no declarations are used.  If your code uses the declaration 
> (declare (block)) then inter-procedural optimizations are possible 
> (such as inlining) within that file.  Of course if you want to be able 
> to redefine functions (as seems to be the case for Jazz) then you 
> cannot use this declaration.
In fact it's the opposite. A method in Jazz cannot be redefined, so I 
was planning on generating for methods something like
(begin
  (declare (block))
  (define (method-x) ...))
>
> There is a slight advantage with the single executable because the 
> global variables can be statically resolved, but this is a very small 
> factor in my experience.
>
>> 2- If the answer to 1- is yes, then the only remaining thorn is to have
>> to actually untar the .o1 files. Almost all modern languages like Python
>> (.pyc), Java (.class), ... enable code distribution inside compressed
>> archives which is really nice and easy for the developer and for the end
>> user (it would annoy me if Mercurial upon install extracted it's 300+
>> .pyc files to my hard disk instead of keeping them in a neat library.zip
>> file).
>
> But what's the difference for the user in having the package in one 
> "library.zip" file or in one *directory* "library" containing a bunch 
> of .o1 files?  This reminds me of the Mac OS format for applications.  
> In Mac OS 9 an application is in a single specially formatted file 
> which contains several "resources".  In Mac OS X an application is in 
> a hierarchically structured .app directory.  So it seems the "trend" 
> is away from specially formatted files!
I totally aggree! In reality, it's all a question of what the end user 
perceives as "right" and "wrong" and this is much about trends, so 
hurray for MacOS X for setting up a directory based trend that is so 
much simpler for us developer :)
>
>> Do you think something could be done to load the .o1 files
>> directly from an archive? This could be a wonderful code distribution
>> mechanism for Gambit too.
>
> The problem is that the .o1 files are loaded with "dlopen" (Unix) and 
> "LoadLibrary" (Windows), and these expect the file to be directly 
> accessible on the file system.  I am not aware of any workaround.
>
> Marc
Thanks again Marc and everyone else!

Guillaume




More information about the Gambit-list mailing list