Simple, cross-platform async C++ communication library for Serial, TCP, and UDP
unilink provides a unified interface for asynchronous communication across different transports, allowing applications to switch between Serial, TCP, and UDP with minimal code changes.
The project prioritizes API clarity, predictable runtime behavior, and stability over rapid feature expansion.
- Zero-copy memory safety via SafeSpan: Efficient data handling without unnecessary copies.
- Fluent API with CRTP Builders: Type-safe configuration with improved method chaining.
- Unified Async Interface: Consistent API across TCP, UDP, and Serial transports.
- C++17 compliant compiler (required)
- CMake 3.10 or later
vcpkg install jwsung91-unilinkFor CMake usage, source builds, and other installation options, see the Installation Guide.
Unilink provides Python bindings for core functionality (TcpClient, TcpServer, Serial, Udp).
For a complete guide, see the Python Bindings Guide.
- Python 3.8+ (dev headers)
- pybind11 (
sudo apt-get install pybind11-dev python3-pybind11on Ubuntu) - Boost (
boost-system,boost-asio,boost-thread)
Pass -DBUILD_PYTHON_BINDINGS=ON to CMake:
cmake -B build -S . -DBUILD_PYTHON_BINDINGS=ON cmake --build buildThis generates unilink_py.cpython-*.so in build/lib. Add this directory to your PYTHONPATH to use it:
export PYTHONPATH=$PWD/build/lib python3 -c "import unilink_py; print(unilink_py.__doc__)"The documentation is organized by learning stage, from quick start to advanced topics. You do not need to read everything to get started.
- Quick Start Guide – Get up and running in minutes
- Installation Guide – Package, source, and build options
- Build Guide – Build configurations and flags
- Requirements – Supported platforms and dependencies
- Runtime Behavior – Threading model, reconnection, backpressure
- Memory Safety – Ownership rules and safety guarantees
- System Overview – High-level structure
- API Reference – Public API overview
- Performance Optimization – Build and runtime considerations
- Testing Guide – Running tests and CI integration
- Best Practices – Recommended usage patterns
- Troubleshooting – Common issues and resolutions
unilink is released under the Apache License, Version 2.0.
Commercial use, modification, and redistribution are permitted. For details, see the LICENSE and NOTICE files.
Copyright © 2025 Jinwoo Sung
