guile-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: SRFI-13 again [was: Re: string vs list processing]


From: Marius Vollmer
Subject: Re: SRFI-13 again [was: Re: string vs list processing]
Date: 20 Apr 2001 18:05:01 +0200
User-agent: Gnus/5.0803 (Gnus v5.8.3) Emacs/20.7

Martin Grabmueller <address@hidden> writes:

> I had thought about just adding a directory `srfi' to the
> distribution, which contains the SRFI-13 and SRFI-14 modules I wrote
> and possibly others, and which installs the Scheme modules under
> 
> <prefix>/share/guile/1.4.1/srfi
> 
> and the libraries under
> 
> <prefix>/lib
> 
> Then no changes to the core would be necessary and the modules could
> get loaded with (use-modules (srfi srfi-13)).

This is a good plan.  Please proceed at your leisure!

> Which leads me to another problem: I think I'll have to change the
> name of the modules, now that SRFI-14 is in.  The problem is that
> SRFI-13 and SRFI-14 are not independent, as the string library uses
> character sets.  Is there a possibility to make this dependency work
> with compiled modules?

Yes, I would think so.  Actually, this would be a good example, why I
don't want to be clever with shared libraries.

> Or simpler: What happens when two Scheme modules load the same shared
> library and each shared library installs primitives?  Do they get
> defined twice, as two different procedures?

It depends on which `dynamic-link' and `dynamic-call' functions are
executed.  For example, when you have two modules (written in Scheme),
that both execute this code

    (dynamic-call "foo_init" (dynamic-link "libguile-foo"))

then the library will be linked only once (because lt_dlopen will
notice that libguile-foo has already been linked on the second
call), but "foo_init" will be called twice.

Consequently, the actions of "foo_init" are executed twice, in the
context of two different modules.  This might work, or it might not.
For example, when you register a smob twice, you will lose.

So, initializing a shared library twice should be avoided.

Please commit your code.  We can then sort out all difficulties.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]