Fuzion Logo
fuzion-lang.dev — The Fuzion Language Portal

2025-03-14: Fuzion March Update

Significant work went into code cleanup patches. Also, several improvements to enhance the performance of the data flow analysis (DFA) are on the way, but not published yet.

  • General
  • Base library
    • New base library features

      • base: add a property.countable feature and use it inSequence (#4721)

      • add array.type.empty (#4841)

      • add linear_effect (#4672)

        A linear effect checks at runtime if it has already been instated and panics if this is the case.

      • Add Sequence.orderable (#4733)

        With .as_orderable a sequence can be wrapped into an orderable type, requires the type of the elements in the sequence to be orderable.
        This allows the sequence to be used as key in a tree map ( which requires keys to be orderable).
        An example can be found in the Advent of Code solution for Dec 22.

      • lib/Sequence: implement scan1, variant of scan without initial value (#4793)

    • Changes to the following standard library features

      • Add heuristics to avoid Sequence.concat to cause quadratic performance (#4696)

      • mark bool.ternary args as Lazy (#4785)

      • specify effect type to be of type mutate in Mutable_Array (#4730)

  • Documentation
    • link rfc2119 and clarify "cannot" (#4787)

    • fix comments in api docs missing (#4744)

    • fix link to source files in api docs (#4724)

    • fix navigation on the left side escaping the frame of the site (#4801)

    • reimplement generation of tree structure for navigation on left side (#4722)

  • Parser
    • parser: prefix operator precedence over postfix (#4786)

      This means that code like ~x~, which applies both prefix ~ and postfix ~, now will apply the prefix operator first, i.e., the cod will be executed as if parentheses were set like this: (~x)~.

  • Front end
    • ResolvedNormalType.asThis do not create this type of universe (#4791)

    • add comment on formal generics (#4759)

    • add error for illegal use of select (#4738)

    • cleanup: use "must not" instead of "cannot" for rules or restrictions (#4748)

    • Feature, add comment to _effects field (#4797)

    • Fix #197 by fixing order of applyTypePars for call resul type (#4712)

    • fix crash when using type constraints (#4764)

    • fix setting context for _extension_ features (#4727)

    • remove possibility to specify types in tuple destructuring (#4702)

    • suppress error if type of actual is error (#4747)

    • suppress subsequent error referencing type --UNDEFINED-- (#4762)

    • suppress subsequent errors for error types (#4731)

    • fix choice-this-types (#4743)

    • fix extension feature not found (#4798)

    • fix fuir-file-naming (#4767)

    • fix inheritance for contracts (#4732)

    • fix redefinition for features added to library features (#4794)

    • LibOut, relax check condition to allow native to have type params (#4832)

    • fix short handle select parsing (#4704)

  • Middle End
    • dfa: Do not call result()in Call.toString(). (#4808)

    • fuir: add serialization (#4726)

      Fuzion intermediate representation is now serialized and persisted in a file. This also fixes the thread safety issue we had before.

    • fuir: change logic in lookup_ (#4840)

  • JVM back end
    • Jvm fix verifier error in mandelbrot test (#4775)

    • jvm: better error handling for unreachable code (#4765)

  • Docs
  • Tests
    • add regression tests (#4757, #4709, #4813)

    • tests: document and check call.this (#4769)

    • tests: fix tuple_negative, remove unsupported test cases (#4739)

    • tests: remove unsupported test cases from tupletest (#4737)

    • tests: test starting process using unicode (#4691)

    • tools: add serializeFuir to -no-backend (#4773)

Cheers,

--The Fuzion Team.

last changed: 2025-03-14