[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: How to add Guile support to a package
From: |
Hans Aberg |
Subject: |
Re: How to add Guile support to a package |
Date: |
Mon, 5 Jan 2015 15:44:16 +0100 |
> On 5 Jan 2015, at 14:18, Chris Vine <address@hidden> wrote:
>
> On Mon, 5 Jan 2015 11:05:31 +0100
> Hans Aberg <address@hidden> wrote:
>> There is an issue when using C++ global objects having initializers
>> doing allocations, on platforms (as on OS X) where the GC initializer
>> must run first.
>
> Does this include guile-2.0? That uses the gc library, which seems to
> require some precautions to be taken on Darwin as regards the loading
> of dynamic libraries, but I have not heard of problems interfacing with
> static global objects where those static objects are conventionally
> allocated rather than GC’ed.
Guile is written entirely in C, so there is no problem.
> In any event, I have not had problems getting guile to work as an
> optional extension language for a C++ program with linux, from the
> memory allocation point of view.
On GNU/Linux, GC_INIT() is not required, so there is no issue there.
> There are however issues with
> accommodating guile exceptions, which are basically long jumps, to
> C++ objects with non-trivial destructors. You have to organize the
> code so that no guile exception can take such a C++ object out of
> scope, and no C++ exception can propagate out of a guile dynwind block.
If you want to pass C++ exceptions through C-code, there is a gcc option for
that.