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)
commitd724066ca963f974b47f1a51af13ff9d680392db
tree985165d3f94bc7023148fd97e54e16d310c83774
parent93dc0fe8c756185712ed79157e75b07392bc9ea8
0.9.5.61:
  * 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
NEWS
doc/manual/threading.texinfo
src/code/target-thread.lisp
src/runtime/thread.c
src/runtime/thread.h
src/runtime/x86-linux-os.c
version.lisp-expr