Processes branch
The processes branch of muSE has now reached a fair degree of completeness. This post documents the facilities available as of version 82, whose snapshot is available in the tag v0.2cp. I intend to make the processes branch the main trunk when the functionality is a bit more tested.
The processes branch implements a few significant features over and above the standard muSE engine on the trunk -
- Processes
- A simple implementation of Erlang style message passing processes in order to express concurrent computations. Primitives added are spawn, receive, atomic and run.
- Process-local continuations
- Continuation support modified to work within a process. Continuation invocation across process boundaries is forbidden. No new primitives.
- Process-aware networking
- muSE had some simple s-expr based communication functions all along. This branch now has these functions process aware - i.e. reading from a network port will not stall processes. A polling mechanism (which is invisble at the scheme-level) is used to handle all connections.
- Resumable exception mechanism
- New primitives try and raise provide the means to raise, handle and resume exceptional conditions. This is something muSE had been lacking all along and was badly needed.
- Static guarded patterns (minor)
No comments:
Post a Comment