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: gc notes available


hjstein@bfr.co.il (Harvey J. Stein) writes:

> 1. Tcl/Tk avoids long GC pauses by never garbage collecting.  The
>    process grows without bound over time.  Would you prefer this?

No.  I claimed that a "GUI is a typical thing to write in a scripting
language".  Then I used Tcl/Tk as an example because you typically do
the GUI in Tcl/Tk.

> 3. Emacs has a non generational GC that's on the slow side.  Does its
>    pauses cause a significant degradation of it's UI?

I don't think this is a fair comparison since you are less sensitive
to short pauses in a keyboard/text-based application such as Emacs.
Responsiveness is more important in a GUI.  It needs to have a "stable
feeling".

(But before I got my Ultra machine I *was* disturbed a lot even in
 Emacs precisely because of irregular delays of response.)

> 4. I wrote a tetris game for STk.  It has a non generational
>    conservative GC.  The pauses are unnoticable because I increased
>    the heap allocation at the beginning & call gc at times when it
>    won't be noticable to the user.

Well, what can I say.  I have a GUI for my simulator written in Guile
and it doesn't feel nice to interact with due to the irregular short
pauses.  But then I didn't change heap allocation or call gc.

I'm a little bit afraid of relying on such things because I imagine
that there are situations where it is hard to avoid GC even with these
measures.  I also would prefer not to have to think of these kind of
things when writing scripts in Guile.  GC is supposed to relieve the
user from thoughts about memory resources.  I would like to be
relieved from thinking about GC as well.  Finally, such measures
(calling GC at the dynamically right places) could have a bad
influence on program structure.

> 6. How often do you have to wait for programs to do things in general?
>    I often have to wait for netscape, make, gcc, ... and none of them
>    have gc.  Why is waiting for gc a big deal, but waiting for DNS
>    resolution, or page formatting, or anything else acceptable?

I haven't claimed that waiting for GC is a big deal in general.  I
claim that it is a big deal when you're writing GUI code in Scheme.

> You stated that if the gc always scans all of memory then the gc
> pauses can be long, and if the gc pauses are long then it's bad for
> the GUI.
> 
> The real issue is *how* big, *how* long, and *how* bad.

Agreed.  I want a behaviour "smooth" enough not to have to worry about
GC when writing GUI:s.

/mdj