Metal 6.0.0
Many changes in this release. Functional:
- A new
Token
calledUntil
has been added, which greatly simplifies parsing data that has a terminator instead of some explicit size. - A new
ValueExpression
calledBytes
has been added, which turns a list of values into a list of single-byte values. - Support for deep, value-based equality checks on all
Token
s. - The
Def
Token
has been generalized by removing itspredicate
field. Instead there is now a generalPost
Token
to express post-conditions. - The
Pre
Token
is now more strict: if its condition is nottrue
, it fails. - Two new
ComparisonExpression
s have been added:GtEqNum
andLtEqNum
for greater-than-or-equals and lower-than-or-equals respectively.
Non-functional:
- Migrated to Java 8. Many parts of the API have been improved, e.g.,
ParseResult
is nowOptional<Environment>
,Reducer
is nowBinaryOperator<ValueExpression>
, the oldOptionalValue
class is now a properOptional<Value>
, etc. - The implementation is still recursive and (almost entirely) immutable, but because all recursive code has been augmented with trampolines, this will no longer cause stack overflows.
ValueExpression
s of the formlast(ref(x))
have been optimized to immediately return a single value, greatly improving runtime performance.- To evaluate a
ValueExpression
, only aParseGraph
is now needed instead of an entireEnvironment
.
For a more detailed description and all other changes, see the milestones associated with this release: Migrate to Java 8 and 6.0.0.