Need help with libunifex?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

469 Stars 61 Forks Other 470 Commits 50 Opened issues


Unified Executors

Services available


Need anything else?

Contributors list


The 'libunifex' project is a prototype implementation of the C++ sender/receiver async programming model that is currently being considered for standardisation.

This project contains implementations of the following: * Schedulers * Timers * Asynchronous I/O (Linux w/ io_uring) * Algorithms that encapsulate certain concurrency patterns * Async streams * Cancellation * Coroutine integration


This project is still evolving and should be considered experimental in nature. No guarantee is made for API or ABI stability.

Build status - on Github Actions: GitHub Actions Status



A recent compiler that supports C++17 or later. Libunifex is known to work with the following compilers:

  • GCC, 9.x and later
  • Clang, 9.x and later
  • MSVC 2019.6 and later

This library also supports C++20 coroutines. You will need to compile with coroutine support enabled if you want to use the coroutine integrations. This generally means adding

on Clang (see "Configuring" below).

Note that MSVC 2019.6 support for C++20 coroutines has known issues and is not currently supported.


The io_uring support on Linux requires a recent kernel version (5.6 or later).


The io_uring support depends on liburing:


executor requires Windows Vista or later.


This project can be built using CMake.

The examples below assume using the Ninja build system. You can use other build systems supported by CMake.


First generate the build files under the


From the libunifex project root:

cmake -G Ninja -H. -Bbuild \

By default, this builds libunifex in C++17 without coroutines. If you want to turn on coroutines with clang, add:


To use libc++ with clang, which has coroutine support, you should also add:

      -DCMAKE_CXX_FLAGS:STRING=-stdlib=libc++ \

If you want to build libunifex as C++20, add:


Building Library + Running Tests

To build the library and tests.

From the

subdirectory run:

Once the tests have been built you can run them.

From the

subdirectory run:
ninja test


This project is made available under the Apache License, version 2.0.

See LICENSE.txt for details.

See also: * Terms of Use - * Privacy Policy -


C++ standardisation papers: * P0443R13 "A Unified Executors Proposal for C++" * ...

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.