unofficial mirror of guile-user@gnu.org 
 help / color / mirror / Atom feed
* Module unloading
@ 2005-05-23 14:03 Zeeshan Ali
  2005-05-23 18:18 ` Neil Jerram
  0 siblings, 1 reply; 17+ messages in thread
From: Zeeshan Ali @ 2005-05-23 14:03 UTC (permalink / raw)


Hello fellow Guilers,
    As most of you (who lurk on #guile) know that I've been writing an
xchat-guile plugin lately so people can write xchat plugins in
scheme/guile. The plugin is almost finished now and i am working on
the plugin loading and unloading functionality right now. I thought
that it would be a good idea that the xchat-guile plugins are the same
as guile modules. I know how to load the modules but i also need to
unload them and seems there is no 'straight' way of doing that in
guile, is there?
 
Regards,

Zeeshan Ali


_______________________________________________
Guile-user mailing list
Guile-user@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-user


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Module unloading
  2005-05-23 14:03 Module unloading Zeeshan Ali
@ 2005-05-23 18:18 ` Neil Jerram
  2005-05-23 20:55   ` Zeeshan Ali
  0 siblings, 1 reply; 17+ messages in thread
From: Neil Jerram @ 2005-05-23 18:18 UTC (permalink / raw)
  Cc: guile-user

Zeeshan Ali wrote:
> Hello fellow Guilers,
>     As most of you (who lurk on #guile) know that I've been writing an
> xchat-guile plugin lately so people can write xchat plugins in
> scheme/guile. The plugin is almost finished now and i am working on
> the plugin loading and unloading functionality right now. I thought
> that it would be a good idea that the xchat-guile plugins are the same
> as guile modules. I know how to load the modules but i also need to
> unload them and seems there is no 'straight' way of doing that in
> guile, is there?

There's no way of completely removing (=> undefining) the definitions 
that a module added.  I think it might be possible (in an undocumented 
and unsupported way) to "unuse" a module, though, i.e. to remove a 
plugin module from the module-uses list of your main module.  Is that 
any use to you?

	Neil


_______________________________________________
Guile-user mailing list
Guile-user@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-user


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Module unloading
  2005-05-23 18:18 ` Neil Jerram
@ 2005-05-23 20:55   ` Zeeshan Ali
  2005-05-23 21:23     ` Neil Jerram
  0 siblings, 1 reply; 17+ messages in thread
From: Zeeshan Ali @ 2005-05-23 20:55 UTC (permalink / raw)
  Cc: guile-user

Hello,

> There's no way of completely removing (=> undefining) the definitions
> that a module added.

      Hmm... But the GC would take care of that, wouldn't it? If it
doesn'nt then the plugins must do that themselves in their
'xchat-plugin-deinit' procedure, which they must define and export.

>  I think it might be possible (in an undocumented
> and unsupported way) to "unuse" a module, though, i.e. to remove a
> plugin module from the module-uses list of your main module.  Is that
> any use to you?

    I think that is exactly what i need. Maybe there is no way defined
to do this as the GC also takes care of 'unused' modules as they are
also normal guile objects? Thanks for your help.

Regards,

Zeeshan Ali.


_______________________________________________
Guile-user mailing list
Guile-user@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-user


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Module unloading
  2005-05-23 20:55   ` Zeeshan Ali
@ 2005-05-23 21:23     ` Neil Jerram
  2005-05-24 13:02       ` Zeeshan Ali
  0 siblings, 1 reply; 17+ messages in thread
From: Neil Jerram @ 2005-05-23 21:23 UTC (permalink / raw)
  Cc: guile-user

Zeeshan Ali wrote:
> 
>>There's no way of completely removing (=> undefining) the definitions
>>that a module added.
> 
>       Hmm... But the GC would take care of that, wouldn't it? If it
> doesn'nt then the plugins must do that themselves in their
> 'xchat-plugin-deinit' procedure, which they must define and export.

It should do if you really can remove all the references to the module, 
but I'm not sure how easy that is; I think modules live (through 
membership of a global list?) even if no one is using them.

>> I think it might be possible (in an undocumented
>>and unsupported way) to "unuse" a module, though, i.e. to remove a
>>plugin module from the module-uses list of your main module.  Is that
>>any use to you?
> 
>     I think that is exactly what i need. Maybe there is no way defined
> to do this as the GC also takes care of 'unused' modules as they are
> also normal guile objects? Thanks for your help.

Well here's what I had in mind:

(use-modules (ossau example-fns))   ; this module exports `fact1'

(define (unuse-named-module name)
   (let ((intf (resolve-interface name)))
     (set-module-uses! (current-module)
		      (delq intf (module-uses (current-module))))))

fact1 => #<procedure fact1 (n)>

(unuse-named-module '(ossau example-fns))

fact1 => ERROR: Unbound variable: fact1

It seems to survive 5 minutes of testing by me, but there could well be 
problems lurking, so please test carefully in your context.

	Neil


_______________________________________________
Guile-user mailing list
Guile-user@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-user


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Module unloading
  2005-05-23 21:23     ` Neil Jerram
@ 2005-05-24 13:02       ` Zeeshan Ali
  2005-05-24 18:15         ` Neil Jerram
  0 siblings, 1 reply; 17+ messages in thread
From: Zeeshan Ali @ 2005-05-24 13:02 UTC (permalink / raw)
  Cc: guile-user

Hello,

> It seems to survive 5 minutes of testing by me, but there could well be
> problems lurking, so please test carefully in your context.

   I'll try to test it here as well but i'll have to convert it to an
equivalent C code first.

BTW guys,

      I have been told that the fate of 'undefine' is in doubt. Is
that really true? Here is how i load modules and tell me if there is a
better way of doing the same:

1. load the module using scm_c_use_module ()
2. The module is responsible to define and export a few symbols (e.g
xchat-plugin-version)
3. I get the value of these symbols and
4 undefine these varriables

Regards,

Zeeshan Ali.


_______________________________________________
Guile-user mailing list
Guile-user@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-user


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Module unloading
  2005-05-24 13:02       ` Zeeshan Ali
@ 2005-05-24 18:15         ` Neil Jerram
  2005-05-24 21:06           ` Zeeshan Ali
  2005-05-24 21:14           ` Rob Browning
  0 siblings, 2 replies; 17+ messages in thread
From: Neil Jerram @ 2005-05-24 18:15 UTC (permalink / raw)
  Cc: guile-user

Zeeshan Ali wrote:
> Hello,
> 
> 
>>It seems to survive 5 minutes of testing by me, but there could well be
>>problems lurking, so please test carefully in your context.
> 
> 
>    I'll try to test it here as well but i'll have to convert it to an
> equivalent C code first.

Out of interest, why is that?  (It's easy enough to call Scheme-defined 
code from C, isn't it?)

> 
> BTW guys,
> 
>       I have been told that the fate of 'undefine' is in doubt. Is
> that really true? Here is how i load modules and tell me if there is a
> better way of doing the same:
> 
> 1. load the module using scm_c_use_module ()
> 2. The module is responsible to define and export a few symbols (e.g
> xchat-plugin-version)
> 3. I get the value of these symbols and
> 4 undefine these varriables

That sounds more complex and magic than it needs to be, to me - where by 
"complex" I mean your infrastructure code using undefine, and by "magic" 
I mean that it requires plugin authors to follow a non-code-enforced 
convention about the names of the variables.  Why not use a registration 
API instead?  In other words, instead of this:

(define (do-plugin-thing-1 ...) ...)
(define (do-plugin-thing-2 ...) ...)
...

do this:

(let ()
   (define (do-plugin-thing-1 ...) ...)
   (define (do-plugin-thing-2 ...) ...)
   ...
   (register-plugin do-plugin-thing-1
                    do-plugin-thing-2
                    ...))

This way there is no magic, and the visibility of the plugin bindings is 
under the control of the plugin author.  Also, this way you could stay 
pure-R5RS if you like, as you don't really need any features of the 
module system.

Regards,
	Neil


_______________________________________________
Guile-user mailing list
Guile-user@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-user


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Module unloading
  2005-05-24 18:15         ` Neil Jerram
@ 2005-05-24 21:06           ` Zeeshan Ali
  2005-05-24 21:26             ` Zeeshan Ali
  2005-05-24 21:14           ` Rob Browning
  1 sibling, 1 reply; 17+ messages in thread
From: Zeeshan Ali @ 2005-05-24 21:06 UTC (permalink / raw)
  Cc: guile-user

Hello,

> >    I'll try to test it here as well but i'll have to convert it to an
> > equivalent C code first.
> 
> Out of interest, why is that?  (It's easy enough to call Scheme-defined
> code from C, isn't it?)

    Yes! I think i my mind is stuck in the world of C. :(

> That sounds more complex and magic than it needs to be, to me - where by
> "complex" I mean your infrastructure code using undefine, and by "magic"
> I mean that it requires plugin authors to follow a non-code-enforced
> convention about the names of the variables.

   I know my design sucks and that is why i am so desperate to hear
new ideas. Let's hear yours:

>  Why not use a registration
> API instead?  In other words, instead of this:
> 
> (define (do-plugin-thing-1 ...) ...)
> (define (do-plugin-thing-2 ...) ...)
> ...
> 
> do this:
> 
> (let ()
>    (define (do-plugin-thing-1 ...) ...)
>    (define (do-plugin-thing-2 ...) ...)
>    ...
>    (register-plugin do-plugin-thing-1
>                     do-plugin-thing-2
>                     ...))
> 
> This way there is no magic, and the visibility of the plugin bindings is
> under the control of the plugin author.  Also, this way you could stay
> pure-R5RS if you like, as you don't really need any features of the
> module system.

   Sounds pretty cool. I'll give it a try. Thanks a lot.

Regards,

Zeeshan Ali


_______________________________________________
Guile-user mailing list
Guile-user@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-user


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Module unloading
  2005-05-24 18:15         ` Neil Jerram
  2005-05-24 21:06           ` Zeeshan Ali
@ 2005-05-24 21:14           ` Rob Browning
  2005-05-26 18:43             ` Neil Jerram
  1 sibling, 1 reply; 17+ messages in thread
From: Rob Browning @ 2005-05-24 21:14 UTC (permalink / raw)
  Cc: guile-user

Neil Jerram <neil@ossau.uklinux.net> writes:

> This way there is no magic, and the visibility of the plugin bindings
> is under the control of the plugin author.  Also, this way you could
> stay pure-R5RS if you like, as you don't really need any features of
> the module system.

This made me wonder -- what happens if you dynamically load (dlopen) a
lib that depends on libguile, and then you later dlclose that lib?
What happens to libguile?  Presumably it will be unloaded too.  Does
Guile tolerate that?

If so, does Guile tolerate being re-loaded?  For example if you then
re-dlopen the lib that depends on libguile and start using it?

-- 
Rob Browning
rlb @defaultvalue.org and @debian.org; previously @cs.utexas.edu
GPG starting 2002-11-03 = 14DD 432F AE39 534D B592  F9A0 25C8 D377 8C7E 73A4


_______________________________________________
Guile-user mailing list
Guile-user@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-user


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Module unloading
  2005-05-24 21:06           ` Zeeshan Ali
@ 2005-05-24 21:26             ` Zeeshan Ali
  2005-05-26 12:16               ` Zeeshan Ali
  2005-05-26 18:25               ` Neil Jerram
  0 siblings, 2 replies; 17+ messages in thread
From: Zeeshan Ali @ 2005-05-24 21:26 UTC (permalink / raw)
  Cc: guile-user

Hello again,

> >  Why not use a registration
> > API instead?  In other words, instead of this:
> >
> > (define (do-plugin-thing-1 ...) ...)
> > (define (do-plugin-thing-2 ...) ...)
> > ...
> >
> > do this:
> >
> > (let ()
> >    (define (do-plugin-thing-1 ...) ...)
> >    (define (do-plugin-thing-2 ...) ...)
> >    ...
> >    (register-plugin do-plugin-thing-1
> >                     do-plugin-thing-2
> >                     ...))

    This is the code of the plugin right? and register-plugin is a
function provided by me for the plugins to call? But i'll still need
an entry point inside the plugin: a procedure that i'll call from the
module as soon as i load it. So this approach doesn't seem to be of a
big advantage.

> > This way there is no magic, and the visibility of the plugin bindings is
> > under the control of the plugin author.

    I think I have figured-out a way out of this visibility problem:

(define amodule (resolve-module '(amodule)))
((variable-ref (module-local-variable amodule 'xchat-plugin-init)))

     This code seems to work and there is no need for the plugin to
export it's objects anymore.

>  Also, this way you could stay
> > pure-R5RS if you like, as you don't really need any features of the
> > module system.

   Wait a sec? Are you really thinking what i think you are thinking:
use the simple 'load' procedure combined with your suggested
registeration API instead of using the module system of guile?
    
Regards,

Zeeshan Ali


_______________________________________________
Guile-user mailing list
Guile-user@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-user


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Module unloading
  2005-05-24 21:26             ` Zeeshan Ali
@ 2005-05-26 12:16               ` Zeeshan Ali
  2005-05-26 18:33                 ` Neil Jerram
  2005-05-26 18:25               ` Neil Jerram
  1 sibling, 1 reply; 17+ messages in thread
From: Zeeshan Ali @ 2005-05-26 12:16 UTC (permalink / raw)
  Cc: guile-user

Hello Neil,
   I must remind you that i am anxiously waiting for more input on
this mater from you. Moreover, i tried to implement what you
recommended but i think i am in a problem: Since the loaded module
doesn't have access to binding of it's parent module (the module that
'uses' it), it is unable to access the 'xchat-register-plugin'
procedure that is defined in the parent module. Do you have a solution
for this in mind as well, or i took you all wrong.

Regards,

Zeeshan Ali.


_______________________________________________
Guile-user mailing list
Guile-user@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-user


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Module unloading
  2005-05-24 21:26             ` Zeeshan Ali
  2005-05-26 12:16               ` Zeeshan Ali
@ 2005-05-26 18:25               ` Neil Jerram
  2005-05-26 19:45                 ` Zeeshan Ali
  1 sibling, 1 reply; 17+ messages in thread
From: Neil Jerram @ 2005-05-26 18:25 UTC (permalink / raw)
  Cc: guile-user

Zeeshan Ali wrote:
> Hello again,
> 
> 
>>> Why not use a registration
>>>API instead?  In other words, instead of this:
>>>
>>>(define (do-plugin-thing-1 ...) ...)
>>>(define (do-plugin-thing-2 ...) ...)
>>>...
>>>
>>>do this:
>>>
>>>(let ()
>>>   (define (do-plugin-thing-1 ...) ...)
>>>   (define (do-plugin-thing-2 ...) ...)
>>>   ...
>>>   (register-plugin do-plugin-thing-1
>>>                    do-plugin-thing-2
>>>                    ...))
> 
> 
>     This is the code of the plugin right? and register-plugin is a
> function provided by me for the plugins to call?

Yes, exactly.

> But i'll still need
> an entry point inside the plugin: a procedure that i'll call from the
> module as soon as i load it. So this approach doesn't seem to be of a
> big advantage.

I'm not sure I understand.  Do you need to call this procedure even
before the plugin code calls register-plugin (which would happen
automatically when the plugin code file is loaded)?  It's difficult to
see how there could be a requirement for this, given that it is
impossible to separate the loading and the register-plugin call.

If it is OK to call this procedure after register-plugin has been
called, then the procedure to call could be another argument to
register-plugin:

     (register-plugin init-proc
                      do-plugin-thing-1
                      do-plugin-thing-2
                      ...))

>     I think I have figured-out a way out of this visibility problem:
> 
> (define amodule (resolve-module '(amodule)))
> ((variable-ref (module-local-variable amodule 'xchat-plugin-init)))
> 
>      This code seems to work and there is no need for the plugin to
> export it's objects anymore.

Yes, this would be fine.

>> Also, this way you could stay
>>
>>>pure-R5RS if you like, as you don't really need any features of the
>>>module system.
> 
> 
>    Wait a sec? Are you really thinking what i think you are thinking:
> use the simple 'load' procedure combined with your suggested
> registeration API instead of using the module system of guile?

Yes.  It may indicate a deficiency in the module system, but I don't
think that modules are currently especially well aligned with the
requirements of acting as a plugin.  In my view modules are mostly
useful (and work very well) for organizing the code of a non-trivial
application (and with a thought of identifying and grouping together the
code that might be reusable by other applications).

To map this onto your program, I think it would be absolutely fine to
use just load to load plugins - in fact this would work well with a
standard File Selector GUI: "Browse for plugin ...", whereas for a
module-based invocation you'd need to invent a new dialog.  Please note 
that, even when a file is loaded using plain "load":

1. The plugin author can still choose to make their file a module, if 
that is of use to them, by beginning it with a (define-module ...) form.

2. The plugin author can still choose to use modules to organize their 
plugin code internally, by splitting out some of the code into modules 
and using (use-modules ...) from the main file to load them.

3. The plugin author can still use third-party modules, using 
(use-modules ...).

Regards,
	Neil


_______________________________________________
Guile-user mailing list
Guile-user@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-user


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Module unloading
  2005-05-26 12:16               ` Zeeshan Ali
@ 2005-05-26 18:33                 ` Neil Jerram
  2005-05-26 20:00                   ` Zeeshan Ali
  0 siblings, 1 reply; 17+ messages in thread
From: Neil Jerram @ 2005-05-26 18:33 UTC (permalink / raw)
  Cc: guile-user

Zeeshan Ali wrote:
> Hello Neil,
>    I must remind you that i am anxiously waiting for more input on
> this mater from you. Moreover, i tried to implement what you
> recommended but i think i am in a problem: Since the loaded module
> doesn't have access to binding of it's parent module (the module that
> 'uses' it), it is unable to access the 'xchat-register-plugin'
> procedure that is defined in the parent module. Do you have a solution
> for this in mind as well, or i took you all wrong.

Yes.  This is covered in general terms by the comments in my earlier 
email today, but for the specific problem you describe, all you need to 
do is:

- export `xchat-register-plugin' from your main infrastructure module, 
which let's say is (xchat main)

- document that plugin authors need to write `(use-modules (xchat 
main))' at the start of their plugin code.

Hope this makes sense ...

	Neil


_______________________________________________
Guile-user mailing list
Guile-user@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-user


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Module unloading
  2005-05-24 21:14           ` Rob Browning
@ 2005-05-26 18:43             ` Neil Jerram
  2005-05-26 18:57               ` Rob Browning
  0 siblings, 1 reply; 17+ messages in thread
From: Neil Jerram @ 2005-05-26 18:43 UTC (permalink / raw)
  Cc: guile-user

Rob Browning wrote:
> 
> This made me wonder -- what happens if you dynamically load (dlopen) a
> lib that depends on libguile, and then you later dlclose that lib?
> What happens to libguile?  Presumably it will be unloaded too.  Does
> Guile tolerate that?
> 
> If so, does Guile tolerate being re-loaded?  For example if you then
> re-dlopen the lib that depends on libguile and start using it?

What happens "inside" the library when it is dlopened?  I thought 
nothing, so I doubt that loading and unloading per se would be a problem.

If a single program called scm_init_guile() twice without the library 
being unloaded and reloaded first ... I doubt the code would handle 
that, but I'd say this is incorrect use of the API.

If a single program calls scm_init_guile(), later unloads libguile, the 
reloads libguile and calls scm_init_guile() ... I'd say this _ought_ to 
work, and it probably mostly does as long as reloading reinitializes 
libguile's global data.  Since there is no scm_term_guile(), though, I 
suspect we would also have leaked a lot of memory on the heap.

	Neil


_______________________________________________
Guile-user mailing list
Guile-user@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-user


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Module unloading
  2005-05-26 18:43             ` Neil Jerram
@ 2005-05-26 18:57               ` Rob Browning
  2005-05-26 19:05                 ` Neil Jerram
  0 siblings, 1 reply; 17+ messages in thread
From: Rob Browning @ 2005-05-26 18:57 UTC (permalink / raw)
  Cc: guile-user

Neil Jerram <neil@ossau.uklinux.net> writes:

> What happens "inside" the library when it is dlopened?  I thought
> nothing, so I doubt that loading and unloading per se would be a
> problem.
>
> If a single program called scm_init_guile() twice without the library
> being unloaded and reloaded first ... I doubt the code would handle
> that, but I'd say this is incorrect use of the API.
>
> If a single program calls scm_init_guile(), later unloads libguile,
> the reloads libguile and calls scm_init_guile() ... I'd say this
> _ought_ to work, and it probably mostly does as long as reloading
> reinitializes libguile's global data.  Since there is no
> scm_term_guile(), though, I suspect we would also have leaked a lot of
> memory on the heap.

I was also concerned about any pending signals, callbacks registered
with other libraries, or anything else that has been set up by code
executed from guile.

I was concerned that there may be trouble unless there's some way of
enumerating all of these things and undoing them, and that seems like
it might be difficult in the general case.

-- 
Rob Browning
rlb @defaultvalue.org and @debian.org; previously @cs.utexas.edu
GPG starting 2002-11-03 = 14DD 432F AE39 534D B592  F9A0 25C8 D377 8C7E 73A4


_______________________________________________
Guile-user mailing list
Guile-user@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-user


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Module unloading
  2005-05-26 18:57               ` Rob Browning
@ 2005-05-26 19:05                 ` Neil Jerram
  0 siblings, 0 replies; 17+ messages in thread
From: Neil Jerram @ 2005-05-26 19:05 UTC (permalink / raw)
  Cc: guile-user

Rob Browning wrote:
> 
> I was also concerned about any pending signals, callbacks registered
> with other libraries, or anything else that has been set up by code
> executed from guile.
> 
> I was concerned that there may be trouble unless there's some way of
> enumerating all of these things and undoing them, and that seems like
> it might be difficult in the general case.

Yes, good points.  This sounds pretty hard, so I guess it will be 
addressed only when someone has a real need.

	Neil


_______________________________________________
Guile-user mailing list
Guile-user@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-user


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Module unloading
  2005-05-26 18:25               ` Neil Jerram
@ 2005-05-26 19:45                 ` Zeeshan Ali
  0 siblings, 0 replies; 17+ messages in thread
From: Zeeshan Ali @ 2005-05-26 19:45 UTC (permalink / raw)
  Cc: guile-user

Hello Neil,
    Glad to hear from you again.

> 1. The plugin author can still choose to make their file a
> module, if that is of use to them, by beginning it with a
> (define-module ...) form.
> 
> 2. The plugin author can still choose to use modules to
> organize their plugin code internally, by splitting out some of
> the code into modules and using (use-modules ...) from the
> main file to load them.
> 
> 3. The plugin author can still use third-party modules, using
> (use-modules ...).

4. It will cause nonspace polution, which is what i won't want. :(

Regards,

Zeeshan Ali


_______________________________________________
Guile-user mailing list
Guile-user@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-user


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: Module unloading
  2005-05-26 18:33                 ` Neil Jerram
@ 2005-05-26 20:00                   ` Zeeshan Ali
  0 siblings, 0 replies; 17+ messages in thread
From: Zeeshan Ali @ 2005-05-26 20:00 UTC (permalink / raw)
  Cc: guile-user

Hello,

> Yes.  This is covered in general terms by the comments in my earlier
> email today, but for the specific problem you describe, all you need to
> do is:
> 
> - export `xchat-register-plugin' from your main infrastructure module,
> which let's say is (xchat main)
> 
> - document that plugin authors need to write `(use-modules (xchat
> main))' at the start of their plugin code.

   Yes, Rob suggested this method on IRC this evening, but it seems to
further complicate the maters as i was trying to unref one module
reference and this way i'll get two to worry about.

    One thing that i found out is that module can't really be
unloaded. E.g if i load a module (either using use-modules or
resolve-module), unload/unuse it (using the code you showed me), edit
the module and then load it again, i don't get my changes; instead the
same old version of module get's loaded, which means the module didn't
get unloaded.

Regards,

Zeeshan Ali


_______________________________________________
Guile-user mailing list
Guile-user@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-user


^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2005-05-26 20:00 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-05-23 14:03 Module unloading Zeeshan Ali
2005-05-23 18:18 ` Neil Jerram
2005-05-23 20:55   ` Zeeshan Ali
2005-05-23 21:23     ` Neil Jerram
2005-05-24 13:02       ` Zeeshan Ali
2005-05-24 18:15         ` Neil Jerram
2005-05-24 21:06           ` Zeeshan Ali
2005-05-24 21:26             ` Zeeshan Ali
2005-05-26 12:16               ` Zeeshan Ali
2005-05-26 18:33                 ` Neil Jerram
2005-05-26 20:00                   ` Zeeshan Ali
2005-05-26 18:25               ` Neil Jerram
2005-05-26 19:45                 ` Zeeshan Ali
2005-05-24 21:14           ` Rob Browning
2005-05-26 18:43             ` Neil Jerram
2005-05-26 18:57               ` Rob Browning
2005-05-26 19:05                 ` Neil Jerram

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).