Documentation of ThreadPosix implementation as the light of understanding has finally shone on me and I wish to put down my observations for posterity.
Also an implementation of catching of SEGV and conversion into a RuntimeError instead. Mechanism is documented in ThreadPosix.m3: it is a hybrid of the SIGCHLD handling and what ThreadPosix already does to produce Thread.Alerted on a wake-up. Mechanism has been tested and appears to work: the former behavior was to quit execution unconditonally; now it is instead a catcheable exception. (detail)
Bring back per-target jmpbuf size in all its gory.. at least for now.. (detail)
Allow threads in state "pausing" to be woken up by signals, specifically, SIGCHLD, and use the mechanism for allowing Process.Wait to wake up instantly without busy-waiting. Follows design notes as published on the Modula-3 development mailing list, including care to ensure signal handlers aren't nested unnecessarily. (detail)
remove CVS Ids in keeping with CM3 repository practice (detail)
remove incorrect comments; Win32 is not broken (detail)
parallel back-end builds.
To enable, use -pb <n> flag, with n up to about ten (10) times the number of processors available, or set M3_PARALLEL_BACK in config files.
Any change in behavior relative to earlier versions with n = 1 (the default) would constitute a bug. (detail)
add ValueOfSIGSEGV: get value of SIGSEGV C header constant out in Modula-3 environment (detail)
add "forktoomuch" test to thread tester, which may create zombie processes (detail)
Blow the size up much much more -- as nothing uses the size here. Blowing it up might help us find out if anything does accidentally end up depending on the size. It'd be nifty if there was a way to really prohibit using the size. (detail)
Reword comment. Win32 isn't broken -- as in the Windows OS, but indeed the Modula-3 implementation here is completely broken and likely doesn't do anything at all, except attempt to kill a random process and raise an exception if that fails (random as in possibly nonexistant, possibly another unrelated process, or just barely possibly, the intended process.) (detail)
current TextReader from Caltech/Generation Capital repository, with bug fixes and enhancements (detail)
made sets of tests be in all caps. Three sets are provided
ALL = all tests coded in the program (including ones that legitimately misbehave) STD = all tests that "should work" without obvious misbehavior POSIX = STD,-lock (user threads may legitimately have fairness issues) (detail)
revert this, with a comment that the signal handler gets overridden: this will make the signal print a message and crash under pthreads and raise a RuntimeError.E exception under user ("POSIX") threads now, as desired. (detail)
reset reader and writer positions (avoids overflows on systems with small integers for the position of readers and writers) (detail)