[gambit-list] Gerbil: FFI Gerbil modules, why instead of a single Scheme file, a .ssi with (extern ..) + a .scm?

Adam adam.mlmb at gmail.com
Tue Oct 22 14:05:02 EDT 2019

What's the reason for the need to "drop to Gambit code" (as in enter a
special non-Gerbil code mode) for FFI code?

Afterall FFI code is just a handful special forms that are straightforward
[for Gerbil etc.] to process.

(Black Hole had total symmetry between normal Scheme and FFI code, though I
remember Per complained about that the difference in load semantics between
non-FFI and FFI code caused him just a bit of headache because they're not
really symmetrical, in the respect that normal code can be |eval|:ed while
FFI code cannot.)

On Tue, 22 Oct 2019 at 23:44, Dimitris Vyzovitis <vyzo at hackzen.org> wrote:

> What do you mean why? If you want to write ffi code, you need to drop down
> to straight gambit code, and that's what being-foreign does.
> begin-ffi is a macro on top, you can look at its definition in
> :std/foreign.
> -- vyzo
> On Tue, Oct 22, 2019 at 6:29 PM Adam <adam.mlmb at gmail.com> wrote:
>> Ah there's also |begin-foreign| and |begin-ffi|, why?
>> On Tue, 22 Oct 2019 at 23:23, Adam <adam.mlmb at gmail.com> wrote:
>>> Hi Vyzo,
>>> Browsing Gerbil modules for instance here
>>> https://github.com/vyzo/gerbil/tree/master/src/std/db I see that FFI
>>> modules tend to have a non-standard format, instead of just being a file
>>> whateverclibmodule.scm (or .ss in the Gerbil convention, though .scm is
>>> supported since last week right) which contains normal Scheme and Scheme
>>> FFI code interspersed e.g. (define-c-lambda funame ...) implies (export
>>> funame)
>>> , you have a .scm file and a .ssi file, where the .ssi contains (extern
>>> funame).
>>> Why is this?
>>> Thanks,
>>> Adam
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.iro.umontreal.ca/pipermail/gambit-list/attachments/20191023/ddb2d4e8/attachment.htm>

More information about the Gambit-list mailing list