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

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 in

      
          the_answer u8 => 42
                

  • Front end
    • An error is now produced if actual type parameters do not meet the constraints given for the formal type parameter (#1054, (#1818).

    • Improved type inference for empty arrays (#1899, (#21248) enabling code like the following:

      
        a =>
          if true
            []
          else
            [3]
                

  • JVM back end
    • Added support for concur.spawn (#2038) and concur.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 features id with one argument, that is return, and with no argument, that returns a unary identity function.

    • Several visibility fixes (#2157, #2152).

Cheers,

--The Fuzion Team.