This is the mail archive of the guile@cygnus.com mailing list for the guile project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Marking smobs for GC


Marius Vollmer <mvo@zagadka.ping.de> writes:

> Greg Harvey <Greg.Harvey@thezone.net> writes:
> 
> > [guardians]
> > It's quite a schemy notion, really, being somewhat abstract and
> > allowing you to implement all sorts of funky data structures.
> 
> Yes, looks like a implemented something like a guardian but without
> letting Scheme take control.  I think the main feature of a guardian
> is that it allows Scheme code (which normally can't be run during GC)
> to cooperate with the GC.
> 
> > There is a paper out there somewhere, but I can't remember where I
> > got it (probably at www.schemers.org)
> 
> Yep, I think I read that when it was first mentioned on the list, but
> I would have to page the details back in.
> 

Oops, the paper is actually at the scheme repository
ftp://ftp.cs.indiana.edu/pub/scheme-repository/doc/pubs/guardians.ps.gz

Since guile-gtk was the topic, there's a little problem compiling with
gtk-1.0.6 (yeah, I know, but after a few years trying to keep a
mongrel slackware system together, I'm mostly sticking with `official'
redhat rpms... if I were to enumerate the number of ways I'd like to
spend my time, sysadmin comes just before violent beating with a
frozen tuna). It only requires a one-line diff, so maybe you could put
a patch into the distribution (and a big 'yer on yer own' warning :)

*** guile-gtk.c~	Sat Jan 16 22:13:51 1999
--- guile-gtk.c	Thu Jan 21 03:28:09 1999
***************
*** 1996,2002 ****
    info.class_size = parent_info.class_size;
    info.class_init_func = NULL;
    info.object_init_func = NULL;
!   info.base_class_init_func = NULL;
  
    return gtk_type_unique (parent_type, &info);
  }
--- 1996,2002 ----
    info.class_size = parent_info.class_size;
    info.class_init_func = NULL;
    info.object_init_func = NULL;
!   info.class_init_func = NULL;
  
    return gtk_type_unique (parent_type, &info);
  }

-- 
Greg