2023-10-05: Fuzion October Update
Here is our Fuzion update for October:
In the beginning of September, Fridtjof gave a talk about Fuzion's use of types at the TyDe workshop at ICFP in Seattle.
Most work on Fuzion went into improving the new JVM backend, fixing many remaining issues with the goal to have a powerful replacement for the interpreter backend.
Here is what happened in detail:
- Fuzion language
-
A line break is no longer permitted after
->
in function return type: #1950. This solves an ugly ambiguity in the grammar.
-
- Front end
-
Arrays of constant numeric values are detected by the front end and converted into serialized constant values when creating Fuzion module files and in the Fuzion IR. This means that the backends can create more efficient code when initializing constant arrays. This leads to a reduction of the size of the generated code, in particular in the JVM backend: #2021.
-
Using a type parameter as an outer type is now possible: #1944. E.g., one can now use a user defined mutate effect as an outer type of a mutable variable as in this code:
f(n (M : mutate).new i32) ! M => ...
-
For Called feature not found errors, add a solution if the called feature was found but is not visible: #1967.
-
parser: fix an infinite recursion in the string lexer that could be triggered by a small example: #1995.
-
- fz command
-
The new
-jar
option allows saving the JVM built code as a JAR file: #1976.
-
- JVM back end
-
Determine values of
debug
andsafety
intrinsics at build time. This matches the behavior of the C backend: #1958. -
Any.as_string
is now consistent with the other backends: #1982. -
Many of the missing intrinsics have been implemented: #1922, #1904, #1906, #1907.
-
Support for calling arbitrary Java code via fzjava-generated wrappers is being worked on: #2001, #2020.
-
- base library
-
There is a new feature
day_of_week
intime.date_time
: #1935. -
Hashing is now consistent with equality:
Any.hash_code
has been removed and replaced by thetype.hash_code
type feature defined byproperty.hashable
. The new featurehash
in the universe can be used to get the hash of a value. Additionally, the hashing behavior for the special cases -0.0, 0.0, and NaN of floats has been revisited: #1999, #2004, #2019.
-
Cheers,
--The Fuzion Team.