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

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:

      feeze screenshot

  • Base library
    • New library features

      • add String.from using choice to replace from_bytes and from_codepoints(#6188 and #6202)

      • add container.mutable_tree_map.from using choice to replace from_sequence (#6202)

      • add io.Read_Handler.from using choice to create a Read_Handler from bytes (Sequence u8) or String(#6189)

      • add io.slurp to read all data from a given path(#6219)

      • add feature idx for index accesses (#6244)

      • net: implement basic IP address parsing (#6314)

      • add index [] (v String) to envir.vars (#6249). This permits code like

          if (envir.vars["DEBUG_LEVEL"].or_else "0").parse_i32.val > 3 then
            say "debug level is >3"
                
      • date_time, add feature to calculate unix_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 from array to Sequence (#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 of list.empty (#6313)

      • net: return a net.ip_address from net.channel.get_peer_address (#6310)

      • Iterator, rename has_next as next (#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_value to avoid nested match statements (#6210)

    • nom: add XML parser (#6214)

    • ctrie: add qualifiers to pre/post conditions (#6220)

    • web: default user agent, via web.Config effect (#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, uuid and database to remove the need to specify these explicitly (#6156)

    • fix NPE in Function.updateTarget (#6209)

    • don't add main.fum to source file path (#6253)

    • merge visitations (#6254)

    • remove Nop (#6257)

    • map resolved effect types (#6295)

  • Monomorphization/DFA
    • improve performance by marking calls as hot again if a result changes that they depend on (#6245)

    • improve analysis accuracy by tracing effect environments (set TRACE_ALL_EFFECT_ENVS to true) (#6275)

    • minor cleanups (#6281)

  • FUIR
    • cleanup precondition (#6264)

    • GeneratingFuir, pass FeatureLookup instead of FrontEnd (#6260)

  • JVM back end
    • remove duplicate ensure_not_frozen (#6152)

    • add check for no implicit padding (#6218)

    • automate generation of jvm dependency list (#4423)

  • C back end
    • declare current only if hasData=true (#6263)

    • raise identifier length (#6324)

  • native features
    • convert intrisics to natives (#6268)

    • native features: switch from array to mutate.array (#6296)

    • fzE_thread_join, assert success, add NYI to return error code (#6299)

  • fz tool:
    • add -gdb back-end to compile using C back-end and immediately run using gdb (#6285)

    • Metrics add some dfa metrics to be stored in Influx DB(#6323)

    • add some basic fum-file metrics to be stored in Influx DB(#6331)

  • 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_TERMINAL for (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
    • action: install libsodium for cryptography(#6233)

    • fix fzE_file_flush (#6234)

    • fix isnan and run tests (wolfssl) (#6278)

    • fix classpath for windows (#6318)

    • Makefile: change workaround for msys2 (#6227)

  • Tests
    • skip test lib_concur_Channel, failing frequently due to #5722 (#6187)

    • #3178, reduce high execution time by replacing i32 by u8 to 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_stack due to bug (#6288)

    • remove distinction run_tests vs run_test_parallel (#6256)

Cheers,

--The Fuzion Team.

last changed: 2026-03-13