All Projects → chrberger → libcluon

chrberger / libcluon

Licence: MPL-2.0 license
libcluon is a small and efficient, single-file and header-only library written in modern C++ to power microservices.

Programming Languages

C++
36643 projects - #6 most used programming language
CMake
9771 projects
shell
77523 projects
python
139335 projects - #7 most used programming language
Inno Setup
370 projects
Makefile
30231 projects

Projects that are alternatives of or similar to libcluon

docker-dns-ad-blocker
A lightweight dnsmasq DNS server to block traffic to known ad servers with optional DNSCrypt support. Supports x86_64 and Raspberry Pi (armhf).
Stars: ✭ 78 (-3.7%)
Mutual labels:  x86-64, armhf, aarch64
cross
“Zero setup” cross compilation and “cross testing” of Rust crates
Stars: ✭ 3,550 (+4282.72%)
Mutual labels:  aarch64, powerpc, s390x
Cross
“Zero setup” cross compilation and “cross testing” of Rust crates
Stars: ✭ 2,461 (+2938.27%)
Mutual labels:  aarch64, powerpc, s390x
pinktrace
Pink's Tracing Library
Stars: ✭ 20 (-75.31%)
Mutual labels:  x86-64, aarch64, powerpc
Cemu
Cheap EMUlator: lightweight multi-architecture assembly playground
Stars: ✭ 666 (+722.22%)
Mutual labels:  x86-64, aarch64, powerpc
Docker Homebridge
Homebridge Docker. HomeKit support for the impatient using Docker on x86_64, Raspberry Pi (armhf) and ARM64. Includes ffmpeg + libfdk-aac.
Stars: ✭ 1,847 (+2180.25%)
Mutual labels:  x86-64, armhf, aarch64
Unisimd Assembler
SIMD macro assembler unified for ARM, MIPS, PPC and x86
Stars: ✭ 63 (-22.22%)
Mutual labels:  x86-64, aarch64, powerpc
insaneworks-packer-template
CentOS 7-8 8Stream / AlmaLinux 8 / FreeBSD 12 - 13 x64 + VirtualBox / VMWare for Packer Template + FreeBSD 13 / AlmaLinux 9 + Parallels
Stars: ✭ 38 (-53.09%)
Mutual labels:  freebsd, x86-64, aarch64
O
🌀 Text editor suitable for writing git commit messages and editing Markdown files. Can build executables and jump to errors at the press of `ctrl-space`, for several programming languages. Can format code with `ctrl-w`. Provides general syntax highlighting, rainbow parenthesis and cut/paste portals. o is intentionally limited to VT100.
Stars: ✭ 54 (-33.33%)
Mutual labels:  freebsd, openbsd
Ruby Vmstat
A focused and fast library to gather memory, cpu, network, load avg and disk information
Stars: ✭ 68 (-16.05%)
Mutual labels:  freebsd, openbsd
Qtfm
Qt File Manager
Stars: ✭ 73 (-9.88%)
Mutual labels:  freebsd, openbsd
Awesome Unix
All the UNIX and UNIX-Like: Linux, BSD, macOS, Illumos, 9front, and more.
Stars: ✭ 973 (+1101.23%)
Mutual labels:  freebsd, openbsd
Arcan
Arcan - [Display Server, Multimedia Framework, Game Engine] -> "Desktop Engine"
Stars: ✭ 885 (+992.59%)
Mutual labels:  freebsd, openbsd
Zapret
Обход DPI в linux
Stars: ✭ 1,148 (+1317.28%)
Mutual labels:  freebsd, openbsd
Raspberrypipkg
DEPRECATED - DO NOT USE | Go here instead ->
Stars: ✭ 758 (+835.8%)
Mutual labels:  freebsd, aarch64
Libtuntap
The portable Tun/Tap devices configuration utility
Stars: ✭ 107 (+32.1%)
Mutual labels:  freebsd, openbsd
Fisy Fuzz
This is the full file system fuzzing framework that I presented at the Hack in the Box 2020 Lockdown Edition conference in April.
Stars: ✭ 110 (+35.8%)
Mutual labels:  freebsd, openbsd
Duf
Disk Usage/Free Utility - a better 'df' alternative
Stars: ✭ 7,240 (+8838.27%)
Mutual labels:  freebsd, openbsd
Postinstall
💻 Bash Script to automate post-installation steps
Stars: ✭ 104 (+28.4%)
Mutual labels:  freebsd, openbsd
Mg
Micro (GNU) Emacs-like text editor ❤️ public-domain
Stars: ✭ 117 (+44.44%)
Mutual labels:  freebsd, openbsd

libcluon

Linux & OSX Build (TravisCI) Win64 Build (AppVeyor) Test Coverage Coverity Analysis CII Best Practices
Build Status Build status codecov Coverity Scan CII Best Practices

License API documentation Win (x86_64) Ubuntu (x86_64) Ubuntu (armhf) Ubuntu (aarch64) Ubuntu (s390x) Ubuntu (powerpc) Alpine (x86_64) Alpine (armhf) Alpine (aarch64)

libcluon is a small single-file, header-only library written in modern C++ library to glue microservices - in a clever way - simply: cluon. Its name is inspired by gluon, an elementary particle acting as exchange particle.

libcluon is distributed as single-file, header-only library - just drop cluon-complete.hpp into your project, #include "cluon-complete.hpp", and compile your project with a modern C++ compiler (C++14 or newer)

Say you want to quickly realize a distributed software system where individual software components exchange messages and you want to keep your project as simple and clean as possible - that's a typical use-case for libcluon. Getting Started Tutorial using an online C++ compiler.

Table of Contents

Features

  • Written in highly portable and high quality C++14
  • Available as header-only, single-file distribution - just drop cluon-complete.hpp into your project, #include "cluon-complete.hpp", and compile your project with a modern C++ compiler (C++14 or newer)
  • Message compiler produces fully self-contained messages that do only depend on C++14 - external libraries are not needed allowing easy embedding into existing projects
  • Native implementation of Protobuf for data serialization & deserialization: Example
  • Native implementation of LCM/ZCM for data serialization & deserialization: Example
  • Native implementation of JSON for data serialization & deserialization: Example
  • Native implementation of MsgPack for data serialization & deserialization: Example
  • libcluon natively available for JavaScript via Emscripten: libcluon.js
  • Portable implementation of publish/subscribe communication (Linux, MacOSX, Windows): Example
  • Intermediate Data Representation (IDR) enables flexible message transformations at runtime; for example: Convert Protobuf to JSON or convert OD4 to JSON or convert LCM to JSON at runtime without generating any data structures beforehand
  • Message self-reflection to extract portable message specifications at runtime: Examples
  • Message transformatiom into platform-independent CSV format: Examples

Dependencies

No dependencies! All you need is a C++14-compliant compiler as the project ships the following dependencies as part of the source distribution:

As part of our CI strategy thanks to TravisCI and AppVeyor, we are continuously building with:

  • Darwin 16.7.0 (x86_64)/AppleClang 9.0.0.9000038

  • FreeBSD 11.1 (x86_64)/GCC 6.4.0

  • NetBSD 8.0 (x86_64)/GCC 5.5.0

  • OpenBSD 6.3 (x86_64)/clang 5.0.1

  • Windows (x86_64)/MSVC 19.13.26129.0

  • Ubuntu 18.04 LTS (x86_64)/GCC 7.4.0

  • Ubuntu 18.04 LTS (x86_64)/clang 7.0.0

  • Ubuntu 16.04 LTS (x86_64)/GCC 5.4.0

  • Ubuntu 16.04 LTS (x86_64)/clang 7.0.0

  • Ubuntu 14.04 LTS (armhf)/clang 3.8.1

  • Ubuntu 14.04 LTS (x86_64)/GCC 8.0.1

  • Ubuntu 14.04 LTS (x86_64)/GCC 7.3.0

  • Ubuntu 14.04 LTS (x86_64)/GCC 6.4.0

  • Ubuntu 14.04 LTS (x86_64)/GCC 5.5.0

  • Ubuntu 14.04 LTS (x86_64)/clang 6.0.1

  • Ubuntu 14.04 LTS (x86_64)/clang 5.0.2

  • Ubuntu 14.04 LTS (x86_64)/clang 5.0.0

  • Ubuntu 14.04 LTS (x86_64)/clang 4.0.1

  • Ubuntu 14.04 LTS (x86_64)/clang 3.9.1

  • Ubuntu 14.04 LTS (x86_64)/clang 3.8.0

Installation

Installation as single-file, header-only library

libcluon is provided as header-only, single-file library as well - just drop cluon-complete.hpp into your project, #include "cluon-complete.hpp" where you want to use libcluon, and compile your project with a modern C++ compiler (C++14 or newer).

Installation on Ubuntu 20.04 LTS

We are providing pre-compiled binaries for Ubuntu 20.04 LTS (Focal Fossa) via Ubuntu's Launchpad for amd64, i386, armfh, and arm64; simply add the following PPA to your sources list:

sudo add-apt-repository ppa:chrberger/libcluon

Afterwards, update your package database and install libcluon:

sudo apt-get update
sudo apt-get install libcluon

Installation on Ubuntu 18.04 LTS

We are providing pre-compiled binaries for Ubuntu 18.04 LTS (Bionic Beaver) via Ubuntu's Launchpad for amd64, i386, armfh, and arm64; simply add the following PPA to your sources list:

sudo add-apt-repository ppa:chrberger/libcluon

Afterwards, update your package database and install libcluon:

sudo apt-get update
sudo apt-get install libcluon

Installation on Debian

To use libcluon on Debian, you need to add the repository key first:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8EA63C9470BA0E595B75BBA2A92E492AC0B8C7EC

Afterwards, install add-apt-repository and its dependencies:

sudo apt install dirmngr software-properties-common

Then, you can add the libcluon repository:

sudo add-apt-repository ppa:chrberger/libcluon

Now, you can finally install libcluon:

sudo apt update && sudo apt install libcluon

Installation on Alpine 3.13

We are providing pre-compiled binaries for Alpine 3.13 for x86_64, armfh, and aarch64; simply install the pre-compile .apk package as follows:

apk add libcluon --no-cache --repository https://chrberger.github.io/libcluon/alpine/v3.13 --allow-untrusted

Installation on Windows

We are providing pre-compiled binaries including debug symbols for Windows 64 via BinTray here: https://bintray.com/chrberger/libcluon/libcluon-win64-debug#files/

Build from sources on the example of Ubuntu 16.04 LTS

To compile libcluon from sources on an Ubuntu 16.04 LTS (Xenial Xerus) system, you need to have build-essential, cmake, and git installed:

sudo apt-get install build-essential git cmake

Afterwards, simply clone our Git repository:

git clone https://github.com/chrberger/libcluon.git

As an alternative, you can download our latest source release from here: https://github.com/chrberger/libcluon/releases/latest

Change to your working copy and create a build folder:

cd libcluon
mkdir build
cd build

Next, run cmake to create the necessary build files:

cmake ../libcluon

Finally, compile and install the software:

make
make test
make install

Tutorials & API Documentation

Contributing

We are happy to receive your PRs to accelerate libcluon's development; before contributing, please take a look at the Contribution Documents.

License

  • This project is released under the terms of the Mozilla Public License 2.0 - License: MPL-2.0 - FAQ
  • Commercial support is available at [email protected]
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].