* [LRM, TRLC] New (backwards-incompatible) keywords: `tuple`,
`separator`, `freeze`, `abstract`, and `final`. New punctuation:
``.
* [LRM, TRLC] Support for tuple types: these are algebraic datatypes
that also support user-defined syntax. The main use case is
versioned identifiers, e.g. allowing you to write `1234542` for
example to refer to a codebeamer item 12345 at version 42. Instead
of only allowing this use-case, tuples should be a widely applicable
generic datatype, for specifying e.g. coordinates, qualified
information, complex numbers, vectors, etc.
Have a look at the new [Tuples Tutorial](TUTORIAL-TUPLES.md) for
some examples.
* [LRM, TRLC] Support for freezing record components: you can now
declare that a particular component is always a certain value for
all instances of that record type. This is not the same as a
"default" value, instead that value can never be changed,
overwritten, or unfrozen again.
Have a look at the updated [Catch-all base types
tutorial](TUTORIAL-OPTIONAL-BASE.md) for an example.
* [LRM, TRLC] Support for abstract and final types: abstract must be
extended before they can be used, and final types cannot gain new
components.
Have a look at the new [Advaned tips &
tricks](TUTORIAL-ADVANCED-TYPES.md) tutorial for examples.
* [TRLC] Introducing the tuple type required significant
reorganisation of the AST, to mark this significant backwards
incompatible change we have increased the minor version instead of
just the patch version. The key incompatible changes are:
* New base-class for record types and tuple types, called
`Composite_Type`.
* Components and fields now share the same type
`Composite_Component`.
* New base-class `Typed_Entity` for entities with a type, in which
case the type is stored in the `n_typ` attribute. The entities
`Quantified_Variable`, `Composite_Component` (previously
`Record_Component`), `Enumeration_Literal_Spec`, and
`Record_Object` are now typed entities, and their inconsistent
attribute for their type is now `n_typ` consistently.
* Renamed `n_record` to `n_type` for `Composite_Component` (formally
`Record_Component`).
* [TRLC] Fix unary operators in array aggregates; this used to crash
the tools and now works as expected.
* [TRLC] Fix anchoring of some error messages which incorrectly linked
to the declaration of `x` instead of the part of the expression
where `x` was used.
* [TRLC] Warning and error messages that show source context now strip
leading spaces to preserve space.
* [TRLC] User defined types (records, enumerations, and tuples) now
all subclass from `Concrete_Type` in the API which provides a useful
new function: `fully_qualified_name()` which returns something like
`package.typename`. These types are now also python hashable, so you
can create dictionaries and sets with them without issues.