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

2026-08-07: Fuzion August Update

We have started preparing a first release of the feeze scheduler tracer and setting up feeze.dev as a project website. We are happy to receive your feedback!

  • General
    • Important changes to the Fuzion team:

      • Simon von Hackewitz has successfully finished his training as Fachinformatiker Anwendungsentwicklung in June and has joined our team as a full developer in July.

      • Artur Dmitriienko started an internship on first of August with the goal to become our new trainee Fachinformatiker Anwendungsentwicklung from September.

  • Fuzion language
    • Anonymous inner features like _ : a is ... may no longer inherit from several features as in _ : a, b is ...: add error for anonymous feature with multiple inheritance calls (#7378)

  • Base library
    • New library features

      • add mutable dynamic arrays, that can grow/shrink (#7249)

      • Add POSIX clocks and use them for timeouts in blocking_mutate.wait (#7376)

      • add short_circuit effect to allow early return with result (#7326)

        To use this, you can now write, e.g., as follows

        say <| flow.short_circuit (option i32) .run ()->
          (1..100).for_each i->
            if i=42
              (flow.short_circuit (option i32)).env.return i
          nil
                  
      • add Unbuffered Channel for channels that do not buffer data (#7266)

        This is used to implement go-style channels created via ch := concur.channel TYPE with blocking operations to send ch<-val and receive <-ch data.

      • Map.as_mutable_map add default implementation (#7297)

      • os: add basic support for creating pipes (#7156)

      • add effect native_access to denote access of native code (#7397)

    • Changed library features

      • Add precondition to concur.blocking_mutate.wakeup_next_in_waiting_list (#7352)

      • allow repeated calls of os.process.wait while process is running (#7334)

      • better error for failing switch.or_panic (#7406)

      • call finally for default effects instated at big bang. (#7330)

      • enhancements to file.meta_data (#7283)

      • fix effect annotation in Unbuffered_Channel (#7351)

      • fix NullPointerException during error output (#7407)

      • make Mutable_Hash_Map thread-safe (#7294)

      • fix naming convention issues (#7332)

      • move has_interval to property.interval (#7336)

      • move path to io.path (#7388)

      • move send_signal to Process effect (#7396)

      • Mutable_Hash_Map use num.fraction instead of f32 (#7302)

      • rename eff as flow (#7335)

      • rename time.duration.times to time.duration.scale (#7409)

      • synchronize read access to concur.Thread.park_condition, fix #7320 (#7350)

      • threads effect, default_value, do not include self in running/child threads (#7331)

      • use function to initialize mutable array instead of single value (#7399)

      • fix occasional “process not in set of running processes” (#7377)

      • time/frequency: fix case of infinite period multiplied by zero (#7445)

      • time/period: for infix * document behavior for case n = 0 using a post condition (#7446)

      • change effects to ref-effect removing the handler

        • convert delete effect to ref-effect removing Handler (#7371)

        • convert envir.args to ref-effect (#7362)

        • convert move effect to ref-style removing Handler (#7370)

        • convert stat effect to ref-effect, removing Handler (#7372)

        • change nano to ref-effect removing Nano_Time_Handler (#7359)

        • change writer to ref effect Writer removing Handler (#7355)

        • convert random effect to ref-effect, removing Handler (#7361)

        • convert Seek effect to ref-style, removing _Handler (#7393)

        • convert Unique_Id and env.Vars effects to not use Handlers (#7347)

        • make exit a ref-effect (#7365)

        • make process a ref-effect, remove handler (#7366)

        • update Threads effect to ref-style, removing _Handler (#7389)

        • update dir.make to ref-effect style, removing Handler (#7373)

        • remove some more env short-hands (#7276)

    • Removed library features

      • remove confusing effect instatement feature infix <- (#7403)

      • remove String.type.from_mutable_array (#7303)

  • Other library modules
    • realtime module

      • add abstraction for a scheduler (#7270)

      • adjust comment after move to realtime (#7349)

      • fix static assertion failure on macOS (#7432)

    • tokiwa module

      • tokiwa: fix record_process, always close stdin even when no input provided (#7360)

      • tokiwa: send kill signal to timed out process (#7322)

    • web module

      • parse_url, return proper error if port value exceeds 16-bits (#7384)

      • remove env short-hand (#7383)

  • Parser
    • fix require condition when operatorExpr returns Call.ERROR (#7340)

    • fix skipTypeTail to support fully qualified this-types (#7329)

    • fix source position of ternary operator call (#7324)

    • more sourceRange uses instead of sourcePos (#7328)

  • Front end
    • fix #7401 by relaxing require condition a bit (#7414)

    • rename, isRelayTypeInCotype as isRelayType (#7316)

    • resolve NYI comment hinting on a potential performance problem (#7319)

    • change λ.call visi to public (#7140)

    • cleanup call result type determination (#7275)

    • consider type features as well for partially applicable features (#7308)

    • fix check-condition logic in Call.cotypeInheritanceCall (#7281)

    • fix resolving type call where targets are QualThisTypes (#7455)

    • fix this-type not properly adjusted to cotype-target (#7263)

    • fix type pars not handed down via targets of inheritance calls (#7398)

    • flag error when user code call <effect>.type.default_value (#7375)

    • Loop, mark successBlock/elseBlock as final (#7342)

    • remove restriction constraint must not be choice (#7395)

    • simplify code in isAssignableFrom a bit (#7422)

    • replace GenericType by ParametricType (#7309)

  • Middle end
    • fix error clazz index (#7419)

    • fix isConst detection (#7433)

    • mark lookupFeature as not public (#7442)

    • normalizeOuter, simplify logic (applied de Morgan’s law) (#7333)

  • Backends
    • JVM backend

      • be/jvm: callNative, store result of arguments expressions in locals (#7413)

  • Tests
    • add regression test for already fixed issue 5264 (#7411)

    • add regression test for already fixed issue 5711 (#7410)

    • add reg test for #4505 (#7337)

    • add test for fixed issue #4510 (#7325)

    • add test for process.kill/term (#7390)

  • Benchmarks
    • Modified Jitter so that testing threads send raw data back to the main thread. (#7125)

  • Build Infrastructure
    • add timeout to Jenkins pipelines (#7307)

    • fix recording of tests that require input via stdin (#7346)

    • ignore line numbers of .java files when checking examples (#7363)

    • remove obsolete simple_inp.mk (#7345)

    • check_simple_example: pass cpu_time_limit to record_process (#7392)

  • Documentation
    • Added Realtime glossary (#7327)

    • Corrections and added more details to the Realtime Manual (#7354)

    • use term “Type Feature” instead of “Type Function” (#7300)

    • update javaDoc comments, use @code instead of backticks (#7280)

  • Fuzion Webserver
    • add timeout to Jenkins pipelines (#428)

    • Add target to build and run fzweb from jar file (#437)

    • fix fzweb benchmarks running forever (#429)

    • fix running examples (#440)

    • modernize html, remove <br>s use style instead (#426)

    • src/global: adjust Sieve_Cache usage (#438)

  • Feeze
    • Add logo drafts (#19, #27, #25)

    • rec: cleanup stdout output (#73)

    • rec: do not attempt to load libfuzion_rt.so if it does not exist (#75)

    • Documentation

      • add empty manual file (#85)

      • add feeze module ids (#20)

      • add scheduling data screenshot, fix typos (#29)

      • minor fixes in readme (#74)

    • GUI

      • bin: check dependencies when starting feeze GUI: OpenJDK >= 25, libgc. (#21, #23, #71)

      • add desktop file and icon (#26)

      • add UI scale to feeze script (#72)

      • cleanup rename Java package dev.flang.feeze as dev.feeze (#83)

      • Enable desktop start of feeze (#79)

      • show starting... when starting recorder (#77, #78)

      • support changed recorder output: ready instead of Waiting for commands (#76)

    • Build process and GitHub Actions

    • First version of feeze website (#59, #60, #61, #62, #80, #81, #82, #84, #86, #87)

Cheers,

--The Fuzion Team.

last changed: 2026-08-07