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

2024-06-14: Fuzion June Update

Work is going on on many fronts. The ongoing integration of pre- and post-conditions with effects together with an effect framework for fault handling is maybe the most noticeable improvement.

  • General
    • We are happy to welcome Simon von Hackewitz as a new member of the Fuzion team at Tokiwa Software GmbH!

  • Fuzion language
    • Post conditions of constructors can now access the newly created instance using result (#3138)

    • Redefinition of feature with type parameters is now supported, fixed #3136 (#3143)

    • Post-conditions are implemented using effects now. It is possible to handle failed post-conditions in application code now.

      Post-condition of redefined features are inherited now, i.e, a post-condition can only be made stronger by a redefinition. (#3037)

      Post-condition are purely syntax sugar now, the definition of a post-condition causes the creation of a post-condition feature that checks that condition and causes the corresponding post-condition fault in case it does not hold. (#3100)

    • EBNF Grammar: added missing rules for native, abstract and intrinsic routines defined using => (#3044)

    • It is now possible to use universe in type qualifiers as in universe.unit to solve ambiguities (#3068)

    • destructuring no longer permits overwriting fields (#3089)

    • Permit := in a field declaration at minimum indentation (#3093)

      This permits the same indentation syntax for field and routine declarations, e.g.,

        # a routine:
        abc
        pre
          true
        => 42
      
        # a field:
        def
        pre
          true
        := 4711
              
  • Base library
    • Addition of the following new standard library features

      • io.buffered: variant of read_line/read_lines with custom delimiter (#3067)

      • The absolute value of x can now be calculated using |x| instead of x.abs.

        This is done using prefix and postfix operators, but we might add a prepost operator (#3082)

      • Support for mutable two-dimensional arrays was added (#3090)

    • Changes to the following standard library features

      • Add redundant preconditions since precondition inheritance is not supported yet (issue #3051, PR #3053)

      • Optimized array.nth for array_backed sequences (#3063)

      • lib/mutate.fz: code for array was split off into a separate file (#3070)

      • code cleanup to avoid feature declared in nested blocks (#3084)

  • Parser
    • Better errors for choice declared with result type (#3103, #3104)

  • Front end
    • various cleanups (#3047) (#3050)

    • fix check-failure if redefinition is a choice (#3079)

    • Do not create error for auto-generated fields in choice (#3080)

    • improve javadoc of Destructure (#3083)

  • JVM back end
    • ids of long class names appearing in stack traces makes tests fragile and were therefore removed (#3135)

  • C back end
    • Fixed handling of signed integer overflow for 16-bit integers, added compiler switch -ftrapv(#3049)

    • enable more warnings -Wextra -Wpedantic etc. (#3091)

    • fix issues running tests on windows (#3098)

    • fix warning about uninitialized fzCur (#3132)

  • Interpreter back end
    • fix test atomic for macOS (#3057)

    • cleanup (#3126)

  • util
    • Suppress any further error output during shutdown due to errors, fix #3142 (#3144)

  • Tests
    • add regression tests (#3048, #3052, #3065, #3066)

    • remove non working workaround (#3096)

    • fix syntax error, expected is or => (#3113)

    • set LANGUAGE to en_US (#3122)

    • explicitly ignore results of expressions (#3133)

    • add regression test for #776 (#3137)

Cheers,

--The Fuzion Team.

last changed: 2024-08-23