Releases: bmw-software-engineering/trlc
Release 1.1.4
1.1.4
- [TRLC] Improve error messages by using a more human readable form of
expected tokens, so now you see "opening brace '{'" instead of
"C_BRA".
Release 1.1.3
1.1.3
-
[TRLC] New API function
fully_qualified_name
forRecord_Object
which can be used to get thepackage.name
name for any record. -
[TRLC] The API function
to_python_object
now emits fully qualified
names for record references.
Release 1.1.2
1.1.2
- [LRM, TRLC] Also allow
:
and;
as a tuple field separators.
Release 1.1.1
1.1.1
-
[LRM, TRLC] New (backwards-incompatible) keywords:
tuple
,
separator
,freeze
,abstract
, andfinal
. 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 write12345@42
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 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 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 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 then_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 nown_typ
consistently. -
Renamed
n_record
ton_type
forComposite_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 ofx
instead of the part of the expression
wherex
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 fromConcrete_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.
Release 1.0.13
1.0.13
-
[TRLC] Do not enter (sub-)directories named
bazel-*
. This
behaviour can be turned off by using the new option
--include-bazel-dirs
. -
[TRLC] Add new option
--show-file-list
which dumps, on success,
all files processed by the tool. -
[TRLC] Error messages now show all files relative to the current
working directory.
Release 1.0.12
1.0.12
-
[TRLC, LRM] New type
Decimal
which allows you to specify values
such as0.1
with infinite precision. These are a subset of
rational numbers. -
[TRLC, LRM] New implicitly declared built-in functions
Integer
and
Decimal
which can be used to convert a value to anInteger
and
Decimal
respectively. The language does not support implicit
conversion, you will have to make sure all types are converted
correctly yourself. -
[TRLC, LRM] new type
Markup_String
which is a special kind of
String
that behaves in exactly the same way. However you reference
other TRLC records directly:for example see [[potato, package.wibble]]
. These references are checked and validated by
TRLC.
Release 1.0.11
1.0.11
-
[TRLC] You can now provide more than one directory on the
command-line to process, as well as individual files. If no files or
directories are provided the default is now to analyse the currenty
directory.
including all sub-directories. -
[TRLC] In error messages that reference another file+location more
of the path is now shown to help you find the problem. For example
instead ofprevious definition at foo.rsl:1
you now would get
previous definition at potato/foo.rsl:1
.
Release 1.0.10
1.0.10
-
[TRLC] Fix issue where TRLC could sometimes return 0 instead of 1 if
there were non-fatal errors. -
[TRLC] Fix missing array length checks. Arrays now correctly have
their desired size enforced.
Release 1.0.9
1.0.9
-
[LRM] The LRM for TRLC is now written in TRLC. There is also a HTML version
available for easier reading. During conversion we fixed a number of
issues in the LRM (missing keywords, etc.) and made a few cleanups
and simplifications; however the language and its semantics have not
changed. -
[LRM, TRLC] Add support for existential quantification. This
introduces a new keywordsexists
. -
[LRM, TRLC] Also permit
in
andnot in
for arrays. This is a
convenient short-cut for existential quantification over an array to
test for membership. -
[LRM, TRLC] Fix oversight in the LRM, not allowing
true
and
false
to appear as values.
Release 1.0.8
1.0.8
-
[TRLC] Fix ICE when attempting to parse completely empty files.
-
[LRM, TRLC] Two minor improvements for the handling of triple quoted
strings: empty lines are now ignored when removing common leading
whitespace, and trailing whitespace is stripped.