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

2025-06-17: Fuzion June Update

A small example calling the GTK toolkit from Fuzion shows nice our progress on the foreign function interface. An important change to the Fuzion language is support for right associative operators.

  • General
    • The GreenCode project is gaining speed after the German consortium started off in October more and more countries are getting their funding and participation settled.

      Fuzion will be used to perform resource monitoring and control at the level of the programming language using support in compiler, static analysis and runtime system.

    • Fuzion release 0.093 (#5236), development phase started for rel 0.094 (#5246)

  • Fuzion language
    • Support for right-associative operators (#5300)

      Instead of

        say <| ("Hello, "+ <| "World!")
              

      you can now write

        say <| "Hello, "+ <| "World!"
              
    • parser: require base prefix to be repeated after dot in float literals (#5267)

      Non-decimal float literals with fractional parts now have to be written like 0xFFF.0xFF, i.e., repeating the 0x prefix to disambiguate the fractional part from a dot-call like 0xFFF.as_string.

      .
  • Base library
    • New library features

      • add concur.Channel for inter-thread communication (#5273)

      • add fzE_destroy_jvm, turn fuzion.java into effect (#5218)

      • Add Sequence.infix * to create new Sequence by repeating n times (#5241)

      • add features to get random number from full range of numeric types i32, u32, i64 and u64 (#5193)

      • add module wolfssl (#5270)

      • add Sequence.group_by variants to group elements using a mutable map or using hashable keys (#5229)

      • add uuid (#5200)

      • add String.as_c_string (#5284)

    • Changed library features

      • made infix : in list.fz as right-associative (#5307)

        This permits creating lists like 1 : 2 : 3 : nil without parentheses

      • make Sequence.peek lazy (#5242)

      • on cleanup error trigger runtime fault (#5210)

      • runtime.fault, add comment to handler args (#5211)

      • change net.client into a type feature (#5212)

      • lib/be: changed thread type from i64 into Thread ref (#5222)

    • Removed library features

      • lib: inn net.connection, remove is_active (#5213)

  • Parser
    • parser: cleanup: Remove mayUseCommas argument for rules like expr (#5257)

    • Improved parsing of do call after an operator: If there is no white space before the operator as in

        even_integers := 1.. .filter %%2
              

      the operator is parsed as a postfix operator, while with white space before the operator as in

        check (even_integers ∀ .is_even)
              

      the operator is parsed as an infix operator (#5258 which solved all but last sentence of #5252).

  • Front end
    • add error when calling effect.finally from user code (#5215)

    • enhance error message in case a lambda stars with infix operator without a space as in `x->!x` instead of `(x -> !x)` (#5220)

    • fix #5259 by partial application in NumLiteral.propagateExpectedType (#5275)

    • fix #5263 by creating an error message that explains partial application (#5280)

    • Improve error for lambda or partial assigned to non-function, fix #5243 (#5253)

    • Match, fix compiler crash due to conflict in replacing subject field (#5205)

    • for debug output, omit showing generics for this type in toString (#5247)

    • AbstractType, fix NPE in applyTypePars (#5189)

    • fix compiler crash when compiling code like x ()->bool => *2, i.e., a prefix call is used partially but arg count is not 1, fix #5268 (#5269)

  • middle end
    • raise error at compile time (instead of run-time) on unmet type constraint in precondition (#5303)

  • C back end
    • add assert for checking that size of value types are equal (#5274)

  • Windows
    • fix heap corruption in build_unicode_args (#5182)

    • fzE_file_open fix semantics of append (#5180)

  • LSP
    • fix Java compilation for method does not override or implement a method from a supertype (#5271)

    • copy source files from the language server repo (#5016)

    • remove old orphaned code (#5249)

  • Examples
    • add GTK example (#5256)

  • Tests
    • run_tests: add OS env var to inherited env vars (#5183)

    • add skip_win feature (#5184)

    • add skip_win for fz_cmd (#5281)

Cheers,

--The Fuzion Team.

last changed: 2025-06-17