Releases: bThink-BGU/BPjs
0.12.3 Usability Boost
This release focuses on 3 main areas: usability, usability, and usability. Main updates include:
- Moved to Rhino 1.7.14. This means many new features, including template strings and better Java interoperability. See full list on Mozilla's site.
- Printing problematic b-thread's name during serialization errors.
- Custom serialization for the common and non-serializable
java.util.Optional
and JavaScript'sSet()
. This also sets the foundation for customized serialization. - Improved wrapping of Java objects as they come to JavaScript: Java strings are now treated as native JS strings, so using the
===
operator works as expected. - Verification stops on ECMAScript errors, instead of hanging.
- Improved error reporting when trying to sync outside of a b-thread.
- Informative error message when requesting a list of events and one of the events is
null
. - Logging is turned off by default during verification. Call
BPjs.setLogDuringVerification(true)
to enable them again. Of course, log messages are hardly sequential during verification, so logging won't make sense in this context in most cases.
0.12.2 - Field Feedback 2022-02
This release is based on field feedback. It offers improved reliability, more informative error messages, better detection of JS errors, easier sub-classing for BEvent
, and more (see README for full details).
Thanks everyone who contributed to during the first BPjs hackathon!
Better Embedding
This release improves how BPjs behaves when embedded in a bigger program. The client code can now adjust BPjs' multi-threading behavior, and redirect its logging stream.
As usual, this release also includes bug fixes and small improvements to the code and documentation.
Thanks to all who contributed to this release!
Native State Comparison FTW
The main great big news (:tada:!!) about this release is that BPjs now uses native Rhino logic to perform b-program synchronization point comparisons. The new comparison logic makes b-program analysis more robust and accurate. This feature required code contributions to Rhino itself (designed and implemented by @szegedi, PI-ed by @geraw), and changes to BPjs (by @eggsterino ).
Additionally, this release implements a friendly logging feature (suggested by @ZvikaZ), proper organization of the JavaScript spaces (which allows a lot of reuse), improvements to priority-oriented event selection strategies, more tests, and less bugs.
Many thanks to all who contributed!
The usability-focused release that adds more usability. And focus.
This release has many usability improvements, including:
- Event set composition methods (
eventA.or(eventB)
) bp.eventSets
convenience object that supports methods such asbp.eventSets.anyOf( eventA, eventB)
- Logger supporting formatted output:
bp.log.info("hello {0}", worldObj)
. - Improved error reporting
- Improved
toString
support of Java and JavaScript objects.
Under the hood, lot's of cleanups took place. The pom.xml
is now leaner, the serialization is more efficient and JS-correct, and numerous bugs have been squashed.
B-Program and B-Thread Data
Many updates and fixes. Most importantly:
- B-Threads have data object they can use (
bp.thread.data
) - B-Program has a global map which allows b-threads to share data and keep b-program history (
bp.store
). - It is OK for multiple b-threads to have the same name.
Internal Updates and Error Reporting
- Improved reporting of JavaScript errors.
- Internal changes of how events are reported to listeners.
- More tests, mainly around errors and scoping.
BThread-global objects
0.10.6 Fixed JavaDoc bug for JDK>8
Rhino Update
This release includes various cleanups and bug fixes. But most importantly, it contains an updated version of the internal JavaScript engine. We're now using Mozilla Rhino 1.7.12.
JS Error Resilience
This release adds:
- Resiliency to JavaScript errors: if there's an error at the JavaScript level (e.g. calling methods of a
null
reference), the host code listener gets a proper error callback (and not a runtime exception). During verification, this becomes a violation. - Fixed a bug in the verifier, which cause some edges not to be inspected.
- Other improvements as well, but rather minor.