SOMns 0.2 Release with CSP, STM, Threads, and Fork/Join
Since SOMns is a pure research project, we aren’t usually doing releases for SOMns yet. However, we added many different concurrency abstractions since December and have plans for bigger changes. So, it seems like a good time to wrap up another step, and get it into a somewhat stable shape.
The result is SOMns v0.2, a release that adds support for communicating sequential processes, shared-memory multithreading, fork/join, and a toy STM. We also improved a variety of things under the hood.
Note, SOMns is still not meant for ‘users’. It is however a stable platform for concurrency research and student projects. If you’re interested to work with it, drop us a line, or check out the getting started guide.
0.2.0 - 2017-03-07 Extended Concurrency Support
Concurrency Support
- Added basic support for shared-memory multithreading and fork/join
programming (PR #52)
- object model uses now a global safepoint to synchronize layout changes
- array strategies are not safe yet
- Added Lee and Vacation benchmarks (PR #78)
- Configuration flag for actor tracing, -atcfg=<config> example: -atcfg=mt:mp:pc turns off message timestamps, message parameters and promises
- Added Validation benchmarks and a new Harness.
- Added basic Communicating Sequential Processes support. See PR #84.
- Added CSP version of PingPong benchmark.
- Added simple STM implementation. See
s.i.t.Transactions
and PR #81 for details. - Added breakpoints for channel operations in PR #99.
- Fixed isolation issue for actors. The test that an actor is only created from a value was broken (issue #101, PR #102)
- Optimize processing of common single messages by avoiding allocation and use of object buffer (issue #90)
Interpreter Improvements
- Turn writes to method arguments into errors. Before it was leading to confusing setter sends and ‘message not understood’ errors.
- Simplified AST inlining and use objects to represent variable info to improve details displayed in debugger (PR #80).
- Make instrumentation more robust by defining number of arguments of an operation explicitly.
- Add parse-time specialization of primitives. This enables very early knowledge about the program, which might be unreliable, but should be good enough for tooling. (See Issue #75 and PR #88)
- Added option to show methods after parsing in IGV with
-im
/--igv-parsed-methods
(issue #110)