* scm_init_guile when null threads @ 2006-04-01 5:24 Oleg Parashchenko 2006-04-01 9:01 ` Neil Jerram 0 siblings, 1 reply; 5+ messages in thread From: Oleg Parashchenko @ 2006-04-01 5:24 UTC (permalink / raw) Hello, I'm trying to compile a program which uses libguile 1.8.0 under Windows under MinGW. The program is a plugin which uses scm_init_guile to initialize Guilde when loaded. Unfortunately, the program doesn't compile due to undefined reference to scm_init_guile. Looking in the archives, I found the same issue for FreeBSD. As I understand, the function scm_init_guile indeed isn't available with null threads. Are there any workarounds? Quick and dirty temporary fixes are ok. Thank you. -- Oleg Parashchenko olpa@ http://xmlhack.ru/ XML news in Russian http://uucode.com/blog/ Generative Programming, XML, TeX, Scheme _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://lists.gnu.org/mailman/listinfo/guile-devel ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: scm_init_guile when null threads 2006-04-01 5:24 scm_init_guile when null threads Oleg Parashchenko @ 2006-04-01 9:01 ` Neil Jerram 2006-04-02 2:48 ` Oleg Parashchenko 0 siblings, 1 reply; 5+ messages in thread From: Neil Jerram @ 2006-04-01 9:01 UTC (permalink / raw) Cc: guile-devel Oleg Parashchenko <olpa@xmlhack.ru> writes: > Hello, > > I'm trying to compile a program which uses libguile 1.8.0 under Windows > under MinGW. The program is a plugin which uses scm_init_guile to > initialize Guilde when loaded. Unfortunately, the program doesn't compile > due to undefined reference to scm_init_guile. Looking in the archives, I > found the same issue for FreeBSD. As I understand, the function > scm_init_guile indeed isn't available with null threads. > > Are there any workarounds? Quick and dirty temporary fixes are ok. Could you easily rework the program to use scm_boot_guile or scm_with_guile instead? Neil _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://lists.gnu.org/mailman/listinfo/guile-devel ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: scm_init_guile when null threads 2006-04-01 9:01 ` Neil Jerram @ 2006-04-02 2:48 ` Oleg Parashchenko 2006-04-02 5:50 ` Ken Raeburn 0 siblings, 1 reply; 5+ messages in thread From: Oleg Parashchenko @ 2006-04-02 2:48 UTC (permalink / raw) Hello Nail, On Sat, 01 Apr 2006 10:01:10 +0100 Neil Jerram <neil@ossau.uklinux.net> wrote: > Oleg Parashchenko <olpa@xmlhack.ru> writes: > > > Hello, > > > > I'm trying to compile a program which uses libguile 1.8.0 under > > Windows under MinGW. The program is a plugin which uses scm_init_guile > > to initialize Guilde when loaded. Unfortunately, the program doesn't > > compile due to undefined reference to scm_init_guile. Looking in the > > archives, I found the same issue for FreeBSD. As I understand, the > > function scm_init_guile indeed isn't available with null threads. > > > > Are there any workarounds? Quick and dirty temporary fixes are ok. > > Could you easily rework the program to use scm_boot_guile or > scm_with_guile instead? No, scm_boot_guile doesn't return, and I can't guess what scm_with_guile does. But looking at sources, I found the function scm_i_init_guile. This might be exactly what I need, I'll try later. > > Neil > > > > _______________________________________________ > Guile-devel mailing list > Guile-devel@gnu.org > http://lists.gnu.org/mailman/listinfo/guile-devel > _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://lists.gnu.org/mailman/listinfo/guile-devel ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: scm_init_guile when null threads 2006-04-02 2:48 ` Oleg Parashchenko @ 2006-04-02 5:50 ` Ken Raeburn 2006-04-02 15:29 ` Oleg Parashchenko 0 siblings, 1 reply; 5+ messages in thread From: Ken Raeburn @ 2006-04-02 5:50 UTC (permalink / raw) Cc: guile-devel On Apr 1, 2006, at 21:48, Oleg Parashchenko wrote: > Neil Jerram <neil@ossau.uklinux.net> wrote: >> Could you easily rework the program to use scm_boot_guile or >> scm_with_guile instead? > > No, scm_boot_guile doesn't return, and I can't guess what > scm_with_guile > does. But looking at sources, I found the function > scm_i_init_guile. This > might be exactly what I need, I'll try later. You call scm_with_guile, and give it a function to call that manipulates Guile objects or calls Guile functions; it causes the thread to enter "guile mode", calls the function, leaves "guile mode" and returns to the caller. (You can also pass a pointer to whatever associated data you want, so you don't have to make your function rely on global variables.) Since it controls entry and exit to your function, its ability to figure out where the "guile part" of the stack of that thread (needed for garbage collection) starts is much greater than with scm_init_guile. If you use scm_init_guile, it needs to figure out where the thread's stack's base is (yes, this may be easier on some platforms when configured for null threads), because under that interface, you could pop back up a few stack frames before invoking some Guile routines and storing objects into stack slots. Using scm_with_guile, your automatic variables with SCM objects won't get stored on the "wrong" side of the stack pointer that scm_with_guile has recorded. Ken _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://lists.gnu.org/mailman/listinfo/guile-devel ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: scm_init_guile when null threads 2006-04-02 5:50 ` Ken Raeburn @ 2006-04-02 15:29 ` Oleg Parashchenko 0 siblings, 0 replies; 5+ messages in thread From: Oleg Parashchenko @ 2006-04-02 15:29 UTC (permalink / raw) Hello Ken, On Sun, 2 Apr 2006 00:50:20 -0500 Ken Raeburn <raeburn@raeburn.org> wrote: ... > > You call scm_with_guile, and give it a function to call that > manipulates Guile objects or calls Guile functions; it causes the > thread to enter "guile mode", calls the function, leaves "guile mode" > and returns to the caller. (You can also pass a pointer to whatever > associated data you want, so you don't have to make your function > rely on global variables.) Thank you for explaining the interface. > > Since it controls entry and exit to your function, its ability to > figure out where the "guile part" of the stack of that thread (needed > for garbage collection) starts is much greater than with > scm_init_guile. If you use scm_init_guile, it needs to figure out > where the thread's stack's base is (yes, this may be easier on some > platforms when configured for null threads), because under that > interface, you could pop back up a few stack frames before invoking > some Guile routines and storing objects into stack slots. Using > scm_with_guile, your automatic variables with SCM objects won't get > stored on the "wrong" side of the stack pointer that scm_with_guile > has recorded. I have two questions about scm_with_guile related to initialization and nesting. I have impression that before using Guile, one has to initialize Guile using scm_init_gsubr(), scm_init_procprop() etc, but scm_with_guile doesn't do it. Am I wrong? Now about nesting. Let's suppose my program switches to Guile using scm_with_guile (stack base "A"). Guile runs, at some moments executes an extension function, and switches back to the program. The code needs some Guile and calls scm_with_guile again (stack base "B"). The question: does garbage collector work correctly, not missing the Scheme values between "A" and "B"? > > Ken -- Oleg Parashchenko olpa@ http://xmlhack.ru/ XML news in Russian http://uucode.com/blog/ Generative Programming, XML, TeX, Scheme _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://lists.gnu.org/mailman/listinfo/guile-devel ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2006-04-02 15:29 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2006-04-01 5:24 scm_init_guile when null threads Oleg Parashchenko 2006-04-01 9:01 ` Neil Jerram 2006-04-02 2:48 ` Oleg Parashchenko 2006-04-02 5:50 ` Ken Raeburn 2006-04-02 15:29 ` Oleg Parashchenko
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).