2026-09-09: Fuzion September Update
The first release of the Feeze scheduler tracer tool is approaching, a lot of effort went into preparing this release (see below).
- General
-
Artur Dmitriienko has finished his internship and has started as our new trainee Fachinformatiker beginning of this month. We are happy to have him in our team!
-
Yann Glady has finished his internship at Tokiwa. We thank him for his contributions to various parts of Fuzion and we wish him all the best for his future!
-
- Fuzion language
-
raise error when unit result is discarded explicitly (#7521)
The following code
_ := say "hi"will now produce an errorA result of type 'unit' must not be ignored explicitly.sincesayreturns a value of typeunitthat is ignored automatically.
-
- Base library
-
New library features
added
container.Doubly_Linked_List, a mutable linked list data structure (#7619)added effect
Ignored_Failureto log unexpected failing operations, e.g., when closing resources during shutdown (#7566, #7588) and useIgnored_Failurein some effectfinallyfeatures (#7589)added least-recently-used cache
container.LRU_Cache(#7593)added
os.hostname(#7514)added
switch.otherwiseto perform code, e.g., in case anoutcomeis anerror(#7624)implement
ip_address.as_stringfor IPv4 (#7641)
-
Changed library features
allow access to one dimensional base array in
array2/3(#7603)allow index operations on
array2/3without type parameter (#7597)change
Readereffect toref-style fromHandler-style (#7520)-
change
switch.postfix !to return A orpanic(#7635)This enables convenient error handling as in
# parse the given number in the range 0..100 # get_percentage(str String) i64 => str.parse_i64 .filter (n -> 0 <= n <= 100) .first! # panic in case parsing or range check failed changed
Type.as_stringto omitType of...(#7655)cleanup naming in
time.precision(#7613)ctrie add implementation of
as_map(#7573)date_time, fix milli_second bug (#7494)
effect.abortable, set default to
false(#7639)fix piping stdin to stdout of process (#7523)
fix StackOverflow in
Sequence.infix *(#7595)-
onceremove mutate type par, add dedicatedonce_mutateinstead (#7517)You can run code exactly once
> ./build/bin/fz -e 'greet := once (say "hi!"); (1..100000).for_each _->greet.unwrap' hi!and you can now see that the code uses the `once_mutate` effect:> ./build/bin/fz -effects -e 'greet := once (say "hi!"); (1..100000).for_each _->greet.unwrap' once_mutate [...] process, do not automatically close pipe on read failure (#7528)
process, more detailed error message (#7551)
removed parameterized
abstract_array.indices(#7497)rename
net.channeltonet.endpoint(#7512)various code simplifications (#7540)
Move helper features
String/Sequence.executefrom scripts to moduletokiwa(#7402)process: register failure when writing to stdin of process (#7576)
-
- Other library modules
- Parser
- Front end
Loop add explicit target
universefor calls totuple(#7495) andi64(#7496)remove extra dot in output of
callableArgCountMsg(#7509)code cleanup: remove unused code, add final modifier (#7547)
revert loop result propagation via setOuter (#7556)
add (workaround) assignability rule
a.type.Tassignable toa.T(#7483)fix replacing this-type in choice generics (#7612)
only consider unqualified feature for main feature (#7652)
raise error if visibility is specified for type parameter, these are always visible to inner features and never from outside (#7548)
fix #7626: use position of value expression for loop index var actuals (#7633)
util: Fix
DataOut.writeAtthat wrote to_posinstead ofat(#7631)util: fix HEX table, missing some entries (#7554)
util: fix require condition in
SourcePosition.rangeTo(#7636)
- Runtime System
add assertion
fzE_file_readfor caseEAGAIN(#7525)add
fzE_process_close(#7578)add static_assertion
EWOULDBLOCK == EAGAIN(#7532)fix syntax error in win.c (#7575)
posix:
fzE_file_writehandleEWOULDBLOCK/EAGAIN(#7629)posix:
pipe_read/write, handleEAGAIN/EWOULDBLOCKcase (#7630)remove comment on flushing pipe (#7535)
fzE_thread_join, allow results other than success, implement for win (#7560)
- Windows
fix mod_sqlite test (#7598)
fix
non-void function does not return a value in all control paths(#7569)implement
fzE_cnd_timedwait(#7607)implement
fzE_pipe_create(#7557)remove outdated NYI comment (#7559)
skip test stackoverflow (#7592)
tests: native outerref pass through, remove skip file (#7606)
- Tests
- Language Server
- Build Infrastructure
attempt to run Windows and macOS CI on specific label (#7574)
improve output of run_test by separating back-ends more clearly (#7653)
fix compile/fe tests always exiting with exit code 0, regardless of success (#7537)
fix/update
add_simple_test, broken due tounitresult ignored (#7529)remove spell check script (#7637)
Jenkinsfile: remove documentation deployment steps (#7504)
- Documentation
- Fuzion Webserver
global: add tool to block lists of IP addresses (#448, #453, #454)
reduce use of
lock_free.Map(#445)Session, enhance a log message (#456)
simplify mime value code (#444)
src/runner: update address for running examples (#441)
src/user: fix ambiguous feature e by renaming one of them (#447)
src/user: for unverified users, complete account deletion immediately (#450)
src/user: increase verbosity for unsent email events (#446)
src/webserver/route_request: enforce registration bans on lower level (#451)
- Feeze
be tolerant if ldconfig is missing (#120)
c: remove
feeze_recorder.c, was replaced byfeeze_recorder.fz(#123)c: remove include
sys/sdt.h(#121)-
Documentation
-
GUI
change cursor when hovering over dragable resize buttons (#128)
Control Window tooltips extracted directly from manual (#130)
Fix hanging and overflows for very large time compressions (#133)
Make ^Q and ^W work in control frame even some inner component has the focus (#141)
Open data frame using default size (#144)
suppress output of
ldconfigwhen starting feeze GUI (#124)Suppress stack trace on
HeadlessExceptionwhen$DISPLAYis not set (#145)Update progress bar maximum whenever shared memory size is read (#125)
Fix typo in label text (#100)
bin/feeze: allow HiDPI auto-detection instead of forcing uiScale=1.0 (#92)
-
Website
Add imprint and other legal stuff (#110)
add manual (#103)
add motivation section (#127)
make logo.svg a link (#104)
fix login/sign up button alignment (#142)
fix typo (#102)
regenerate html manual (#126)
Scheduler Tracer->Scheduling Tracer(#98)style.css: fix background on mobile (use fixed layer) (#93)
Move web doc to folder (#107)
-
Build and packaging
Cheers,
--The Fuzion Team.