Skip to content

MayBeLaterOrNot/unilink

 
 

Repository files navigation

unilink

CI Coverage

Platform vcpkg

Description

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.

Feature Highlights

  • 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.

Requirements

  • C++17 compliant compiler (required)
  • CMake 3.10 or later

📦 Installation

vcpkg (recommended)

vcpkg install jwsung91-unilink

For CMake usage, source builds, and other installation options, see the Installation Guide.

🐍 Python Bindings

Unilink provides Python bindings for core functionality (TcpClient, TcpServer, Serial, Udp).

For a complete guide, see the Python Bindings Guide.

Prerequisites

  • Python 3.8+ (dev headers)
  • pybind11 (sudo apt-get install pybind11-dev python3-pybind11 on Ubuntu)
  • Boost (boost-system, boost-asio, boost-thread)

Build

Pass -DBUILD_PYTHON_BINDINGS=ON to CMake:

cmake -B build -S . -DBUILD_PYTHON_BINDINGS=ON cmake --build build

This 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__)"

📚 Documentation

The documentation is organized by learning stage, from quick start to advanced topics. You do not need to read everything to get started.

🚦 Getting Started

🏗️ Architecture & Design

🔧 Guides & Reference

💡 Examples & Tutorials


📄 License

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

About

Simple, cross-platform async C++ communication library for Serial, TCP, and UDP

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • C++ 92.5%
  • CMake 6.9%
  • Other 0.6%