Fibers NEWS

Fibers is a facility that provides Go-like concurrency for Guile Scheme.

fibers 1.4.3 -- 2026-04-19
==========================

* Make cancelation ("nack") of timers and and port waiters thread-safe
  https://codeberg.org/guile/fibers/issues/162

* Fix type error in ‘dequeue-match’, which is used by channels
  https://codeberg.org/guile/fibers/issues/164

* Correctly handle closed ports in ‘make-wait-operation’
  https://codeberg.org/guile/fibers/issues/168

fibers 1.4.2 -- 2025-11-12
==========================

* Fix memory leak for choices involving wait-until-port* operations
  https://codeberg.org/guile/fibers/issues/154

* Fix out-of-tree builds where (fibers config) would not be found.
  https://codeberg.org/guile/fibers/issues/140

* Replace ‘sleep’ in (fibers) to avoid “overrides core binding” warning.
  https://codeberg.org/guile/fibers/pulls/142

* Use ‘SIGXCPU’ only on Linux-based systems to stop interrupt threads.
  https://codeberg.org/guile/fibers/issues/144

fibers 1.4.1 -- 2025-09-14
==========================

* Fix cross-compilation support.
  https://codeberg.org/guile/fibers/issues/111

* Fix regression introduced in 1.4.0 in timer wheels that could lead
  to 100% CPU use, spinning on zero-timeout ‘epoll_wait’ calls.
  https://codeberg.org/guile/fibers/issues/135

* Fix occasional ‘SIGABRT’ while running the ‘tests/basic.scm’ tests,
  which was more likely to occur on machines with more than 4–8 CPU cores.
  https://codeberg.org/guile/fibers/issues/127

fibers 1.4.0 -- 2024-08-30
==========================

* New procedure 'dynamic-wind*' that behaves like 'dynamic-wind' except
  for interacting nicely with rescheduling.

* Implement new constructors 'make-read-operation', 'make-write-operation',
  and related procedures to aid in defining new operations on ports.

* Implement a new operation 'accept-operation' corresponding to 'accept'.

* Add '%fibers-version' variable.

* Printing scheduler objects is now way less verbose.

* Fix memory leak on choice operation involving a timer operation.
  (<https://codeberg.org/guile/fibers/issues/109>)

fibers 1.3.1 -- 2023-05-30
==========================

* Fix posix-clocks-darwin usage of extension library.

fibers 1.3.0 -- 2023-05-29
==========================

* Replace PSQ timer queue with new timer wheel.
  (see https://codeberg.org/guile/fibers/pulls/84)

* Fix libevent cross-compilation issues.

* Always define (getaffinity) and (setaffinity) if not found.

* Rename 'scm_pipe2' to 'scm_fibers_pipe2' to fix a build error with Guile
  3.0.9.

* Fix bit-vector deprecation warnings.

fibers 1.2.0 -- 2022-12-22
==========================

* Add support for 'libevent' backend. Currently only native 'epoll' is
  supported. If 'epoll' is not detected we would default to 'libevent'. If you
  have 'epoll' but want to try 'libevent' you can always do './configure
  --disable-epoll'.

* Do not re-add FD finalisers on FDs that already have one.

* Introduce 'pipe2' (for 'epoll') and mark wake pipe as O_CLOEXEC.

* Implement operations for waiting for readability / writability.

* Support streaming responses in Fibers' web server to allow for bigger
  responses.

* Fix behaviour of 'epoll-wake!' after 'run-fibers'.

fibers 1.1.1 -- 2022-06-03
==========================

* Always add file descriptors finalizer in (schedule-task-when-fd-active).

* Do not load 'epoll.so' during cross-compilation.

* Pass '--target' and '-L' to 'guild compile' when cross-compiling.

* Do not refer to 'epoll.so'-provided variables at expansion time.

* Install .go files to …/site-ccache, not …/ccache.

fibers 1.1.0 -- 2022-01-31
==========================

* Destroy peer schedulers when returning from run-fibers.

* Handle EPOLLHUP like EPOLLERR.

* Don't use deprecated types scm_t_uint64 and scm_t_int64.

* Garbage collect synchronized items from channels queues.

* Added guix.scm for local development.

* Improve fibers performance by installing "catch" in scheduler instead of in
  the fiber itself.

* Rebased fibers on top of lighter-weight "tasks".

* Garbage collect old condition waiters.

* Multiple documentation fixes and improvements.

* Added benchmarks.

* Support Guile 3.0 compilation.

fibers 1.0.0 -- 2017-02-20
==========================

* See git log.

fibers 0.5.0 -- 2017-01-19
==========================

* Add parallelism support, with both work stealing and explicit work
  sharing.  Enabled by default.

* Allow channel sends and receives and other Concurrent ML-like
  operations to be performed from outside of fibers.

* Enable preemption by default.

fibers 0.4.0 -- 2016-12-16
==========================

* Added preemption support; see `run-fibers' documentation in the
  manual for more.

* Documented REPL commands and examples.

* Documented more pitfalls.

* Use `suspendable-continuation?' if present.

* Fibers each have their own dynamic state.

fibers 0.3.0 -- 2016-10-12
==========================

* See git log.

fibers 0.2.0 -- 2016-09-11
==========================

* See git log.

fibers 0.1.0 -- 2016-07-02
==========================

* First release.


Copyright (C) 2016-2022 Andy Wingo <wingo at pobox dot com>
Copyright (C) 2023 Maxime Devos <maximedevos at telenet dot be>

Copying and distribution of this file, with or without modification, are
permitted in any medium without royalty provided the copyright notice
and this notice are preserved.
