|
join 1.0
lightweight network framework library
|
join is a modular C++ network runtime framework for Linux, designed for optimized throughput and latency system-level networking.
It provides a set of composable libraries covering networking primitives, concurrency, serialization, cryptography, and Linux network fabric management.
Designed for:
Not designed for:
join focuses on providing robust, efficient building blocks for:
The framework is a collection of specialized modules that build upon one another:
| Module | Purpose | Highlights |
|---|---|---|
core | Foundation | Epoll Reactor, TCP/UDP/TLS, Unix Sockets, Thread Pools, Lock-Free Queues & Allocator. |
fabric | Network Control | Netlink Interface Manager, ARP client, DNS Resolver. |
crypto | Security | OpenSSL Wrappers, HMAC, Digital Signatures, Base64. |
data | Serialization | High-perf JSON (DOM/SAX), MessagePack, Zlib Streams. |
services | Protocols | HTTP/1.1 (Client/Server), SMTP, Mail Parsing. |
Install build tools and compilers:
Install required libraries and test dependencies:
Compilers: Both GCC and Clang are supported. Clang requires
libclang-rt-devfor coverage instrumentation (--coverage).
OpenSSL provides the core TLS runtime.
| Option | Library | Default | Description |
|---|---|---|---|
JOIN_ENABLE_NUMA | libnuma-dev | OFF | Enables NUMA aware memory binding for LocalMem and ShmMem. |
Install as needed:
With optional backends:
| Option | Default | Description |
|---|---|---|
BUILD_SHARED_LIBS | ON | Build as shared libraries. |
JOIN_ENABLE_CRYPTO | ON | Build the crypto module. |
JOIN_ENABLE_DATA | ON | Build the data module. |
JOIN_ENABLE_FABRIC | ON | Build the fabric module. |
JOIN_ENABLE_SERVICES | ON | Build the services module (requires crypto, data, fabric). |
JOIN_ENABLE_NUMA | OFF | Enable NUMA support (requires libnuma-dev). |
JOIN_ENABLE_SAMPLES | OFF | Build sample programs. |
JOIN_ENABLE_TESTS | OFF | Build the test suite. |
JOIN_ENABLE_COVERAGE | OFF | Enable code coverage instrumentation (requires Debug build). |
join exports standard CMake targets. To use it in your project:
Every commit is validated against an extensive test suite to ensure stability in concurrent environments: