There have been well over 1500 commits to Epsilon since 1.5, with many major changes, improvements, over 70 bug fixes, optimisations and new features in almost every aspect. A summary of the most prominent changes:
- Major refactoring / tidying up of code, leading to improvements in performance and extensibility.
- Short-circuiting mode for EVL: stop execution when any constraint is violated.
- Parallel execution capabilities for EOL declarative operations, EVL, EGX, ECL and EPL.
- EVL ConstraintTrace optimisation (enabled by default): only adds targets of dependencies to the trace.
- Common FunctionalInterface type constructors, e.g. runnable, supplier, function, consumer.
- Ternary operator which works anywhere an expression is expected.
- Thread-safe types: ConcurrentBag, ConcurrentMap, ConcurrentSet.
- RefactoredIPropertyGetter / IPropertySetter interfaces to be stateless.
- New EOL operations: count - an optimised select.(...).size() and NMatch - a short-circuiting way to do select.(...).size() [size comparison] [integer literal].
- [NEW] Picto: infrastructure for orchestrating model visualisation through lazy model-to-text transformations.
- [NEW] Flexmi: Allows for construction of EMF models using XML with shorthand notation based on string similarity.
- Numerous improvements and additions to the Simulink EMC driver.
- Major improvements to dependency management, feature.xml files, releng etc. - relying on Orbit where possible for third-party dependencies.
- Removed Concordance as it's no longer maintained or useful (supercedeed by Hawk)
- An API for easily running Epsilon programs standalone, with support for fine-grained rule profiling (i.e. more detailed than is available from the standard Epsilon profiler), parallel execution, repeating etc. - useful for testing, benchmarking and a concise way for users to run Epsilon without requiring deep knowledge of the internal structure.
- Setup files for Oomph.
- Self-contained P2 update site (we were using old-style pre-P2 "Update Manager" sites before).
Wednesday, May 20, 2020
Major release (API breakage)