- ⬆️ Improvements to the
BEvent
class, to make it better support client Java code.
- ✨ Added contribution guidelines (#139).
- ✨ Reference to the (finally) published paper describing the updated BPjs model semantics, w.r.t liveness (#99).
- ✨ Client code can change the execution services BPjs uses (#165).
- ✨
bp.log.XXX
can be redirected to print streams other thanSystem.out
. (#159). - ⬆️ Documentation updates.
- ⬆️ Improved performance of BTSS equality (#164).
- ⬆️ Removed broken JS code in tests (#153).
- ✨ ✨ 🎉 ✨ 🎉 ✨ 🌈 ✨ ✨ ✨ BPjs now uses Rhino's native continuation equality and hash code (#116. Also, 🎉 🌈 ✨.
- ⬆️ Scope and context creations across BPjs have been consolidated to utility methods in a new class called
BPjs
. - ⬆️ Event selection strategies that ignore the synchronization statement data field, issue a warning when b-threads put data there (#151).
- ⬆️ Default priorities in
PrioritizedBSyncEventSelectionStrategy
andPrioritizedBThreadsEventSelectionStrategy
can be changed (#115 and PR#147). - ⬆️ Updated docs.
- ⬆️
BProgram
uses an override-able protected method to access its global scope, in case you want to intercept these calls. - 🐛 Fixed an issue that caused
toString
for JavaScript objects to crash at certain cases (#145). - 🐛 Storage consolidation conflicts have proper
equals
andhashCode
.
- ✨
BProgramSyncSnapshot
s are serialized using a single stream, and with the b-program's original scope as a top-level scope ((#126). - ✨ BThread snapshots do not retain their entry point function after their first sync point. This results in lower memory footprint, and a more efficient de/serialization. These result in improved analysis performance and efficiency.
- ✨ Event sets (and, by inheritance, events) are now composable. So you can write, e.g.,
bp.Event("A").or(bp.Event("B")).negate()
to create an event set that contains all events exceptA
andB
. - ✨ Another easy event set composition/creation added:
bp.eventSets
gives access toEventSets
, with methods such asbp.eventSets.anyOf(...)
andbp.eventSets.not(...)
- ⬆️ Logging now allows formatting, using Java's MessageFormat.
- ⬆️ Expressive
toString
on JavaScript sets (#135). - ⬆️ Error messages when passing non-events to a synchronization statement are more informative (#131).
- ⬆️ Improved logging consistency (#132).
- ⬆️ Error messages when JS event sets do not return a
Boolean
are more informative (#138). - ⬆️ BThread data documentation updated (#134).
- ⬆️ BProgram storage can be updated by the b-program before b-threads run (#129).
- ⬆️ Changes made to the b-program store after the last sync of a b-thread are now applied (#130).
- ⬆️ More tests (logger, JSProxy, ScriptableUtils, OrderedSet, JsEventSet, some event selection strategies).
- 🐛 🎉 JS-semantics are applied for
equals
andhashCode
for b-thread and b-program data (#144). - 🐛 Fixed the note color issue in the documentation (#137).
- 🐛 Fixed the bench marker.
- 🐛 Fixes a crash when a JS event set predicate returns
null
instead of a boolean. - 🚮 Significant cleanup of the b-program I/O area.
- 🚮 Significant cleanup of the event set area. Some methods moved from
ComposableEventSet
toEventSets
. - 🚮 Some documentation updates and corrections.
- 🚮 Removed extraneous dependencies from
pom.xml
(#133).
Legend:
- 🔄 Change
- ✨ New feature
- 🎉 New feature, but more exciting
- 〽️ Refactor (turns out this sign is called "part alternation mark" and not "weird 'M'", so it fits).
- 🚮 Deprecation
- ⬆️ Upgrade
- 🐛 Bug fix