Skip to content

Latest commit

 

History

History
185 lines (152 loc) · 10.6 KB

changelog-2017.md

File metadata and controls

185 lines (152 loc) · 10.6 KB

Changelog for 2017

2017-12-28

  • ⬆️ Re-arranged package structure, duplicate and ambiguous packages merged. We now have a clean model/execution/analysis division.
  • 🐛 Fixed an equality bug in OrderedSet.

2017-12-22

  • 🐛 BSyncStatements now retain information about the b-thread that created them.
  • ⬆️ Now using a single ExecutorService for the entire JVM (OK, per class-loader). This makes runtime more efficient, resource-wise.
  • 🔄 Using cached thread execution pool instead of the fork-join one (the former seems to make more sense in a BP context).
  • ⬆️ The Java threads executing the b-threads now have specific names: bpjs-executor-N (where N is a number starting at 1).
  • ✨ New method: bp.getJavaThreadName: Returns the name of the Java thread executing the b-thread while this method was called.
  • 🎉 Some changes in this version were requested by actual users. 🎉
  • ✨ Documentation updated to mention verification (full-length text to be added post-paper).
  • 🐛 BThreadJSProxy.get/setBthread updated to use capital T, like the resp fo the code.
  • 🔄 Test clean-up
  • 🔄 Documentation clean-up

2017-11-24

  • BProgram allows appending and prepending source code programmatically, using appendSource and prependSource. These can be used to add environment simulation without touching the simulated model. Or just to act as includes, e.g. for common set-ups.
  • ✨ Added new class: PathRequirements, to hold path requirements that do not require state (e.g. "no deadlock").
  • DfsBProgramVerifier now has a "debug mode" (set/get via get/isDebugMode). On debug mode, it prints verbose information to System.out.
  • ✨ Added new class: BThreadStateVisitedNodeStore, looks only into the states of the b-threads when deciding whether a search node was already visited or not.
  • 🐛 InMemoryEventLoggingListener cleans its event log when a run begins, so it can be reused for multiple runs.
  • 🔄 Reduced method accessibility in BProgram, so subclassers have harder time getting into trouble.
  • :put_trash_in_its_place: BProgramListener renamed to BProgramRunnerListener, since that is the object it listens to.
  • :put_trash_in_its_place: NoDeadlock class deleted. Use PathRequirements.NO_DEADLOCK instead.
  • PathRequirements.ACCEPT_ALL, is a new requirement that's always true. Useful for scanning a program state space.

2017-11-23

  • ⬆️ DfsProgramVerifier uses FullVisitedNodeStore by default (preferring correctness over speed in the default case).
  • ⬆️ Updated the Dining Philosopher example to use advanced features. Also added it as a unit test.
  • 🚮 Removed validation package.
  • ContinuationProgramState correctly captures updated variable values. 🎉

2017-11-02

  • ✨ the DfsBProgramVerifier is now accepting requirement objects over execution paths, instead of the hard-coded deadlock check.
  • ✨ new PathRequirement class. Requirements are passed to the verifiers for making sure the program conforms to them. Two implementation already present:
    • NoDeadlock Breakes when there's a deadlock
    • EventNotPresent Breaks when the last event in the ongoing path is a member of a given event set.
  • ✨ the DfsBProgramVerifier is now using listener architecture for reporting progress.
  • ✨ new event set from bp: bp.allExcept(es).
  • ⬆️ Efficient path stack implementation for BfsBProgramVerifier (no copying, reversal, etc.)
  • ⬆️ Mazes.java Updates to fully use the new verifier features

2017-10-30

  • ⬆️ Re-created program state cloning based on code from @szegedi. Cloning is now faster, more efficient, and can handle storage of events.

2017-10-16

  • ✨ New base class for implementing event selection strategies.
  • OrderedEventSelectionStrategy - A new event selection strategy that honors the order in which events are requested by a given b-thread.
  • PrioritizedBThreadsEventSelectionStrategy - A new event selection strategy that can assign priorities to b-threads.
  • PrioritizedBSyncEventSelectionStrategy - A new event selection strategy that allows b-threads to add priority to their bsyncs.
  • ⬆️ LoggingEventSelectionStrategyDecorator also logs selectable events
  • ⬆️ BProgram acts nicer when it has a null event selection strategy.

2017-09-10

  • ✨ Updated to Rhino 1.7.7.2.

2017-08-18

  • ✨ Initial verification added. DfsBProgramVerifier scans the states of a BProgram using DFS, and can return traces where there are no selectable events.

2017-08-06

  • ✨ Added a class to compare continuations (base for comparing snapshots).

2017-07-05

  • bsync now has an extra parameter, allowing b-threads to pass hinting data to custom EventSelectionStrategys.
  • 🔄 Moved event selection strategy to BProgram.
  • ✨ Added a mechanism to log the BProgramState at sync points.

2017-06-08

  • ✨ Added documentation for embedding BPjs programs in larger Java apps.

2017-05-16

  • ✨ README includes a more prominent reference to the documentation.

2017-05-10

  • ✨ Added an adapter class for BProgramListener.
  • 🐛 Fixed issues with adding objects to the program's scope.

2017-04-08

  • 🚮 Cleaned up the BProgramRunner-BProgram-BProgramSyncSnapshot trio such that listeners don't have to be passed around between them.
  • ✨ Cloning of BProgramSyncSnapshot ready. This is the basis for search.

2017-03-22

  • ✨ New architecture: Running logic moved from BProgram to BProgramRunner - ongoing.
  • BProgramListeners notified before BPrograms are started.
  • 🐛 Fixed a bug where dynamically added b-threads that were added by other dynamically added b-threads would run one cycle too late.
  • 🐛 Fixed a bug where external events enqueued from top-level JS code where ignored.

2017-03-21

  • ✨ New architecture: Running logic moved from BProgram to BProgramRunner. This will help implementing search.
  • BProgramListeners notified when a b-thread runs to completion.
  • bp.getTime() added.
  • ✨ Updated tutorial now includes the bp object.

2017-03-15

  • 🚮 Simplified the examples test package.
  • 🚮 all and none are now only available via bp.
  • 🔄 cleaner scope structure..

2017-03-14

  • 🔄 Internal method name clean-ups.
  • 🚮 Removed unneeded initializations.
  • 🐛 Program and bthread scopes are treated as scopes rather than prototypes.
  • ✨ B-Thread scope games eliminated 🎉. Dynamic b-thread addition is now possible from within loops etc. Tutorial updated.
  • ✨ More tests.

2017-03-02

  • bp.random added.
  • 🔄 Documentation updates
  • ✨ Added java accessors for putting and getting variables in the JS program
  • 🔄 fat.jar is now uber.jar.

2017-02-03

  • ✨ the standard .jar file now contains only BPjs, and no dependencies. Fat jar (the jar that includes dependencies) is available via the releases tab.

2017-02-02

  • 🔄 Events class renamed to EventSets. Some cleanup.
  • 🔄 emptySet is now none.
  • 🔄 all and emptySet are now available to BPjs code via bp.all and bp.none. This is to prevent name collisions with client code.
  • 🐛 Fixed an issue with the logger, where logging levels were ignored.
  • ✨ Log level can be set by BPjs code, using bp.log.setLevel(l). l is one of Warn, Info, Fine.

2017-01-16

  • ✨ Updated documentation to refer to Maven Central
  • 🐛 RunFile re-reads files from file system again.
  • 🔄 More dead code removal.

2017-01-14

This release in focused on better BPjs-programmer experience and getting the code into a maven-central quality grade.

  • 🐛 Fixing Javadoc references.
  • 🚮 Positional bsync removed.
  • ✨ Better error reporting on event sets defined in JavaScript.
  • ✨ Better error reports for generic JS errors.
  • ✨ Added StringBProgram: a new class for running BPjs code from a String (rather than a resource or a file).

2017-01-13

  • ✨ Adding a BThread is idempotent. Previously, if a BThread was added twice, it would run twice with unexpected results.
  • ✨ Basic engine exceptions, plus a friendlier error message when calling bsync outside of a BThread.
  • 🔄 More Javadocs and code cleanup (mostly dead code removal).

2017-01-12

  • ✨ License (MIT)
  • ✨ Preparations for Maven Central
  • 🔄 More Javadocs and code cleanup.

2017-01-05

  • RunFile can now accept multiple BPjs files for input, and runs them as a single BProgram. It also has improved help text.

2017-01-03

  • ✨ Added continuous code coverage with Coveralls.io (Thanks guys!).
  • ✨ Improved test coverage.

2017-01-02

  • ✨ Added continuous testing with Travis-CI (Thanks guys!).
  • 🎉 Moved from native NetBeans to maven project 🎉 🎉 ✨
  • 🐛 Various small issues fixed thanks to static analysis (and NetBeans' Code Inspection tool).
  • 🔄 Moved to canonical package structure (il.ac.bgu.cs.bp.*).

2017-01-01

  • ✨ Re-arranged code to minimize amount of Context.enter-Context.exit pairs (~x5 performance factor!)
  • ✨ Simplified mechanism for handling event selection in BProgram. Replaced a complex Visitor pattern with Java8's Optional.
  • 🔄 Improved efficiency for external events handling.
  • ✨ More tests for SimpleEventSelectionStrategy.
  • ✨ More documentation.
  • ✨ Better error messages.
  • 🚮 Removed unused code from BProgram.
  • 🚮 Removed non-serializable Optional from fields.

Earlier Changes

Legend:

  • 🔄 Change
  • ✨New feature
  • 🚮 Deprecation
  • ⬆️ Upgrade
  • 🐛 Bug fix