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 the0xprefix to disambiguate the fractional part from a dot-call like0xFFF.as_string.
- Base library
-
New library features
add
concur.Channelfor inter-thread communication (#5273)add
fzE_destroy_jvm, turn fuzion.java into effect (#5218)Add
Sequence.infix *to create new Sequence by repeatingntimes (#5241)add features to get random number from full range of numeric types
i32,u32,i64andu64(#5193)add module wolfssl (#5270)
add
Sequence.group_byvariants 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 :inlist.fzas right-associative (#5307)This permits creating lists like
1 : 2 : 3 : nilwithout parentheses make
Sequence.peeklazy (#5242)on cleanup error trigger runtime fault (#5210)
runtime.fault, add comment to handler args (#5211)change
net.clientinto a type feature (#5212)lib/be: changed thread type from
i64intoThread ref(#5222)
-
-
Removed library features
lib: inn
net.connection, removeis_active(#5213)
-
- Parser
parser: cleanup: Remove
mayUseCommasargument for rules likeexpr(#5257)Improved parsing of do call after an operator: If there is no white space before the operator as in
even_integers := 1.. .filter %%2the 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.finallyfrom 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
assertfor checking that size of value types are equal (#5274)
- Windows
- LSP
- Examples
add GTK example (#5256)
- Tests
Cheers,
--The Fuzion Team.