OCL/New and Noteworthy/2022-12
Eclipse OCL New and Noteworthy items for the 2022-12 (6.18.0) release.
This minor release fixes a few bugs.
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-12 sources may only be buildable on 2022-12.
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.
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.
- 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
To avoid confusion the Oct-2022 milestone 1 is named 1a.
- 496810 Code generated code now has consistent metatypes
- 541380 OCLstdlib editor no longer needs restarting to clear errors
- 578981 Ecore to OCLinEcore serializer uses minimal qualification for qualified names
- 579025 Stale error markers fixed (premature LUSSID creation avoided)
- 579051 Inefficient creation of multiple orphanages fixed
- 579152 OCLstdlib-defined classes may now have an instanceClassName
- 580139 Type-typed arguments such as oclIsKindOf may be expressions
- 580363 Saving an ASResource no longer relocates orphan references
- 580419 Subtle issues with stale specializations fixed.
- 580143 Introduce oclBase() and oclExtensions() and oclExtensions()
- 579604 use of org.apache.commons.lang eliminated avoiding 2022-06 installation inconvenience