Для Linux разработали кооперативный fiber-планировщик с per-CPU потоками планировщика, интеграцией io_uring и stealing задач с учётом топологии. Fibers — это легковесные стековые корутины: они приостанавливаются, а не блокируют поток ОС, что даёт высокую конкурентность с минимальными накладными расходами.
В проекте есть примитивы синхронизации: FiberFuture, FiberFutex, FiberMutex, FiberSequencer, FiberEvent, FairFiberMutex. Утилитарная библиотека включает lock-free структуры, замеры времени через TSC, пул памяти, логирование и макросы assert. Для отладки прилагается GDB-расширение (fiber-list, fiber-savecontext, fiber-restorecontext, fiber-switchcontext).
Сборка требует CMake >=3.28, Ninja, Clang 21. Опционально — ccache, Boost headers, libelf (для профайлера). Остальные зависимости (GTest, Google Benchmark, liburing, libbpf, bpftool, librseq, cxxopts и другие) подтягиваются как подмодули в contrib/. Два asm-файла Boost.Context для переключения волокон и заголовки systemtap для USDT тоже вендорятся напрямую. Для http-perf и s3-perf можно доустановить Poco, AWS SDK и jemalloc через флаги configure.
Тесты запускаются командой bb test, бенчмарки — bb bench. Есть несколько видов перф-тестов. file-perf измеряет асинхронный файловый I/O через io_uring: можно менять размер блока, глубину очереди (iodepth), режим (randread, randwrite, seqread) и число параллельных задач. fio-perf запускает сравнение с fio. net-perf — TCP-echo бенчмарк; параметры: число соединений, задержка на сервере, размер сообщения. Отдельно идёт net-perf-asio — то же самое, но на Boost.Asio C++20 корутинах для прямого сравнения. http-perf гоняет HTTP/1.1 GET: по умолчанию использует внутренний HTTP-сервер на Poco (один fiber на соединение), можно переключить на nginx через флаг --nginx. s3-perf тестирует S3-объектное хранилище: поднимает локальный MinIO, поддерживает чтение, запись, параллельные задания и глубину очереди. Все перф-утилиты умеют генерировать flamegraph и печатать счётчики производительности. Команда bb perf all прогоняет все бенчмарки подряд. Длительность и прогревочное время можно переопределить.
Проект полностью документирован: docs/scheduler.md (цикл планировщика, переключение контекста, асинхронный I/O, отмена сна, дизайн work-stealing и бенчмарки), docs/sync.md (синхронизация), docs/util.md (утилиты), docs/perf.md (результаты бенчмарков и сравнение с fio), docs/coroutines.md (стековые vs бесстековые корутины). Примеры использования лежат в src/fibers/tests/.