Fuzion Logo
fuzion-lang.dev — The Fuzion Language Portal
JavaScript seems to be disabled. Functionality is limited.

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 and safety 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 in time.date_time: #1935.

    • Hashing is now consistent with equality: Any.hash_code has been removed and replaced by the type.hash_code type feature defined by property.hashable. The new feature hash 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.