This release contains significant improvements to the language runtime.
The run time representation of objects is drastically simplified. This leads to much smaller executables and much faster object fields access. Simple objects are allocated on stack now thus reducing the garbage collection overhead.
This is a significant change to the language. A lot of features were simplified, replaced, or just removed. Several new important features were added also.
The multiple inheritance support has been dropped. The object value definition algorithm has been significantly simplified. The object statefulness functionality has been replaced by eager value evaluation. Changes have been made to the syntax of sentences, local declarations, and value assignment to avoid any possible conflicts.
New features: static fields, aliases, yield statement, short adapter declaration syntax, short field override syntax.
Some rarely used and confusing features were removed.
Stateful objects can be constructed now with a keep value (
The value of stateful object is evaluated at most once in contrast to standard
stateless object, which value is evaluated on each request.
The binding statement (
<-) is used now to assign new values to variables. In
addition, a value assignment statement (
=) can be used to perform the
assignments in a more traditional imperative manner.
The combined assignment statements (
/=) have been added.
The type arguments syntax has been fully reworked.
The link dereferencing behavior has been changed significantly.
A new initializers syntax has been implemented.
An imperative and declarative code are almost fully unified. The difference between them is that the declarative blocks may contain member declarations, while the imperative blocks can loop.
Locals can be declared anywhere now. A new syntax allows to declare the local along with its scope.
Phrases may contain intervals now.
Some scope references, unary operators syntax, and line continuation rules have been changed.
Type parameters can be declared for any object now.
Two new operators support have been added, a compare operator (
suitable to perform a generic comparison and a suffix one (
~) capable of
representing things such as quantities.
Hexadecimal, binary, and floating point literals syntax support has been added. Other syntax improvements have been made.
A lot of bugs were fixed.
The language runtime license has been changed to the MPL-2.0.
This is a significant change in language semantics. Object values are stateless by default, which means they are not preserved, but evaluated on each request. This makes objects act like functions. To preserve the once evaluated value, a new ‘keep value’ operator can be used.
The language runtime license has been changed to the LGPLv3.
This release extends a macro support and provides several standard macros.
Also, this release contains a significant syntax changes. An original tilde-based comments syntax replaced a foreign C-style comments. A text blocks can be used now to declare a multi-line strings.
This release introduces a macro support.
As for now, the macro usage is limited to type parameters. This brings generics to the language. The macro support will be enhanced over time to bring more metaprogramming approaches.