2023-11-03: Fuzion November Update
Here is our Fuzion update for November:
The major change in the last month is that the JVM backend has replaced the interpreter backend when running code on the fuzion-lang.dev website, resulting in much better performance for non-trivial examples.
Most work went into fixing issues in the JVM backend.
Here is what happened in detail:
- Fuzion language
-
The syntax for a routine with an explicit result type now uses
=>
(#2037) as inthe_answer u8 => 42
-
- Front end
- JVM back end
-
Added support for
concur.spawn
(#2038) andconcur.atomic
(#2036). -
Improved stack trace printing in case of precondition failure (#2049).
-
Improved stack overflow handling, now shows Fuzion stack trace (#2060).
-
Added support for tail recursion optimization (#2051).
-
Added checks to avoid accidental modification of immutable arrays by intrinsic functions (#2099).
-
Added support for memory mapping of files (#2126).
-
The JVM backend is now enabled when running the tests, a build fails if the JVM backend fails to run the tests (#2149).
-
- C back end
-
Improved support for
concur.atomic
to support compare-and-swap for choice and value types and avoid accessing uninitialized memory (#2123).
-
- base library
-
A set of features for function composition was added which is a start towards providing a framework for function composition (#2046, #2047).
-
Added
io.buffered.reader
effect (#1554). -
The base library type
void
is now implemented as an empty choice type (#1962). Also added default identity featuresid
with one argument, that is return, and with no argument, that returns a unary identity function.
-
Cheers,
--The Fuzion Team.