{"id":13424418,"url":"https://github.com/facebookexperimental/libunifex","last_synced_at":"2025-10-08T21:13:51.879Z","repository":{"id":37396787,"uuid":"218405352","full_name":"facebookexperimental/libunifex","owner":"facebookexperimental","description":"Unified Executors","archived":false,"fork":false,"pushed_at":"2025-02-27T18:14:57.000Z","size":2511,"stargazers_count":1558,"open_issues_count":103,"forks_count":191,"subscribers_count":57,"default_branch":"main","last_synced_at":"2025-04-12T04:43:53.096Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/facebookexperimental.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-10-29T23:50:53.000Z","updated_at":"2025-04-11T21:53:20.000Z","dependencies_parsed_at":"2023-02-15T04:31:59.440Z","dependency_job_id":"2d9a463b-d51f-4588-8929-3d84dcb9fc30","html_url":"https://github.com/facebookexperimental/libunifex","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebookexperimental%2Flibunifex","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebookexperimental%2Flibunifex/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebookexperimental%2Flibunifex/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebookexperimental%2Flibunifex/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/facebookexperimental","download_url":"https://codeload.github.com/facebookexperimental/libunifex/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254119449,"owners_count":22017947,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T00:00:54.072Z","updated_at":"2025-10-08T21:13:46.845Z","avatar_url":"https://github.com/facebookexperimental.png","language":"C++","funding_links":[],"categories":["Libraries","\u003ca name=\"cpp\"\u003e\u003c/a\u003eC++","Standard/Support Libraries","C++","Concurrency"],"sub_categories":["C++"],"readme":"# Overview\n\nThe 'libunifex' project is a prototype implementation of the C++ sender/receiver\nasync programming model that is currently being considered for standardisation.\n\nThis project contains implementations of the following:\n* Schedulers\n* Timers\n* Asynchronous I/O (Linux w/ io_uring)\n* Algorithms that encapsulate certain concurrency patterns\n* Async streams\n* Cancellation\n* Coroutine integration\n\n# Status\n\nThis project is still evolving and should be considered experimental in nature. No guarantee is made for API or ABI stability.\n\n**Build status**\n- on Github Actions: [![GitHub Actions Status](https://github.com/facebookexperimental/libunifex/workflows/libunifex%20CI/badge.svg?branch=main)](https://github.com/facebookexperimental/libunifex/actions)\n\n# Documentation\n\n* [Overview](doc/overview.md)\n* [Concepts](doc/concepts.md)\n* [API Reference](doc/api_reference.md)\n* Topics\n  * [Cancellation](doc/cancellation.md)\n  * [Debugging](doc/debugging.md)\n  * [Customisation Points](doc/customisation_points.md)\n\n# Requirements\n\nA recent compiler that supports C++17 or later. Libunifex is known to work\nwith the following compilers:\n\n* GCC, 11.x and later\n* Clang, 12.x and later\n* MSVC 2019.6 and later\n\nThis library also supports C++20 coroutines. You will need to compile with\ncoroutine support enabled if you want to use the coroutine integrations.\nThis generally means adding `-std=c++2a` or `-fcoroutines-ts` on Clang (see \"Configuring\" below).\n\n## Linux\n\nThe io_uring support on Linux requires a recent kernel version\n(5.6 or later).\n\nSee http://git.kernel.dk/cgit/linux-block/log/?h=for-5.5/io_uring\n\nThe io_uring support depends on liburing: https://github.com/axboe/liburing/\n\n## Windows\n\n`windows_thread_pool` executor requires Windows Vista or later.\n\n# Building\n\nThis project can be built using CMake.\n\nThe examples below assume using the [Ninja](https://ninja-build.org/) build system.\nYou can use other build systems supported by CMake.\n\n## Configuring\n\nFirst generate the build files under the `./build` subdirectory.\n\nFrom the libunifex project root:\n\n```sh\ncmake -G Ninja -H. -Bbuild \\\n      -DCMAKE_CXX_COMPILER:PATH=/path/to/compiler\n```\n\nBy default, this builds libunifex in C++17 without coroutines. If you want\nto turn on coroutines with clang, add:\n\n```sh\n      -DCMAKE_CXX_FLAGS:STRING=-fcoroutines-ts\n```\n\nTo use libc++ with clang, which has coroutine support, you should also add:\n\n```sh\n      -DCMAKE_CXX_FLAGS:STRING=-stdlib=libc++ \\\n      -DCMAKE_EXE_LINKER_FLAGS:STRING=\"-L/path/to/libc++/lib\"\n```\n\nIf you want to build libunifex as C++20, add:\n\n```sh\n      -DCMAKE_CXX_STANDARD:STRING=20\n```\n\n## Building Library + Running Tests\n\nTo build the library and tests.\n\nFrom the `./build` subdirectory run:\n```sh\nninja\n```\n\nOnce the tests have been built you can run them.\n\nFrom the `./build` subdirectory run:\n```sh\nninja test\n```\n\n# License\n\nThis project is made available under the Apache License, version 2.0, with LLVM Exceptions.\n\nSee [LICENSE.txt](LICENSE.txt) for details.\n\nSee also:\n* Terms of Use - https://opensource.facebook.com/legal/terms\n* Privacy Policy - https://opensource.facebook.com/legal/privacy\n\n# References\n\nC++ standardisation papers:\n* [P2300](https://wg21.link/P2300) \"`std::execution`\"\n* [P0443](https://wg21.link/P0443) \"`std::execution`\"\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffacebookexperimental%2Flibunifex","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffacebookexperimental%2Flibunifex","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffacebookexperimental%2Flibunifex/lists"}