Документ фиксирует возможности, намеренно отложенные после bootstrap соглашений. Порядок — ориентировочный; приоритеты уточняются по мере появления кода и тестов.
См. также ARCHITECTURE.md.
- Архитектурный документ и Cursor rules
- Корневой
CMakeLists.txt, targetnetlib::netlib - Минимальные заголовки-заглушки и Catch2 smoke-тест
-
cmake/netlib_features.cmake— probeNETLIB_HAS_STD_EXECUTION -
execution::detail::backend— std и fallback - Базовый
thread_pool/executor/scheduler - CI на Linux (GCC, Clang); best-effort Windows (MSVC)
-
event_loop+ reactordetail(Linuxepollпервым) -
tcp_socket,tcp_acceptor,endpoint(async connect/write/read) - Интеграционные тесты с loopback (TCP echo, sync ping, accept/connect)
- TDD:
tests/fakes/,tests/unit/,socket_backend/reactor_backend -
async_read_some: unit-сценарии + integration echo на async (без blocking recv) - Unit-тесты
tcp_acceptorна фейках
Цель: опциональный модульный интерфейс без отказа от headers.
| Элемент | Статус |
|---|---|
| CMake option | NETLIB_BUILD_MODULES (default OFF), probe NETLIB_HAS_MODULES |
| Модули | netlib.net.simple, netlib.net.medium, netlib.net в modules/ |
| Targets | netlib::simple, netlib::medium, netlib::net_module |
| Потребление | import netlib.net.simple; зеркало #include <netlib/simple.hpp> |
За: быстрее пересборка у крупных потребителей.
Против: сложность CI, разброс поддержки modules в компиляторах.
-
NETLIB_ENABLE_COROUTINES+ probe toolchain -
execution::task<T>,co_await scheduler,sync_wait -
net::connect_async,write_all_async,read_some_async - Пример
tcp_echo_client_coro -
when_allдля двух task -
accept_async, integrationtcp_echo_coro -
generator<T>сco_await gen.next(sched) -
when_allдляstd::vector<task<T>> -
spawn— detached task -
when_allдля void, void+T, vector<task<void>> -
then— последовательная композиция -
net/coro_tcp.hpp— read_string, tcp_echo_peer, tcp_serve_echo_once - variadic
when_all→std::tuple(3+ task, не-void) -
read_exact_async,read_exact_vec_async -
delay_async(scheduler + event_loop),event_loop::run_after -
when_any,with_timeout,connect_with_timeout/read_*_with_timeout - timerfd (Linux) для
event_loop::run_after - kqueue EVFILT_TIMER в том же kqueue, что сокеты (macOS)
-
tcp_socket::cancel_io— снятие pending async I/O -
cancellation_token/cancellation_sourceдля coro awaitables -
*_with_timeout+ token;accept_with_timeout;tcp_acceptor::cancel_accept -
net/tcp_coro.hpp— tcp_connect, tcp_echo_server_loop, run_until_cancelled - пример
tcp_echo_server_coro(graceful shutdown через cancellation_source) -
when_any/with_timeout: колбэкиon_loser_*/on_work_lostдля кооперативной отмены - integration:
server_coro_shutdown(cancel выходит изtcp_echo_server_loop) - API_LAYERS.md — callback / awaitables / tcp_coro; пометки на
async_* -
read_string_with_timeout, тестыaccept_with_timeout, примерclient_coro_timeout
Сейчас: исключения + доменные типы ошибок.
v2: expected<T, error_code> для предсказуемых сетевых сбоев без unwind на hot path.
-
cmake --install+netlibConfig.cmake+find_package(netlib) - Документация: INSTALL.md
-
socket_handle— удержание fd в async I/O;io_handle()для цепочек операций -
make_default_reactor()— Linux epoll, macOS kqueue, Windows WSAPoll - CI: ubuntu (GCC/Clang), macos-latest, windows-latest
- Публикация релизов / vcpkg / Conan
Цель: опциональный netlib_single.hpp для проектов без CMake.
- Генерация скриптом, не ручное копирование.
- Не заменяет основной способ поставки.
-
socket_backend:create_udp_socket,try_sendto,try_recvfrom -
udp_socket: bind,async_send_to,async_recv_from,cancel_io - unit (fake) + integration loopback (POSIX)
- coroutine awaitables:
send_to_async,recv_from_async,udp_coro.hpp -
send_to_with_timeout/recv_from_with_timeout - примеры
examples/udp_echo/(server, server_coro, client_coro) - integration:
udp_server_coro_shutdown(cancel выходит изudp_echo_loop)
-
unix_endpoint,unix_stream_socket,unix_stream_acceptor -
socket_backend:create_unix_stream_socket,bind_unix,start_connect_unix - POSIX + fake; Windows — явный
net_error - unit + integration loopback; NET_UNIX.md
- coroutine awaitables +
examples/unix_echo/ -
connect_unix_with_timeout, integration shutdown
- UNIX domain datagram (SOCK_DGRAM)
- TLS (только если появится std или явное решение о минимальной dep — иначе out of scope)
- DNS async resolver
-
README.md,docs/GETTING_STARTED.md - Примеры
examples/tcp_echo/(server + client) - Umbrella
#include <netlib/netlib.hpp> - Документация в
docs/*.md+ PlantUML (docs/diagrams/) — без Doxygen/mkdocs - Benchmarks в
benchmarks/(NETLIB_BUILD_BENCHMARKS, без внешних deps)
Статус и smoke — V1_RELEASE.md.
- Fallback execution проходит CI без
NETLIB_HAS_STD_EXECUTION. - TCP echo-тест на Linux через reactor + thread pool.
Сборка на Windows— WSAPoll + winsock smoke; полноценный IOCP — v2.- Нет внешних зависимостей кроме Catch2 в dev.