Can someone from the Self group provide some details on processes and process scheduling in the next realease of Self.
Shaun M. Smith (ssmith@joplin.mpr.ca / ssmith%joplin.mpr.ca@relay.ubc.ca)
The VM provides a set of primitives to create and destroy processes and to program timers. In addition, there is one primitive (called TWAINS for "Transfer [to a given process] and WAIt for Next Signal") which does exactly what the name says. The VM does absolutely no scheduling; a TWAINS will transfer to the given process and run it until some signal or special event occurs. Typically, this would be 'timer expired', 'process yielded', or a SIGIO signal.
We have implemented a (rudimentary) scheduler and some basic facilities like Semaphores and non-blocking I/O (all written in Self). Right now, the scheduler is a simple preemptive round-robin scheduler with no priorities, but since it is written in Self you can implement whatever scheduling policy you want.
Will the new system allow non-LIFO blocks? -- Bill
No. As explained by Craig, you can emulate some of the functionality with objects, and we feel that the benefits of non-LIFO blocks do not justify the additional complexity of implementation.
-Urs
self-interest@lists.selflanguage.org