Eclipse Epsilon 2.0 Release Review

End Date of the Review Period

Reviews run for a minimum of one week. The outcome of the review is decided on this date. This is the last day to make comments or ask questions about this review.




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.
  • Support for native lambda expressions, allowing Java functional interfaces to be invoked using EOL/OCL/JavaScript lambda syntax.
  • 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).
Architectural Issues

No architectural issues related to this release.

Security Issues


Non-Code Aspects

We've migrated from using the deprecated old-style "Update Manager" update sites to a P2 update site. Furthermore, we have made the stable update site a composite, allowing users to choose the version to install. We've also added our project to the Oomph Installer (under Applications), making it much easier to install Epsilon without having to hunt down update sites for dependencies, start with a modeling distribution etc. We've also reflected these changes in the website, and as usual have added articles and doumentation regarding major changes as well as updating existing articles to reflect new developments.

We are in the process of migrating to mkdocs so that the website is reponsive, and the documentation is more easily accessible, since currently we build "EpsilonBook.pdf" in the main repo, which requires re-compiling LaTeX project and m=pushing a multi-MB PDF every time. Our plan is to get rid of this and have all documentation in one place, making it easier to search and find.

Conforms To UI/UX Guidelines
Not verified
Usability Details

Users can customise parameters to the execution engine under the Advanced tab. In particular, this is useful for selecting the execution strategy. For example, users can choose the number of threads to use for the parallel implementation, which is set to a sensible value by default. We've tried to ensure everything works as expected with the user not needing to make any changes from the default, and everything still working as expected. To further demosntrate this, in Simulink the user no longer needs to manually populate the engine JAR and library paths: we can automatically find a MATLAB installation on all supported operating systems and infer the required paths - no user input needed.

End of Life

Concordance has been removed.


Epsilon is at the forefront of some cutting-edge research in MDE and so naturally the community encompasses academics but also its industrial users. A number of conference papers have been written based on contributions to Epsilon by Epsilon committers.

As usual, we continue to respond to forum posts and Bugzilla reports. In particular, we have reviewed our entire backlog of bugs on Bugzilla prior to this release and made every effort to address concerns where feasible for this release.