Skip to main content
Jump to: navigation, search

OCL/New and Noteworthy/2022-12

< OCL‎ | New and Noteworthy
Revision as of 05:33, 20 June 2022 by (Talk | contribs) (Created page with "Eclipse OCL New and Noteworthy items for the 2022-09 (6.18.0) release. ==Release Overview== This minor release fixes a few bugs. ===Eclipse versions=== The prevailing Eclip...")

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Eclipse OCL New and Noteworthy items for the 2022-09 (6.18.0) release.

Release Overview

This minor release fixes a few bugs.

Eclipse versions

The prevailing Eclipse OCL release candidate is auto-tested every week on Oxygen, Photon, 2018-09, 2018-12, 2019-03, 2019-06, 2019-09, 2019-12, 2020-03, 2020-06, 2020-09, 2020-12, 2021-03, 2021-06 and 2021-09 platforms using Jenkins on Linux and the prevailing Java/project versions for the release.

2021-12 release should be installable on Mars and Neon platforms provided Xtext 2.9 or greater is also installed.

The 2022-09 sources may only be buildable on 2022-09.

Java versions

Java 8 on Windows was used to develop and test the milestones of this release. Following the Eclipse platform migration to a Java 11 minimum, development now uses Java 11, although standalone tests continue to use Java 8.

Java 12 on Windows was briefly used to maintain and test the 2020-06 release candidates. It appears to work although Java code generation/compilation seems nearly three times slower - see Bug 565563.

Java 11 on Jenkins, Linux was used to build and test the release candidates.

The Classic Ecore/UML plugins have been tested on Mars, Neon, Oxygen and Photon and on a Java 5 Virtual Machine. Standalone execution requires only the org.eclipse.osgi plugin from Eclipse Kepler or a spoof of org.eclipse.osgi.util.NLS and org.eclipse.osgi.framework.

The Pivot plugins require at least a Java 8 Virtual Machine and at least Xtext 2.9.1. Testing on Oxygen has a couple of test failures. Testing on Mars and Neon has a few editor/console startup failures.

Milestone 1

A 6.18.0M1 was made available on 10-Jan-2022, but development reverted to 6.17.1.

When iterating an ordered collection, it is sometimes necessary to know the collection index of the iterator necessitating an inefficient and imprecise list search:

  aSequence->forAll(e | let index = aSequence->indexOf(e) in = index.toString()) 

The iterator declaration may be extended by a with keyword to include a co-iterator may be introduced using the with keyword to make use of the precise value that the evaluator already knows.

  aSequence->forAll(e with index | = index.toString()) 

The co-iterator for Maps has been revised to be consistent; the use of <- punctuation rather than with keyword lacked mnemonic quality and consistency.

  aMap->forAll(key with value | key = value.toLower())

The primary iterator is over the collection view of the aggregate. The co-iterator is optional added-value.


  • 519896 exists/forall may have three iterators
  • 571846 OCLThread intridiced to ease use of one OCL per thread
  • 574431 e.g. EInt and Integer now co-exist with fewer (? no) problems
  • 577427 null-free collections can be specified by a root package EAnnotation
  • 577614 ordered collections may have co-iterators
  • 577887 allInstances is now a regular metatype rather than magic static type
  • 577887 add BooleanType
  • 577887 use ThreadLocalExecutor to discover the allInstances() domain
  • 577928 OCL embedded in EAnnotations is now validated again
  • 578030 All referenceable Pivot AS elements now have xmi:ids
  • 577889 Code generated code now has consistent metatypes
  • 577902 Spurious static features eliminated from OCL Standard Library
  • 578981 Ecore to OCLinEcore serializer uses minimal qualification for qualified names

Milestone 1a

To avoid confusion the Jul-2022 milestone 1 is named 1a.

Milestone 2

Milestone 3



Back to the top