OCL/New and Noteworthy/2022-12
Eclipse OCL New and Noteworthy items for the 2022-09 (6.18.0) release.
Contents
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 e.name = 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 | e.name = 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.
Pivot
- 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.