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

2023-06-01: Fuzion June Update

Hello and welcome to another issue of Fuzion Update!

Quite significant work improving the base library and solving important issues related to boxed types and type features has been done in the last month:

  • Fuzion language
    • The redefine keyword has been removed from Fuzion #1411. In contrast to the synonymous redef, this keyword was barely used in the standard library.

    • Fix the handling of calls to boxed values #1426. When a function is called on a boxed value, the target of the call is no longer the ref instance, but the value instance that was boxed.

      This change sounds subtle, but it fixes a number of problems when the original value type is used as the type of inner features of the boxed value type feature and these types must be value types even after boxing. All the details can be found in the pull request description.

    • Calling type features from type parameters has been fixed #1471.

    • Fix an IndexOutOfBoundsException in chained booleans #1511.

    • Allow the redefinition of features with type parameters #1515.

    • Fix a NullPointerException when inheriting from a feature that does not exist #1509.

    • Fix the propagation of types in covariant features #1523.

  • base library
    • More features, including public-facing ones have been renamed to match the Fuzion naming convention #1412, #1367, #1439.

    • Basic support for networking with TCP and UDP sockets landed #1223. A basic demo webserver written in Fuzion has been added #1456.

    • Ryu, a float to string algorithm has been implemented in Fuzion #986. Currently, this exists besides the f32.as_string and f64.as_string features, which use the float to string operation of the underlying backend. Since the output of this varies depending on whether the interpreter or the C backend is used, the long-term goal is to replace the implementation of as_string by Ryu.

    • The effects io.file.use and io.file.open have been added #1428, which simplify working with files from Fuzion code.

    • In an effort to reduce clutter in the base library, several features have been grouped in common outer features, such as complex, fraction, matrix , which are now grouped in the num feature #1440, or Map, Set, and friends, which are in a feature container now #1465.

    • More features have been moved to type features #1469, #1482, #1484, #1483, #1487, #1488. In particular numeric and heirs use type features now #1506.

    • String.is_ascii_white_space is now u8.is_ascii_white_space #1494.

    • Remove the Functions feature #1510. Function composition is now implemented for Unary features.

    • Implement the String.upper_case and String.lower_case features #355.

    • Add memoize feature, which remembers the result of a call to a given feature with a given value after the first computation #1522.

    • Return an error if io.stdin.read_line is called at the end of a file #1531.

    • mutable_tree_map is an heir of Map now #1534.

    • time.date_time inherits from has_total_order now #1539. This means that date_times can be compared using the standard infix operators now.

  • C backend
    • Fix a crash in the garbage collector when using threads #1397.

    • Change the name of the binary that is created when the main feature is omitted from #universe to universe #1407.

    • Fix compilation of C code generated with non-glibc standard libraries, such as musl #1417.

  • fz tool
    • An option -no-backend has been added #1429, which does not run any backend operations. This is useful for checking a Fuzion program for syntax and type correctness.

    • Optimized execution time of the HelloWorld example by adding caching to the compiler #1526.

    • Version 0.082 has been released #1458.

  • Fuzion language server
    • Version 0.82.1 has been released.

Cheers,

--The Fuzion Team.