0.9.5.61:
authorGabor Melis <mega@hotpop.com>
Sat, 15 Oct 2005 08:40:36 +0000 (08:40 +0000)
committerGabor Melis <mega@hotpop.com>
Sat, 15 Oct 2005 08:40:36 +0000 (08:40 +0000)
  * threads don't inherit values of specials from their parents
    anymore because:

    1) dynamic-extent

    Suppose your package has a non-exported special, binds it,
    promises it's going to be dynamic extent and proceeds to call user
    code. The user code spawns a thread and the promise is broken.

    2) gc

    It's hard to control giving out references to objects. Yeah, it's
    similar to 1), but the colour of the smoke is different.

    3) scaling

    When starting up, a thread is given a snapshot of the parent
    thread's current values for dynamic variables. This means that the
    minimum memory required by a thread is proportional to the number
    of specials.

    1) and 2) are addressed by this change, 3) is not.

  * not having lisp objects in unstarted threads allowed undoing
    thread start vs gc recomplication and un-reinstating
    STATE_STARTING


No differences found