2025-12-17: Fuzion December Update
This month marked a period of stability for the Fuzion language itself. Most changes were done to the compiler internals, the standard library, and the tooling around Fuzion.
- General
Upgrade Fuzion to Java 25 (#6191)
Work on a new tool called feeze has started that used eBPF for high-precision monitoring of scheduling related events
- Feeze Tool
new repository feeze contains this tool
-
The idea is to have a powerful tool to visualize and debug timing before implementing real-time related APIs for Fuzion
-
Functionality is still very limited and work in progress, but first tests are possible. Example records look like this:
- Base library
-
New library features
add
String.fromusingchoiceto replacefrom_bytesandfrom_codepoints(#6188 and #6202)add
container.mutable_tree_map.fromusingchoiceto replacefrom_sequence(#6202)add
io.Read_Handler.fromusingchoiceto create aRead_Handlerfrom bytes (Sequence u8) orString(#6189)add
io.slurpto read all data from a givenpath(#6219)add feature
idxfor index accesses (#6244)net: implement basic IP address parsing (#6314)
-
add
index [] (v String)toenvir.vars(#6249). This permits code likeif (envir.vars["DEBUG_LEVEL"].or_else "0").parse_i32.val > 3 then say "debug level is >3" date_time, add feature to calculateunix_time_stamp(#6239)
-
Changed library features
use
infix :to simplify code for list creation (#6196)encodings, add html encoding (#6197)
print_effect: add check for error (#6212)
map_of: change arg type fromarraytoSequence(#6224)bench, change API (#6230)
change features splitting Strings to return array backed Sequence (#6215)
Blocking_Queue cleanup (#6302)
circular buffer, simplifications, contracts (#6306)
buffered_writer, change write result, add write_detailed (#6305)
add effect annotations to public features (#6294)
avoid redundant wrapping of bool in lazy (#6320)
abstract_array redefine first/last/is_empty (#6321)
base: update example (#6332)
use
[]instead oflist.empty(#6313)net: return a
net.ip_addressfromnet.channel.get_peer_address(#6310)Iterator, rename
has_nextasnext(#6298)as_array, avoid iterating twice to fix problems with effectful code (#6286)fix deadlock in
concur.Channel(#6261)
-
- Modules
http: add common reason phrases for http response status codes and response_message convenience constructor (#6190)
nom: add NYI-comments to
nom.parsers.jseon(#6208)nom: implement access feature in
json_valueto avoid nestedmatchstatements (#6210)nom: add XML parser (#6214)
ctrie: add qualifiers to pre/post conditions (#6220)
web: default user agent, via
web.Configeffect (#6228)web: fix
"Call has ambiguous result"(#6252)lock_free, Map: switch to array from list as backing for list_node (#6300)
add module webserver (#6308)
- Documentation
add hierarchy of faults diagram to comment for
fuion.runtime.fault(#6319)
- Front end
specify default modules and include
terminal,lock_free,http,uuidanddatabaseto remove the need to specify these explicitly (#6156)fix NPE in Function.updateTarget (#6209)
don't add
main.fumto source file path (#6253)merge visitations (#6254)
remove Nop (#6257)
map resolved effect types (#6295)
- Monomorphization/DFA
- FUIR
- JVM back end
- C back end
- native features
- fz tool:
- Build
Makefile: fix a few dependency definitions (#6194)
Makefile: reorder include mod_java.mk after all target (#6204)
Makefile: _simple_example, FUZION_BASE, order only dependency (#6203)
Makefile: order only dependency
MOD_TERMINALfor (check|record)_simple_example(#6206)makefile: refinements, should prevent copying fz when changing module (#6279)
actions: move docs, lsp, syntaxcheck, shellcheck to own action (#6242)
add jenkins fail mails (#6274)
- Windows
- Tests
skip test
lib_concur_Channel, failing frequently due to #5722 (#6187)#3178, reduce high execution time by replacing
i32byu8to get an overflow earlier (#6223)restore windows tests (#6231)
check simple example, remove seemingly unneeded replacements (#6232)
mutable hash map, reduce test sizes for speed(#6247)
update wolfssl (#6271)
post test results to influxdb (#6241)
add back-end
fuir(#6250)run make jobs in parallel in GitHub actions (#6240)
skip channel test (#6280)
try enable test native_value again (#6312)
remove skip file mod_wolfssl (#6325)
run_tests: add metric total_time (#6327)
skip test
lock_free_stackdue to bug (#6288)remove distinction
run_testsvsrun_test_parallel(#6256)
Cheers,
--The Fuzion Team.