Skip to content

Releases: fix8mt/fiber

Release v2.2.0

21 Sep 00:58

Choose a tag to compare

Changes in this release

  • Expanded wiki
  • cmake improvements
  • updated test cases
  • bug fixes, improvements
  • generator wip

Release v2.1.0

02 Apr 20:36

Choose a tag to compare

Changes in this release

  • Expanded wiki
  • Built-in unit tests using Catch2
  • More examples
  • Exception handling
  • name now first member of fiber_params
  • Expanded sorting for fiber_monitor
  • New global flags hidedetached, skipmain, termthrow, excepthandling
  • name() returns std::string_view
  • using std::invocable
  • removed detached queue from cvars
  • exit path for fiber_exit
  • self-switch detection
  • jfiber
  • size_detached(), get_exception_ptr()
  • make_stack(), wait_any(), launch_all_n(), launch_all_with_params_n()
  • struct std::hash<FIX8::fiber_id>
  • bug fixes, improvements

Release v2.0.4

03 Jan 07:25

Choose a tag to compare

New implementation, now known as FIX8::fiber

This is a novel fiber implementation with a similar interface to std::thread. Taking any callable object, fibers cooperatively yield amongst themselves and the calling function within a single thread. Using fibers, single threaded applications can be written as though they were multi-threaded, with the advantage that no concurrency management is required. For multi-threaded applications, each thread maintains its own list of running fibers, leaving the user to implement their own concurrency controls. This implementation allows you to move fibers between threads. This can be used to share work or scale an application by adding more fibers to other or new threads.

  • x86_64 Linux only
  • single header-only
  • stackful fibers; stacksize configurable for each fiber
  • supports any callable object (eg. function, class member, lambda expression) with optional arguments
  • heap based, memory-mapped or placement stacks; user definable stack can also be used
  • context switch implemented with inline assembly
  • fibers can be moved to other threads (can be configured out for performance)
  • std::invoke style ctor, with arguments perfectly forwarded to the callable
  • extended API, supporting resume, resume_if, resume_with, kill, kill_all, suspend, schedule, join, join_if, detach, resume_main, schedule_if, move, suspend_if, wait_all and more
  • built-in fiber printer
  • optional built-in terminal based monitor
  • helper templates including async, make_fiber, launch_all and launch_all_with_params and more
  • supports fibers and this_fiber namespaces
  • ctor based fiber parameter struct (POD) - including fiber name, custom stack and stack size, launch policy, launch order and auto join
  • built-in round-robin scheduler
  • can be used with std::packaged_task, std::future, std::promise and so forth
  • fast, very lightweight
  • fiber exceptions and handling
  • built-in instrumentation (can be configured out for performance)
  • lots of examples
  • full API documentation
  • supports jfiber (similar to std::jthread)

Full Changelog: v2.0.1...v2.0.1

v1.3.1

09 Sep 00:26

Choose a tag to compare

fontext functions now static members, link issues resolved

v1.2.0

02 Aug 06:45
cefab4d

Choose a tag to compare

Fiber resources released automatically when fiber goes out of scope.
Printer
Exception handling
f8_fiber_manager

v1.1.0

16 Jul 06:21
b07aeca

Choose a tag to compare

f8fiber is now header only!

Initial release

11 Jul 11:20
7021e5a

Choose a tag to compare

Initial release with working examples.