Re: no constants please Richard Kelsey (04 Jan 2004 18:11 UTC)
Re: no constants please felix (04 Jan 2004 19:25 UTC)
Re: no constants please Richard Kelsey (04 Jan 2004 20:08 UTC)
Re: no constants please Tom Lord (04 Jan 2004 21:13 UTC)
Re: no constants please Tom Lord (04 Jan 2004 21:43 UTC)
Re: no constants please Richard Kelsey (04 Jan 2004 22:59 UTC)
Re: no constants please Tom Lord (05 Jan 2004 00:50 UTC)
Re: no constants please Tom Lord (05 Jan 2004 01:19 UTC)
Re: no constants please Richard Kelsey (05 Jan 2004 11:42 UTC)
Re: no constants please Tom Lord (05 Jan 2004 16:26 UTC)
Re: no constants please Richard Kelsey (05 Jan 2004 17:49 UTC)
Re: no constants please Tom Lord (05 Jan 2004 18:24 UTC)
Re: no constants please Michael Sperber (05 Jan 2004 18:48 UTC)
Re: no constants please Tom Lord (05 Jan 2004 22:00 UTC)
Re: no constants please Michael Sperber (06 Jan 2004 07:42 UTC)
I don't believe in "(may GC)" Tom Lord (05 Jan 2004 00:55 UTC)
Re: I don't believe in "(may GC)" Richard Kelsey (05 Jan 2004 12:07 UTC)
Re: I don't believe in "(may GC)" Shiro Kawai (05 Jan 2004 12:45 UTC)
Re: I don't believe in "(may GC)" bear (05 Jan 2004 18:16 UTC)
Re: I don't believe in "(may GC)" Tom Lord (05 Jan 2004 16:35 UTC)
Re: I don't believe in "(may GC)" bear (05 Jan 2004 17:54 UTC)
Re: I don't believe in "(may GC)" tb@xxxxxx (06 Jan 2004 01:39 UTC)
Re: I don't believe in "(may GC)" Michael Sperber (06 Jan 2004 07:39 UTC)
Re: no constants please Tom Lord (05 Jan 2004 01:05 UTC)
Re: no constants please Tom Lord (05 Jan 2004 01:12 UTC)
Re: no constants please Richard Kelsey (05 Jan 2004 12:17 UTC)
Re: no constants please Tom Lord (05 Jan 2004 17:40 UTC)
Re: no constants please Michael Sperber (05 Jan 2004 19:03 UTC)
Re: no constants please tb@xxxxxx (06 Jan 2004 01:37 UTC)
Re: no constants please Richard Kelsey (06 Jan 2004 02:15 UTC)
Re: no constants please Tom Lord (06 Jan 2004 02:29 UTC)
Re: no constants please tb@xxxxxx (06 Jan 2004 02:31 UTC)
Re: no constants please Richard Kelsey (06 Jan 2004 03:10 UTC)
Re: no constants please tb@xxxxxx (06 Jan 2004 03:14 UTC)
Re: no constants please Tom Lord (06 Jan 2004 04:06 UTC)

Re: no constants please Tom Lord 05 Jan 2004 18:50 UTC


    > From: Richard Kelsey <xxxxxx@s48.org>

    >    From: Tom Lord <xxxxxx@emf.net>

    >    In short, the FFI requires a root set of unbounded size and
    >    unrestricted locality:

    > Yes, just like Scheme's CONS requires a heap of unbounded
    > size.  No FFI is going to make all programs using it run in
    > all implementations.

How is that "just like CONS" other than the coincidence of the word
"unbounded"?

The issue with CONS is that it can be used to consume all available
memory.

The issue with root set size in the draft is that, far short of
consuming all available memory, it can grow too large for an
incremental collector to handle incrementally -- yet a simple change
to the FFI would eliminate that problem.

In the case of CONS's unboundedness -- we're talking about programs
that _could_not_run_ on the available hardware.  In the case of root
set unboundedness -- we're talking about programs that the FFI will
not permit to run well with some implementations because the FFI
author's had some curious opinions about the aesthetics of C interface
syntax.

    >    The problem goes away if the FFI imposes barriers over GCPROtected
    >    values.

    > It wouldn't take much of a change to do this.  A macro like
    >    SCHEME_SET_GLOBAL(location, value)
    > would do it.  A similar macro would work to support a read
    > barrier, but I believe that those are significantly less common.

Ok, I'll take that as half-a-concession.   Such a change would be an
incremental improvement to the FFI, so to speak :-)

Please additionally consider that:

  ~ I think if you google around long enough for incremental GC
    literature you can find arguments that blacken-on-read is
    better.   I _think_ it was Dijkstra that made this case but
    I'm sorry I don't have the reference handy.   In any event,
    we have many more years of collective experience to gain before
    we can rule out wanting read barriers (whether for incremental
    GC or for some other purpose entirely).   Since it is not
    hard to modify the FFI to not preclude read barriers ....

    (And, incidentally, an example of where you will want a
    read barrier _other_than_ for incremental GC is if you are
    swizzling in objects from a persistent store.)

  ~ More to the point, if you're willing to make that concession we
    should also begin to consider questions of _regularity_ in the
    FFI.  Why a special case for global locations?  Why not make a
    similar macro for locals?

    And: If you eventually come around on passing parameters by
    address rather than value, then why should the assignment
    macros follow a different convention?   If they expect an
    address where you would have them expect an rvalue, that
    will (a) make them more consistent with everything else and
    (b) permit implementations which impose a read barrier.
    If you come around on parameter passing, that is.

-t