[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: What are the long-term goals for R7RS in Chicken?
From: |
Marc Feeley |
Subject: |
Re: What are the long-term goals for R7RS in Chicken? |
Date: |
Mon, 19 Jul 2021 07:54:26 -0400 |
> On Jul 18, 2021, at 2:19 PM, Lassi Kortela <lassi@lassi.io> wrote:
>
>> Note that include-files and loaded libraries are two different things,
>> also in CHICKEN, libraries are usually compiled, so the .sld convention
>> is only partially useful.
>
> The convention (observed at least by Chibi, Gambit, and Gauche) is that each
> .sld file contains one define-library form.
>
> Gambit can compile something like hello.sld:
>
> (define-library (hello)
> (import (scheme base))
> (begin (write-string "Hello world\n")))
>
> into an object file hello.o1 via "gsc hello.sld". The gsi interpreter can
> load either the original hello.sld or the compiled hello.o1. (I'm not sure
> why it appends a running number to the ".o" suffix.) The same arrangement
> would probably work for Chicken.
The Gambit compiler produces a .oN file, a “dynamically loadable object file”
that is normally a shared-object file, i.e. .so or .dll . The N is a stamp so
the first time you compile foo.scm you get foo.o1, the second time foo.o2, etc.
This is to avoid the restriction on some operating systems (namely Windows)
that a given shared-object file can’t be loaded more than once even if the
content has changed. Using a fixed file name would prevent calling
(compile-file “foo.scm”) + (load “foo”) repeatedly from the REPL.
Marc