Releases: smarr/SOMns
Extension Modules, Snapshots, Artifacts
The release includes extension modules, support for snapshot writing, and major
fixes for concurrency issues. The update to GraalVM 19 should eventually
bring Windows support.
For more reproducible research, SOMns comes now with a maintained artifact setup
out of the box.
New Features
- Add support for extension modules #252
- Object heap serialization #278, #271, #276
- Optimized tracing and restoring replay support #261, #257
- Added VirtualBox artifact #296, #299
Concurrency Issues
- Swap tracing buffers for blocked threads #297
- Renew Safepoint assumption only when invalid #291
- Blocking primitives cannot participate in safepoints #288, #286
- Fix object layout races #285
General Maintenance
- Update Truffle to >19.0.1 release #298
- Update Truffle to 1.0.0-rc5 #266, #295, #267
- Make the current instance of SomLanguage accessible for language server #277
- VMM'18 Demo and Kompos improvements #270
- Add Kent CI and update ReBench, Checkstyle, and Kompos dependencies #258
- Improve readability of Travis CI Logs by using folding #281
- Update basic-setup documentation #284
- Update list of publications in README #283
- Use CompilerDirectives::castExact instead of ValueProfiles #256
- Move Actor mailbox loop to Truffle #250
- Change Warmup in harnesses to simply disregard measurements #249
- Remove All.ns #248
Bug Fixes
- Set promise data fields to null on resolution #300, #294
- Fix Travis Error codes and Codespeed URL #287
- Minimize the Truffle-related building #282
- Remove dead code #275
- Fix potential NPE in ExpressionNode.toString #269
- Fix replay test flakiness #268
- Redesign Timer Prim #264
- Trace TimerPrim #262
- Ensure charAt: and file read/write are compatible with PE #260
- Signal exceptions without helper methods #251, #214
0.6.0 - Black Diamonds
The main goal of this release was to move more common code to the
Black Diamonds project. However, since this took a long time, many other
changes and improvements accumulated.
One of the most important changes for users is support for Java 9 and 10, which
simplifies using SOMns, because users do not need a custom Java 8 VM
any longer.
Another important user-facing change is the inclusion of our documentation into
the repository and its deployment to somns.readthedocs.io.
Black Diamonds
Major Improvements
-
Simplify setup and use of Graal by supporting Java 9/10 #232, #242
-
Included documentation into repo, and improve it #212, #222
-
Adopt Files and Streams libraries from Newspeak #220, #204, #190
-
Add support for Unicode codepoints to strings #217
-
Support n-ary Blocks, be strict, add
#cull:*
#215, #115, #94, #21
Added Benchmarks
New Interpreter Tooling
- Add tool to identify candidates for super-instructions #192
General Maintenance
-
Fix outer traversal to use lexical chain #238
-
Reduce race-related stack overflows, and handled invalid layouts in ClassSlotAccessNode #244
-
Adopt Economic collections of GraalVM to ensure insertion order #243
-
Handle method/mixin scope uniformly #233
-
Throw a proper SOMns Exception when a module isn't found #229
-
Colorizing terminal output #224
-
Start tracking Java coverage #221
-
Improvement debugger, transmitting partial arrays #200, #199
-
Improve accessibility for Language Server #195
-
Replace node constructors with explicit initialization #184
Bug Fixes
0.5.0 - More Newspeak
The main focus of this release is to improve compliance with the Newspeak
specification. Specifically, we added various language features to the parser
to be able to parse the Newspeak benchmarks and main repository with only minor
changes.
Newspeak Compatibility Improvements
-
Implement Newspeak setter send syntax and remove old assignment syntax #7, PR #170
-
Added support for Newspeak's full numeral syntax. This includes notation for
a radix and the exponent notation. Examples: 16rFFFF, 2r10.11, 3.7e3 PR #172 -
Added support for object literals. Because of parsing issues, we currently
use the keywordobjL
to identify literals. Otherwise, they are mostly
compliant the Newspeak specification.
#86, PR #112 -
Add Newspeak type annotation support and local variable initializer expressions PR #175
-
Add array literals PR #173
-
Change standard file extension to
.ns
PR #181 -
Various improvements in PR #178
- Support single quotes in strings as escape sequence
- Support literal characters
- Parse simultaneous slot definitions, but don't handle them yet.
- Support methods named
class
Changes for Development Setup
-
Added automatic formatting for Java code PR #131
-
Added automatic formatting of TypeScript code PR #167
General Maintenance
-
Fix handling of multiple stepping threads in Truffle PR #168
-
Ensure eager primitives get correct parent node set, and minor cleanup PR #171
-
Avoid block splitting when not necessary PR #177
-
Model promise BPs solely with onResolver and onResolution PR #169
-
Fix turn stepping operations, and introduce better actor testing framework PR #179
-
Update Truffle to latest version (>0.26) PR #163
-
Add missing
@TruffleBoundaries
for SubstrateVM PR #165 -
Simplify Object Model and add StorageAccessor PR #164
0.4.0 Concurrency-Agnostic Debugger
This release introduces concurrency-agnostic debugging based on Kómpos.
It is realized by using a debugger protocol that abstracts from concurrency
concepts and instead uses a uniform representation and meta data that instructs
Kómpos how to understand and visualize breakpoints, stepping operations, and
data visualization
- introduced a uniform trace format (PR #155)
- added process view
- refactor handling of breakpoints and stepping in interpreter and Kómpos
- added advanced stepping operations and breakpoints for STM, fork/join, actors, CSP, threads and locks
Other Enhancements
-
Switch to unified Truffle+Graal repo PR #149
-
Updated to Truffle 0.25 PR #132
-
Use precise array type check PR #128
-
Make Kómpos tests more robust, include more info on failures, and use ephemeral ports if necessary PR #144
-
Fix various single stepping issues PR #143
-
Fix
#perform:withArguments:
primitive PR #130 -
Make sure that
./som
without arguments does something useful PR #156
0.3.0 <Programming>'17 Demo
0.3.0 - 2017-04-06 '17 Demo
Features for the Demo
-
Added trace replay functionality (PR #109)
- Added
-r
flag to enable replay
- Added
-
Visualize all types of activities in system view (PR #116)
-
Block methods are named based on outer method's name
-
Enable display of code for unsuspended activities, i.e., activities not
hitting a breakpoint
General Maintenance
-
Revised design of promises and implemented erroring/breaking of promises
(PR #118) -
Updated to Truffle 0.24+patches, from pre-0.22+patches
-
Added
-J
flag for JVM flags, e.g.-JXmx2g
-
Removed Truffle Debug REPL support, i.e., the
-td
flag. Has been deprecated
in Truffle for a long time, and maintaining it seems not useful. -
Added
-vmd
flag to enable debug output
0.2.0 Extended Concurrency Support
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=
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)