Bless me, Schemers, for I have Schemed. It has been 19 months since my last confession and I collapse wave functions with you now only because of a potent portent of fascinating fun.
Brothers, rejoice with me! I have an SMP world running multiple Scheme machines! So far they only execute an SMP-IDLE primitive, but they can wake up, service the global-gc interrupt, and get back to idle, multiple times! I haven't dared run anything fancier than that one interrupt handler, which does little more than apply the SMP-GC-WAIT primitive and return. There are a few more things to prepare before I let loose the threads of fun. I wrote an overview of how all the interlocking works (or is intended to work) and put it in the top-level directory in a file named README.txt in my SMP branch. If you are tempted to take more than a gander, be forewarned that I have been liberally rebasing. In fact, I have split up the original big proof-of-concept convulsion/commit into more easily digested chunks, just for y'all. The first few commits e1a309d smp: Clobber fluid-let and the (runtime state-space) package. f352b2a smp: Accommodate multiple processors. 3b272b5 smp: Serialize access to (runtime thread) internals. might find their way onto master in spite of their cost. (Finding the current-thread is no longer as simple as accessing a variable. It requires a tiny primitive apply to get a processor id followed by a vector lookup.) (You'll never feel it.) There is still much to do before I want to run on multiple cores. I think first SOMEONE should review the use of without-interrupts in the runtime system. It is no longer atomic. And SOMEONE should look at every global variable in the microcode. Each deserves to be thread-local or protected by explicit serialization. SOMEONE is going to be very busy. Yours in Scheme, SOMEONE $ git remote add puck git://birchwood-abbey.net/~matt/mit-scheme.git $ git fetch puck SMP $ git checkout puck/SMP $ cd src/ $ ./Setup.sh $ ./configure --enable-smp $ make tags all check _______________________________________________ MIT-Scheme-devel mailing list MIT-Scheme-devel@gnu.org https://lists.gnu.org/mailman/listinfo/mit-scheme-devel