beman.net29
provides senders for asynchronous network operations.
It is based on P2762. Both the proposal
and the implementation are in an early state although basic
functionality is provided.
beman.net29
builds on top of beman.execution26
. The
implementation should allow multiple ways how to support asynchronous
operations although currently the only implemented approach is based
on poll(2)
. Implementations using kqueue(2)
, epoll(2)
,
io_uring
, and IOCP hopefully follow soon. It should also be
possible use various libraries for asynchronous operations like
libevent
, libuv
, etc.
There are plenty of things which need to be done. Some of these are listed in the issues section. Other contributions are, of course, also welcome. Aside from contributing code the project welcomes reports on usage experience, code reviews, defect reports, features requests, etc. There are plenty contribution opportunities.
If you want to contribute, you won't be left alone! Please e-mail Dietmar Kühl if want help or mentoring for contributing to the library.
At the February 2024/Tokyo meeting the Networking SG4 discussion recommended not to provide a low-level interface for networking! Instead, a IETF TAPS based implementation should be used. As a result, the shape of the interface will be different. However, even if the public interface is using IETF TAPS the implementation will use a lower-level interface which can likely use something akin to the current interface.
Currently, the interfaces are entirely implemented in headers, i.e.,
there isn't a library needed. However, using the library libbeman_net29
should make the relevant paths to headers available. The following
instructions build the library and the examples (required libraries are
obtained and build using these instructions):
cmake -B build
cmake --build build
The code is working on MacOS building with the system's
clang
and recent gcc
.
It should hopefully also work on Linux but it isn't tested, yet.
Windows isn't supported, yet, primarily because the relevant class
for the networking operations are different.