> On 5 Jan 2015, at 14:18, Chris Vine <ch...@cvine.freeserve.co.uk> wrote: > > On Mon, 5 Jan 2015 11:05:31 +0100 > Hans Aberg <haber...@telia.com> 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.