Awesome C++

A curated list of awesome C++ (or C) frameworks, libraries,
resources, and shiny things. Inspired by awesome-… stuff.
Standard Libraries
C++ Standard Library - including STL Containers, STL Algorithm,
STL Functional, etc.
Frameworks
C++ generic frameworks and libraries.
- abseil-cpp -
Abseil C++ Common Libraries. [Apache2]
- Apache C++ Standard Library
- STDCXX, A collection of algorithms, containers, iterators, and other
fundamental components. [retired] [Apache2]
- APR - Apache Portable Runtime.
Another library of cross-platform utility functions. [Apache2]
- ASL - Adobe Source Libraries
provides peer-reviewed and portable C++ source libraries. [MIT]
- AUI - Declarative
UI toolkit for C++20. [MPL2]
- Boost :zap: - A large
collection of generic C++ libraries. [Boost] website
- BDE - The BDE
Development Environment from Bloomberg Labs. [Apache2]
- C++ Workflow :zap: -
C++ Parallel Computing and Asynchronous Networking Engine.
[Apache2]
- CGraph - A
cross-platform DAG framework based on C++ without any 3rd-party.
[MIT]
- Cinder - A community-developed,
free and open source library for professional-quality creative coding.
[BSD]
- Coost - A tiny boost
library in C++11. [MIT]
- Cxxomfort -
A small, header-only library that backports various facilities from more
recent C++ Standards to C++03 and later. [MIT]
- Dlib :zap: - A
toolkit for making real world machine learning and data analysis
applications in C++. [Boost] website
- EASTL -
Electronic Arts Standard Template Library. [BSD]
- ETL - Embedded Template
Library. [MIT]
- ffead-cpp -
Framework for Enterprise Application Development. [Apache2]
- Folly - An
open-source C++ library developed and used at Facebook. [Apache2]
- FunctionalPlus -
Functional Programming Library for C++. Write concise and readable C++
code. [MIT]
- GLib - GLib
provides the core application building blocks for libraries and
applications written in C. [LGPL]
- itlib - A collection of
std-like single-header C++ libraries [MIT]
- JUCE - An
all-encompassing C++ class library for developing cross-platform
software. [Core-Module: ISC, Rest: GPL2/GPL3/Proprietary] website
- Kigs framework
- A free and open source C++ modular multi-purpose cross platform RAD
framework. [MIT] website
- libPhenom -
libPhenom is an eventing framework for building high performance and
high scalability systems in C. [Apache2]
- LibSourcey -
C++11 evented IO for real-time video streaming and high performance
networking applications. [LGPL]
- LibU - A
multiplatform utility library written in C. [BSD]
- libxutils -
Simple and yet powerful cross-platform C library providing data
structures, algorithms and much more. [MIT]
- Loki - A C++ library
of designs, containing flexible implementations of common design
patterns and idioms. [MIT]
- MiLi - Minimal
headers-only C++ Library. [Boost]
- OpenFrameworks
- A cross platform open source toolkit for creative coding in C++. [MIT]
website
- PhotonLibOS - A
comprehensive C++ framework featuring efficient user-space threading
(coroutine with work-stealing), I/O, networking, RPC, HTTP, etc., and
used extensively in Alibaba. It is compatible with C++ 14/17/20/23,
Linux, MacOS, x86-64, ARM64, gcc and clang. [Apache2] website
- Qt :zap: - A cross-platform
application and UI framework. [GPL/LGPL/Proprietary] website
- Reason - A cross
platform framework designed to bring the ease of use of Java, .Net, or
Python to developers who require the performance and strength of C++.
[GPL2]
- ROOT - A set of OO frameworks
with all the functionality needed to handle and analyze large amounts of
data in a very efficient way. Used at CERN. [LGPL]
- rpp - Minimal
Rust-inspired C++20 STL replacement. [MIT]
- SaneCppLibraries
- a set of C++ platform abstraction libraries for macOS, Windows and
Linux. [MIT] website
- Seastar - An
advanced, open-source C++ framework for high-performance server
applications on modern hardware. [Apache-2.0 License] seastar.io
- Siv3D - Siv3D
(OpenSiv3D) is a C++20 framework for creative coding (2D/3D games, media
art, visualizers, and simulators). [MIT] website
- STLport - An exemplary version
of STL. [Free]
- STXXL - Standard
Template Library for Extra Large Data Sets. [Boost]
- tbox - A glib-like
multi-platform c library. [Apache2] website
- Ultimate++ - A C++
cross-platform rapid application development framework. [BSD]
- Windows Template
Library - A C++ library for developing Windows applications and UI
components. [Public]
- xtd - Modern C++20
framework to create console (CLI), forms (GUI) and unit tests (xUnit)
applications on Windows, macOS, Linux, iOS, Android, FreeBSD and Haiku.
[MIT]
- Yomm2 - Fast,
Orthogonal, Open multi-methods. Supersedes Yomm11 [Boost]
Artificial Intelligence
- ANNetGPGPU -
A GPU (CUDA) based Artificial Neural Network library. [LGPL]
- btsk - Game Behavior
Tree Starter Kit. [zlib]
- Evolving Objects - A
template-based, ANSI-C++ evolutionary computation library which helps
you to write your own stochastic optimization algorithms insanely fast.
[LGPL]
- frugally-deep
- Header-only library for using Keras models in C++. [MIT]
- Genann - Simple
neural network library in C. [zlib]
- MXNet -
Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with
Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia,
Scala, Go, JavaScript and more. website
- PyTorch - Tensors
and Dynamic neural networks in Python with strong GPU acceleration. website
- flashlight -
Flashlight is a fast, flexible machine learning library written entirely
in C++. [BSD]
- Recast/Detour
- (3D) Navigation mesh generator and pathfinder, mostly for games.
[zlib]
- TensorFlow -
An open source software library for numerical computation using data
flow graphs. [Apache]
- Txeo - A modern C++
wrapper for TensorFlow. [Apache]
- oneDNN - An
open-source cross-platform performance library for deep learning
applications. [Apache] website
- CNTK - Microsoft
Cognitive Toolkit (CNTK), an open source deep-learning toolkit.
[Boost]
- tiny-dnn - A
header only, dependency-free deep learning framework in C++11.
[BSD]
- Veles - Distributed
platform for rapid Deep learning application development. [Apache]
- Kaldi - Toolkit for
speech recognition. [Apache]
Asynchronous Event Loop
- Asio - A
cross-platform C++ library for network and low-level I/O programming
that provides developers with a consistent asynchronous model using a
modern C++ approach. [Boost] website
- Boost.Asio - A
cross-platform C++ library for network and low-level I/O programming.
[Boost] website
- C++
Actor Framework - An Open Source Implementation of the Actor Model
in C++. [BSD-3-Clause] website
- Ichor - An
event queue which focuses on thread safety and provides dependency
injection. [MIT]
- libev - A full-featured and
high-performance event loop that is loosely modelled after libevent, but
without its limitations and bugs. [BSD and GPL]
- libevent - An event notification
library. [BSD]
- libhv -
Cross-platform event loop library. [BSD]
- libuv - Cross-platform
asynchronous I/O. [BSD]
- promise-cpp -
Header only library that implements Promise/A+ standard. [Anti-996]
- uvw - C++ wrapper for
libuv. [MIT]
- uv-cpp - a simple
interface, high-performance network library based on C++11. [MIT]
Audio
Audio, Sound, Music, Digitized Voice Libraries
- Amplitude
Audio SDK - A cross-platform audio engine designed with the needs of
games in mind. [Apache-2.0] website
- Aubio - A library for
audio and music analysis.[GPL-3.0] website
- AudioFile - A
simple C++ library for reading and writing audio files. [MIT]
- audioFlux -
A C library for audio and music analysis, feature extraction. [MIT]
- dr_libs - Single
file audio decoding libraries for C and C++. [Unlicense]
- FMOD - An easy to use
crossplatform audio engine and audio content creation tool for games.
[Free for non-commercial/Commercial]
- KFR - Fast, modern C++ DSP
framework, FFT, FIR/IIR filters, Sample Rate Conversion.
[GPL/Proprietary]
- LAME - LAME is a
high quality MPEG Audio Layer III (MP3) encoder. [LGPL]
- libsndfile - C
library with C++ wrapper for reading and writing files containing
sampled sound through one standard library interface. [LGPL-2.1] website
- libsoundio - C
library for cross-platform real-time audio input and output. [MIT] website
- Maximilian -
C++ Audio and Music DSP Library. [MIT]
- OpenAL - Open Audio Library - A
crossplatform audio API. [BSD/LGPL/Proprietary]
- miniaudio -
Single file audio playback and capture library. [Unlicense] website
- ni-media
- C++ library for reading and writing audio files. [MIT]
- Opus - A totally open,
royalty-free, highly versatile audio codec. [BSD]
- PortAudio - PortAudio is a
free, cross-platform, open-source, audio I/O library. [MIT]
- rnnoise - Recurrent
neural network for audio noise reduction. [BSD-3-Clause]
- SELA - SimplE
Lossless Audio. [MIT]
- SoLoud - Easy,
portable audio engine for games. [zlib]
- Speex - A free codec for free
speech. Obsoleted by Opus. [BSD]
- Tonic - Easy and
efficient audio synthesis in C++. [Unlicense]
- Vorbis - Ogg Vorbis is a fully
open, non-proprietary, patent-and-royalty-free, general-purpose
compressed audio format. [BSD]
- minimp3 - Public
domain, header-only MP3 decoder with clean-room implementation.
[CC0]
- Verovio - Verovio
is a fast and lightweight music notation engraving library. [LGPL] website
- Wav2Letter++
- Public domain, a fast open source speech processing toolkit written
entirely in C++ and uses the ArrayFire tensor library and the flashlight
machine learning library for maximum efficiency. [BSD]
Biology
Bioinformatics, Genomics, Biotech
- BioC++ - C++
Computational Libraries for Bioinformatics. [BSD]
- Chaste - An open source
C++ library for the computational simulation of mathematical models
developed for physiology and biology. [BSD]
- libsequence -
A C++ library for representing and analyzing population genetics data.
[GPL]
- SeqAn - Algorithms and data
structures for the analysis of sequences with the focus on biological
data. [BSD/3-clause]
- Vcflib - A C++ library
for parsing and manipulating VCF files. [MIT]
- Wham - Structural
variants (SVs) in Genomes by directly applying association tests to BAM
files. [MIT]
BitTorrent
- jech/dht - BitTorrent DHT
library in C. [MIT]
- libtorrent
(a.k.a. libtorrent-rasterbar) - An efficient feature complete C++
bittorrent implementation. [BSD]
- LibTorrent
(a.k.a. libtorrent-rakshasa) - BitTorrent library. [GPL]
- libutp - uTorrent
Transport Protocol library. [MIT]
Chemistry
Chemistry, Quantum Chemistry, Solid-State Chemistry/Physics,
Geochemistry, Biochemistry
- d-SEAMS - A
molecular dynamics trajectory analysis engine in C++ and Lua with Nix.
It is an acronym for Deferred Structural Elucidation Analysis for
Molecular Simulations. [GPL] website
- gromacs - A
message-passing parallel molecular dynamics implementation. [GPL] website
- Reaktoro - A
computational framework in C++ and Python for modeling chemically
reactive systems. [LGPL] website
- LAMMPS - A classical
molecular dynamics code with a focus on materials modeling. It’s an
acronym for Large-scale Atomic/Molecular Massively Parallel Simulator.
[GPL] website
- MADNESS -
Multiresolution Adaptive Numerical Environment for Scientific
Simulation. [GPL] website
- MPQC - The
Massively Parallel Quantum Chemistry program, MPQC, computes properties
of atoms and molecules from first principles using the time independent
Schrödinger equation. [GPL] website
- Psi - An ab initio
computational chemistry package. [GPL] website
CLI
Console/Terminal User Interface, Command Line Interface
- Argh! - A
minimalist, frustration-free, header-only argument handler. [BSD]
- argparse -
Argument Parser for Modern C++. [MIT]
- args - A simple
header-only C++ argument parser library. [MIT]
- barkeep - Small C++
header to display async animations, counters, and progress bars.
[Apache-2.0] website
- Boost.Program_options
- A library to obtain program options via conventional methods such as
command line and config file. [Boost] website
- cli - A
cross-platform header only C++14 library for interactive command line
interfaces (Cisco style). [Boost]
- CLI11 - Header only
single or multi-file C++11 library for simple and advanced CLI parsing.
[BSD]
- clipp - Easy to use,
powerful and expressive command line argument handling for C++11/14/17
contained in a single header file. [MIT]
- cpp-terminal -
Small header only C++ library for writing multiplatform terminal
applications. [MIT]
- Ctrl+C -
Crossplatform C++11 library to handle Ctrl+C event in custom functions.
[MIT]
- cxxopts -
Lightweight C++ command line option parser. [MIT]
- docopt.cpp - A
library to generate option parser from docstring. [MIT/Boost]
- FINAL CUT - Library
for creating terminal applications with text-based widgets. [LGPL]
- FTXUI - C++
Functional Terminal User Interface. [MIT]
- gflags - Commandline
flags module for C++. [BSD]
- imtui - Immediate
Mode Text-based User Interface. [MIT]
- indicators -
Activity indicators for Modern C++. [MIT]
- linenoise - A
small self-contained alternative to readline and libedit.
[BSD-2-Clause]
- linenoise-ng
- A small, portable GNU readline replacement for Linux, Windows and
MacOS which is capable of handling UTF-8 characters. [BSD]
- Lyra - A simple to
use, composable, command line parser for C++ 11 and beyond. [Boost]
- Ncurses - A
terminal user interface. [MIT]
- oof - Convenient,
high-performance RGB color and position control for console output.
[MIT]
- PDCurses - Public
domain curses library with both source code and pre-compiled library
available. [PublicDomain]
- popl - A single-header
templated command line arguments and ini file parser for C++ 11 and
beyond. [MIT]
- replxx - A
readline and libedit replacement that supports UTF-8, syntax
highlighting, hints, works on Unix and Windows. [BSD]
- tabulate - Table
Maker for Modern C++. [MIT]
- TCLAP - A mature, stable
and feature-rich library for defining and accessing command line
arguments in ANSI C++. [MIT]
- termbox - A C library
for writing text-based user interfaces. [MIT]
- TermOx - C++17
Terminal User Interface(TUI) Library. [MIT]
- tuibox - A
single-header terminal UI (TUI) library, capable of creating
mouse-driven, interactive applications on the command line. [MIT]
Compression
Compression and Archiving Libraries
- bit7z - A C++ static
library offering a clean and simple interface to the 7-zip shared
libraries. [MPL2]
- Brotli - Brotli
compression format. Developed by Google. [MIT]
- bzip2 - A freely available,
patent free, high-quality data compressor. [BSD]
- bzip3 - A
better and stronger spiritual successor to BZip2. [LGPL]
- FastLZ - Small &
portable byte-aligned LZ77 compression. [MIT]
- FiniteStateEntropy
- New generation entropy codecs : Finite State Entropy and Huff0.
- heatshrink
- data compression library for embedded/real-time systems [ISC]
- Kanzi - a
modern, modular, portable and efficient lossless data compressor
implemented in C++. [Apache-2.0]
- KArchive
- A library for creating, reading, writing and manipulating file
archives like zip and tar. It also provides transparent compression and
decompression of data, using formats like gzip, via a subclass of
QIODevice. [LGPL]
- libarchive -
Multi-format archive and compression library. [New BSD] website
- LZ4 - Extremely Fast
Compression algorithm. [BSD] website
- LZFSE - LZFSE
compression library and command line tool. Developed by Apple.
- LZHAM - Lossless data
compression library with a compression ratio similar to LZMA but with
much faster decompression. [BSD]
- LZMA
:zap: - The default and general compression method of 7z format.
[PublicDomain] website
- LZMAT - An extremely
fast real-time lossless data compression library. [GPL]
- miniz - Single C
source file Deflate/Inflate compression library with zlib-compatible
API, ZIP archive reading/writing, PNG writing. [MIT]
- Minizip - Zlib
with latest bug fixes that supports PKWARE disk spanning, AES
encryption, and IO buffering. [zlib]
- minizip-ng -
Fork of the popular zip manipulation library found in the zlib
distribution. [zlib]
- PhysicsFS - A library to
provide abstract access to various archives. It is intended for use in
video games, and the design was somewhat inspired by Quake 3’s file
subsystem. [zlib]
- Rapidgzip - Gzip
Decompression and Random Access for Modern Multi-Core Machines.
[Apache-2/MIT]
- smaz - Small strings
compression library. [BSD]
- Snappy - A fast
compressor/decompressor. [BSD]
- ZLib - A very compact compression
library for data streams. [zlib]
- zlib-ng - zlib for
the “next generation” systems. Drop-In replacement with some serious
optimizations. [zlib]
- zstd - Zstandard -
Fast real-time compression algorithm. Developed by Facebook. [BSD]
- ZZIPlib - Provides
read access on ZIP-archives. [MPL/LGPL]
Concurrency
Concurrency and Multithreading
- alpaka
- Abstraction library for parallel kernel acceleration. [LGPLv3+]
- ArrayFire - A
general purpose GPU library. [BSD]
- Async++ - A
lightweight concurrency framework for C++11, inspired by the Microsoft
PPL library and the N3428 C++ standard proposal. [MIT]
- Boost.Compute - A
C++ GPU Computing Library for OpenCL. [Boost] website
- Bolt - A C++
template library optimized for GPUs. [Apache2]
- BS::thread_pool - A
fast, lightweight, and easy-to-use C++17 thread pool library [MIT]
- Channel
- Thread-safe container for sharing data between threads. [MIT]
- ck - Concurrency
primitives, safe memory reclamation mechanisms and non-blocking data
structures. [BSD]
- concurrentqueue
- A fast multi-producer, multi-consumer lock-free concurrent queue for
C++11. [BSD,Boost]
- Coros - An
easy-to-use and fast library for task-based parallelism, utilizing
coroutines. [BSL-1.0]
- CUB - CUB provides
state-of-the-art, reusable software components for every layer of the
CUDA programming mode. [New BSD]
- cuda-api-wrappers
- Lightweight, Modern-C++ wrappers for the CUDA GPU programming runtime
API. [BSD]
- cupla
- C++ API to run CUDA/C++ on OpenMP, Threads, TBB, … through Alpaka.
[LGPLv3+]
- C++React - A
reactive programming library for C++11. [Boost]
- FiberTaskingLib
- Task-based multi-threading library that supports task graphs with
arbitrary dependencies. [Apache]
- HPX - A general
purpose C++ runtime system for parallel and distributed applications of
any scale. [Boost]
- Intel Games
Task Scheduler - A task scheduling framework designed for the needs
of game developers. [MIT]
- Intel Parallel
STL - Intel® implementation of C++17 STL for C++11 and above.
[Apache2]
- Intel TBB -
Intel® Threading Building Blocks. [Apache2]
- junction - A
library of concurrent data structures in C++. [BSD]
- Kokkos - A
performance portable programming model for parallel execution and memory
abstraction. [BSD]
- libcds - A C++
library of Concurrent Data Structures. [BSD]
- Libclsph - An
OpenCL based GPU accelerated SPH fluid simulation library. [MIT]
- libdill -
Introduces structured concurrency in C. [MIT]
- libdispatch
- Grand Central Dispatch (GCD), developed by Apple Inc., is a task
parallelism technology based on the thread pool pattern. libdispatch is
a library that provides the implementation of GCD’s services.
[Apache-2.0] website
- libfork - A
bleeding-edge, lock-free, wait-free, continuation-stealing tasking
library built on C++20’s coroutines. [MPL-2.0] website
- libmill -
Introduces Go-style concurrency in C. [MIT]
- marl - Marl is a hybrid
thread / fiber task scheduler written in C++ 11. [Apache-2.0]
- moderngpu -
moderngpu is a productivity library for general-purpose computing on
GPUs. It is a header-only C++ library written for CUDA. The unique value
of the library is in its accelerated primitives for solving irregularly
parallel problems. [FreeBSD & Copyright, Sean Baxter]
- NCCL - Optimized
primitives for collective multi-GPU communication. [BSD]
- Neco - Concurrency
library for C (coroutines). [MIT]
- OpenCL - The open
standard for parallel programming of heterogeneous systems.
- OpenMP - The OpenMP API.
- rotor - Event
loop friendly C++ actor micro framework. [MIT]
- SObjectizer
- An implementation of Actor, Publish-Subscribe, and CSP models in one
rather small C++ framework. [BSD-3-Clause]
- Quantum - A
powerful C++ coroutine dispatcher framework built on top of Boost.Coroutine2.
- RaftLib - The RaftLib C++ library,
streaming/dataflow concurrency via C++ iostream-like operators.
[Apache2]
- readerwriterqueue
- A fast single-producer, single-consumer lock-free queue for C++.
[BSD]
- stdgpu - Efficient
STL-like Data Structures on the GPU. [Apache2]
- Taskflow - A
General-purpose Parallel and Heterogeneous Task Programming System.
(renamed from Cpp-Taskflow) [MIT]
- ThreadPool - A
simple C++11 Thread Pool implementation [zlib]
- Thrust - A parallel
algorithms library which resembles the C++ Standard Template Library
(STL). [Apache2]
- transwarp - A
header-only C++ library for task concurrency. [MIT]
- VexCL - A C++ vector
expression template library for OpenCL/CUDA. [MIT]
- STAPL - A C++
parallel programming framework designed to work on both shared and
distributed memory parallel computers. [BSD]
- concurrencpp - A
general concurrency library containing tasks, executors, timers and
C++20 coroutines to rule them all.
Configuration
Configuration files, INI files
- inifile-cpp
- A header-only and easy to use Ini file parser for C++. [MIT]
- inih - Simple .INI
file parser in C, good for embedded systems. [BSD-3-Clause]
- inih - Single header
only C++ version of inih.
[BSD-3-Clause]
- ini-cpp - Single
header only C++ version, with some handy read/write interface, extend
from inih. [BSD-3-Clause]
website
- iniparser - INI
file parser. [MIT]
- inipp - Simple
header-only C++ ini parser and generator. [MIT]
- libconfig - C,
C++ library for processing structured configuration files. [LGPL-2.1] website
- libconfuse -
Small configuration file parser library for C. [ISC]
- mINI - INI file
reader and writer. [MIT]
- simpleini -
Cross-platform C++ library providing a simple API to read and write
INI-style configuration files. [MIT]
- toml++ -
Header-only TOML parser and serializer for C++17 and later. [MIT] website
- toml11 - a C++11
(or later) header-only toml parser/encoder depending only on C++
standard library. [MIT]
Containers
- C++
B-tree - A template library that implements ordered in-memory
containers based on a B-tree data structure. [Apache2]
- dynamic_bitset -
Simple Useful Libraries: C++17/20 header-only dynamic bitset. [MIT] website
- fixed-containers
- Header-only C++20 library that provides fixed capacity constexpr
containers. [MIT]
- flat_hash_map - A
very fast flat hashtable with Fibonacci hashing.
- frozen - a
header-only, constexpr alternative to gperf for C++14 users.
[Apache-2.0]
- Hashmaps -
Implementation of open addressing hash table algorithms in C++.
[MIT]
- hat-trie - C++
implementation of a fast and memory efficient HAT-trie. [MIT]
- Hopscotch map
- A fast header-only hash map which uses hopscotch hashing for
collisions resolution. [MIT]
- LSHBOX - A
c++ toolbox of locality-sensitive hashing (LSH), provides several
popular LSH algorithms, also support Python and MATLAB. [GPL]
- parallel-hashmap
- A family of header-only, very fast and memory-friendly hashmap and
btree containers [Apache2] website
- PGM-index -
A data structure that enables fast lookup, predecessor, range searches
and updates in arrays of billions of items using orders of magnitude
less space than traditional indexes. [Apache2] website
- plf::colony -
An unordered “bag”-type container which outperforms std containers in
high-modification scenarios while maintaining permanent pointers to
non-erased elements regardless of insertion/erasure. [zLib] website
- plf::list
- A std::list implementation which removes range splicing in order to
enable cache-friendlier structure, yielding significant performance
gains. [zLib] website
- plf::stack - A
replacement container for the std::stack container adaptor, with better
performance than any std container in a stack context. [zLib] website
- ring_span
lite - A simplified implementation of Arthur O’Dwyer’s ring_span
implementation ie. a circular buffer view. [MIT]
- robin-hood-hashing
- Fast & memory efficient hashtable based on robin hood hashing for
C++14. [MIT]
- robin-map - Fast
hash map and hash set using robin hood hashing. [MIT]
- sparsepp - A
fast, memory efficient hash map for C++. [BSD 3-clause]
- sqlitemap -
Persistent map backed by SQLite. [MIT]
- st_tree - A
fast and flexible c++ template class for tree data structures.
[Apache-2.0]
- svector - Compact
SVO optimized vector for C++17 or higher. [MIT]
- tree.hh - An
STL-like C++ header-only tree library. [GPL2+]
- unordered_dense -
A fast & densely stored hashmap and hashset based on robin-hood
backward shift deletion. [MIT]
Cryptography
Cryptography and Encryption Libraries
- Bcrypt - A cross
platform file encryption utility. Encrypted files are portable across
all supported operating systems and processors. [BSD]
- BeeCrypt - A portable
and fast cryptography library. [LGPLv2.1+]
- Botan - A crypto library
for C++. [BSD-2]
- Crypto++ - A free
C++ class library of cryptographic schemes. [Boost] website
- digestpp - C++11
header-only message digest (hash) library. [PublicDomain]
- GnuPG - A complete and free
implementation of the OpenPGP standard. [GPL]
- GnuTLS - A secure
communications library implementing the SSL, TLS and DTLS protocols.
[LGPL2.1]
- Libgcrypt - A
general purpose cryptographic library originally based on code from
GnuPG. [LGPLv2.1+]
- LibreSSL - A free version of
the SSL/TLS protocol forked from OpenSSL in 2014. [?]
- libsodium -
P(ortable|ackageable) NaCl-based crypto library, opinionated and easy to
use. [ISC]
- libhydrogen -
A lightweight, secure, easy-to-use crypto library suitable for
constrained environments. [ISC]
- LibTomCrypt - A
fairly comprehensive, modular and portable cryptographic toolkit.
[WTFPL]
- mbedTLS - An open
source, portable, easy to use, readable and flexible SSL library,
previously known as PolarSSL. [Apache2] website
- Nettle - A
low-level cryptographic library. [LGPL]
- OpenSSL - A robust,
commercial-grade, full-featured, and Open Source cryptography library.
[Apache] website
- retter - A
collection of hash functions, ciphers, tools, libraries, and materials
related to cryptography.
- s2n - An implementation
of the TLS/SSL protocols. [Apache]
- sha1collisiondetection
- Library and command line tool to detect SHA-1 collision in a file.
[MIT]
- Tink - A
multi-language, cross-platform library that provides cryptographic APIs
that are secure, easy to use correctly, and hard(er) to misuse.
[Apache-2.0]
- Tiny AES in C -
Small portable AES128/192/256 in C. [PublicDomain]
- Themis - crypto
library for painless data security, providing symmetric and asymmetric
encryption, secure sockets with forward secrecy, for mobile and server
platforms. [Apache2]
- HEhub - A library
for homomorphic encryption and its applications. [Apache2]
CSV
Libraries for parsing Comma Separated Value (CSV) files
- commata - Just
another header-only C++17 CSV parser. [Unlicense]
- csv2 - Fast CSV parser
for modern C++. [MIT]
- Csv::Parser -
Compile-time and runtime CSV parser written in C++17. [Zlib]
- Fast
C++ CSV Parser - Small, easy-to-use and fast header-only library for
reading CSV files. [BSD-3-Clause]
- Glaze - High
performance, header only, CSV library with reflection support.
[MIT]
- lazycsv - A fast,
lightweight and single-header csv parser for modern C++. [MIT]
- rapidcsv - An
easy-to-use, header-only C++ CSV parser library. [BSD-3-Clause]
- ssp - A header only
“csv” parser which is fast and versatile with modern C++ api. [MIT]
- Vince’s CSV
Parser - A fast, self-contained, streaming C++17 CSV parser with
optional type-casting and statistics. [MIT]
Database
Database Libraries, SQL Servers, ODBC Drivers, and Tools
- ClickHouse - C++
client for ClickHouse DBMS. [Apache2]
- CrossDB - Ultra
High-performance Lightweight Embedded and Server OLTP RDBMS. [MPL-2.0]
website
- DuckDB - in-process SQL OLAP
Database Management System. [MIT] website
- hiberlite - C++
Object-relational mapping for sqlite3. [BSD]
- Hiredis - A
minimalistic C client library for the Redis database. [BSD]
- Infinity - The
AI-native database built for LLM applications, providing incredibly fast
vector and full-text search. [Apache2]
- Kuzu - Embeddable
property graph database management system built for query speed and
scalability. Implements Cypher. [MIT] website
- Kvrocks -
A distributed key value NoSQL database that uses RocksDB as storage
engine and is compatible with Redis protocol. [Apache2]
- LevelDB - A fast
key-value storage library written at Google that provides an ordered
mapping from string keys to string values. [BSD]
- libpg_query -
C library for accessing the PostgreSQL parser outside of the server
environment. [BSD-3-Clause]
- libpqxx - The official
C++ client API for PostgreSQL. [BSD-3-Clause]
- LMDB - Very fast embedded
key/value store with full ACID semantics. [OpenLDAP]
- LMDB++ - C++11
wrapper for the LMDB embedded database library. [PublicDomain]
- mgclient - C/C++
Memgraph Client. [Apache2]
- MongoDB C
Driver - MongoDB client library for C. [Apache2]
- MongoDB C++
Driver - C++ driver for MongoDB. [Apache2]
- MongoDB Libbson - A
BSON utility library. [Apache2]
- MySQL++ - A C++
wrapper for MySQL’s C API. [LGPL]
- nanodbc - A small
C++ wrapper for the native C ODBC API. [MIT]
- ODB - An
open-source, cross-platform, and cross-database object-relational
mapping (ORM) system for C++. [GPLv2]
- redis3m - Wrapper of
hiredis with clean C++ interface, supporting sentinel and ready to use
patterns. [Apache2]
- Reindexer -
Embeddable, in-memory, document-oriented database with a high-level
Query builder interface. [Apache2] website
- RocksDB - Embedded
key-value store for fast storage from facebook. [BSD]
- SimDB
- High performance, shared memory, lock free, cross platform, single
file, minimal dependencies, C++11 key-value store. [Apache2]
- SOCI - A database
abstraction layer for C++. [Boost]
- Speedb -
Community-led project: A RocksDB compliant high performance scalable
embedded key-value store. [Apache2]
- SQLite - A completely embedded,
full-featured relational database in a few 100k that you can include
right into your project. [PublicDomain]
- SQLiteC++ -
SQLiteC++ (SQLiteCpp) is a smart and easy to use C++ SQLite3 wrapper.
[MIT]
- sqlite_modern_cpp
- Header only C++14 wrapper around sqlite library. [MIT]
- sqlite_orm -
SQLite ORM light header only library for modern C++. [AGPL + paid
MIT]
- sqlpp11 - A type safe
embedded domain specific language for SQL queries and results in C++.
[BSD-2-Clause]
- TidesDB -
High-performance, durable, transactional embedded storage engine
designed for flash and RAM optimization. [MPL-2.0] website
- TileDB - Fast
Dense and Sparse Multidimensional Array DBMS. [MIT] website
- TinyORM - Modern
C++ ORM library. [MIT] website
- UnQLite - A
self-contained, serverless, zero-configuration, transactional NoSQL
engine. [BSD-2-Clause] website
- upscaledb - An embedded “typed”
key/value store with a built-in query interface. [GPLv3]
- TigerBeetleDB
C++ client (Community) - TigerBeetle is a financial accounting
database designed for mission critical safety and performance to power
the future of financial services. [BSL-1.0]
- Trilogy -
a client library for MySQL-compatible database servers, designed for
performance, flexibility, and ease of embedding. [MIT]
- UStore -
Multi-Modal database for BLOBs, JSON, and graphs. [Apache2]
- Velox - A
C++ vectorized database acceleration library aimed to optimizing query
engines and data processing systems. [Apache-2.0] website
Data visualization
Data visualization Libraries
- gplot++ -
Cross-platform header-only C++ plotting library that interfaces with
Gnuplot. [MIT]
- matplotplusplus
- C++ Graphics Library for Data Visualization. [MIT] website
- morphologica -
C++ header-only graphing and data visualization with modern OpenGL.
[Apache-2.0] website
Debug
Debugging Libraries, Memory Leak and Resource Leak Detection,
Unit Testing
- backward-cpp -
A beautiful stack trace pretty printer for C++. [MIT]
- Bencher - A suite of continuous
benchmarking tools designed to catch performance regressions in CI.
[MIT]/[Apache2]
- benchmark - Google
provided small microbenchmark support library. [Apache2]
- Boost.Test - Boost
Test Library. [Boost] website
- check - Check is a
unit testing framework for C. [LGPL-2.1] website
- doctest - The
lightest feature rich C++ single header testing framework. [MIT]
- Catch2 - A modern,
C++-native, test framework for unit-tests, TDD and BDD. [Boost]
- Celero - C++
Benchmarking Framework. [Apache2]
- cpp-dump - A
C++ library for debugging purposes that can print any variable, even
user-defined types. [MIT]
- CppUTest - Unit
testing and mocking framework for C/C++. [BSD-3-clause]
- CUTE - C++ Unit Testing Easier.
[LGPL3]
- CMocka - unit testing framework
for C with support for mock objects. [Apache2]
- CppBenchmark
- Performance benchmark framework for C++ with nanoseconds measure
precision. [MIT]
- Cpptrace - A
simple, portable, and self-contained C++ stacktrace library supporting
C++11 and greater. [MIT]
- CppUnit -
C++ port of JUnit. [LGPL2]
- CrashCatch -
Single-header crash reporting for C++ that logs stack traces and creates
.dmp and .txt crash dumps. [MIT] website
- CTest -
The CMake test driver program. [BSD]
- dbg-macro - A
dbg(…) macro for C++. [MIT]
- DebugViewPP -
Debug logging viewer. [Boost]
- Deleaker - A tool for resource
leak detection, including memory, GDI and handle leaks.
- FakeIt - Simple
mocking framework for C++. [MIT]
- fff - A
micro-framework for creating fake C functions. [MIT]
- Google
Mock - A library for writing and using C++ mock classes. [BSD]
- Google Test -
Google C++ Testing Framework. [BSD]
- Hippomocks -
Single-header mocking framework. [LGPL-2.1]
- IceCream-Cpp -
Never use cout/printf to debug again [MIT]
- ig-debugheap -
Multiplatform debug heap useful for tracking down memory errors.
[BSD]
- libassert -
The most over-engineered C++ assertion library. [MIT]
- libtap - Write tests
in C. [GPL2]
- microprofile -
Profiler with web-view for multiple platforms. [Unlicense]
- MinUnit - A minimal
unit testing framework for C self-contained in a single header file.
[MIT]
- nanobench -
Simple, fast, accurate single-header microbenchmarking functionality for
C++11/14/17/20. [MIT] website
- Nanotimer -
A simple low-overhead cross-platform timer class for benchmarking.
[zLib] website
- Nonius - A C++
micro-benchmarking framework. [CC]
- Remotery - Single
C File Profiler with Web Viewer. [Apache2]
- snitch -
Lightweight C++20 testing framework. [Boost]
- Touca -
Open-source regression testing system that you can self-host. [Apache2]
website
- UnitTest++ - A
lightweight unit testing framework for C++. [MIT/X Consortium
license]
- Unity - Simple
Unit Testing for C. [MIT]
- utest.h - Single
header unit testing framework for C and C++. [Unlicense]
- utl::profiler
- Singe-header profiler for C++17. [MIT]
- μt - C++20
single header/single module, macro-free μ(micro)/Unit Testing Framework.
[Boost]
- VLD - Visual Leak
Detector. A free, robust, open-source memory leak detection system for
Visual C++.
Documentation
- Doxide - Modern
documentation for modern C++, configure with YAML, output Markdown.
[Apache 2.0] website
- doxygen :zap: - The
de facto standard tool for generating documentation from annotated C++
sources. [GPL2] website
- doxyrest - A
compiler from Doxygen XML to reStructuredText for Sphinx. [MIT]
- hdoc - The modern
documentation tool for C++. [AGPL/Proprietary] website
- Natural
Docs - Natural Docs is an open source documentation generator for
multiple programming languages. [AGPL/Proprietary] website
- Sphinx - Sphinx
makes it easy to create intelligent and beautiful documentation.
[BSD-2-Clause] website
DSP
Digital signal processing.
- DSPFilters -
A collection of useful C++ classes for digital signal processing.
[MIT]
- FFTW - A C library for computing
the DFT in one or more dimensions. [GPL]
- iir1 - IIR Realtime
C++ filter library. [MIT]
- kissfft - A
Fast Fourier Transform (FFT) library that tries to Keep it Simple,
Stupid. [BSD-3-Clause]
- pocketfft - FFT
implementation based on FFTPack, but with several improvements.
[BSD-3-Clause]
- wavelib - C
implementation of 1D and 2D wavelet transforms. [BSD-3-Clause]
Font
Libraries for parsing and manipulating font files.
- Fontconfig
- Font configuration and customization library. [MIT] website
- FreeType - FreeType is a
freely available software library to render fonts. [FTL &
GPLv2]
- otfcc - A C library
and utility used for parsing and writing OpenType font files.
[Apache-2.0]
- harfbuzz - A text
shaping engine. [Old MIT]
- libschrift - A
lightweight TrueType font rendering library. [ISC]
Game Engine
- Acid - A
high speed C++17 Vulkan game engine. [MIT]
- Allegro - A cross-platform
library mainly aimed for video games and multimedia programming.
[zlib]
- Axmol Engine - A
cross-platform game engine for desktop, mobile, and XBOX (UWP), derived
from Cocos2d-x-4.0. [MIT] website
- Cocos2d-x - A multi-platform
framework for building 2d games, interactive books, demos and other
graphical applications. [MIT]
- Corange - A game
engine written in pure C, SDL and OpenGL. [BSD]
- crown - Crown is a
general purpose data-driven game engine, written from scratch in
orthodox C++ with a minimalistic and data-oriented design philosophy in
mind. [MIT]
- delta3d - A
robust simulation platform. [LGPL2]
- EnTT - Gaming meets
modern C++. [MIT]
- GamePlay - A
cross-platform native C++ game framework for creating 2D/3D mobile and
desktop games. [Apache2]
- Godot - A fully
featured, open source, MIT licensed, game engine. [MIT]
- Grit -
Community project to build a free game engine for implementing open
world 3D games. [MIT]
- Halley - A
lightweight game engine written in C++14 with a “true” entity-component
system. [Apache 2.0]
- Hazel Game Engine -
Hazel is primarily an early-stage interactive application and rendering
engine for Windows. [Apache-2.0 license]
- JNGL - 2D library for
Linux, Windows, macOS, Android, iOS, Xbox, the Nintendo Switch and the
Web. [zlib] website
- KlayGE - a
cross-platform open source game engine with plugin-based architecture.
[GPLv2] website
- nCine - A
cross-platform 2D game engine with an emphasis on performance, written
in C++11 and optionally scriptable in Lua. [MIT] website
- o3de - An open-source,
real-time, multi-platform 3D engine based on Amazon Lumberyard.
[Apache2] website
- OpenXRay - a
community-modified X-Ray engine used in S.T.A.L.K.E.R. game series.
[Modified BSD/non-commercial only]
- Oxygine - A cross-platform 2D C++
game engine. [MIT]
- Panda3D - A game
engine, a framework for 3D rendering and game development for Python and
C++ programs. [Modified BSD] website
- PixelGameEngine
- The official distribution of olcPixelGameEngine, a tool used in
javidx9’s YouTube videos and projects. [OLC3]
- Polycode - A
cross-platform framework for creative code in C++ (with Lua bindings).
[MIT] website
- quakeforge -
Actively maintained branch of the original Quake engine code with 20+
years of development. [GPL-2.0]
- raylib - A simple
and easy-to-use library to enjoy videogames programming. [zlib/libpng]
website
- Spring - A powerful
free cross-platform RTS game engine. [GPLv2/GPLv3] website
- Torque2D
- An open-source and cross-platform C++ engine built for 2D game
development. [MIT] website
- Torque3D
- An open-source C++ engine built for 3D game development. [MIT] website
- toy engine - toy is a
thin and modular c++ game engine and offers simple expressive c++ idioms
to design full featured 2D or 3D games in fast iterations.
- Urho3D - A free lightweight,
cross-platform 2D and 3D game engine implemented in C++. Greatly
inspired by OGRE and Horde3D. [MIT]
- ezEngine - Is a
free, open-source game engine written in C++. Its philosophy is to be
modular and flexible, such that it can be adapted to many different use
cases. [MIT] website
Graph
- CXXGraph - free
C++(17) graph header-only library for representation and algorithms
execution. [AGPL-3.0]
- Graaf - A
general-purpose lightweight C++20 graph library. [MIT] website
GUI
Graphic User Interface
- Boden -
Native, mobile, cross-platform GUI Framework. [GPL/LGPL/Proprietary] website
- CEGUI - Flexible, cross-platform
GUI library.
- Elements -
Lightweight, fine-grained, resolution independent, modular GUI library.
[MIT]
- FLTK - Fast, light,
cross-platform C++ GUI toolkit. [LGPL2]
- FOX Toolkit - an open-source,
cross-platform widget toolkit. [LGPL]
- GacUI - GPU
Accelerated C++ User Interface, with WYSIWYG developing tools, XML
supports, built-in data binding and MVVM features. [Ms-PL]
- GTK+ - A multi-platform toolkit
for creating graphical user interfaces. [LGPL]
- gtkmm - The official C++
interface for the popular GUI library GTK+. [LGPL]
- imgui - Immediate
Mode Graphical User Interface with minimal dependencies. [MIT]
- implot - Immediate
Mode Plotting widgets for imgui. [MIT]
- iup -
Multi-platform toolkit for building graphical user interfaces.
[MIT]
- libui - Simple and
portable (but not inflexible) GUI library in C that uses the native GUI
technologies of each platform it supports. [MIT]
- MyGUI - Fast, flexible
and simple GUI. [MIT]
- nana - Nana is a
cross-platform library for GUI programming in modern C++ style.
[Boost]
- NanoGui -
A minimalistic cross-platform widget library for OpenGL 3.x or higher.
[BSD]
- NAppGUI - SDK
for building cross-platform desktop apps in ANSI-C. [MIT] website
- nuklear -
A single-header ANSI C gui library. [PublicDomain]
- QCustomPlot - Qt plotting
widget without further dependencies. [GPLv3]
- Qwt - Qt Widgets for
Technical Applications. [Own based on LGPL]
- QwtPlot3D - A
feature-rich Qt/OpenGL-based C++ programming library, providing
essentially a bunch of 3D-widgets. [zlib]
- RmlUi - The HTML/CSS
User Interface library evolved. Fork of libRocket. [MIT]
- Saucer - A modern,
cross-platform C++ webview library. [MIT]
- Sciter - Sciter is an embeddable
HTML/CSS/scripting engine aimed to be used as an UI layer of modern
desktop applications. [Free/Commercial]
- Slint - Lightweight
GUI toolkit for desktop and embedded. [GPL/Free/Proprietary] website
- TGUI - Cross-platform
modern c++ GUI. [Zlib] website
- WebUI - Use any web
browser as GUI, with your preferred language in the backend and HTML5 in
the frontend. [MIT] website
- wxCharts - A
library to create charts in wxWidgets applications. [MIT] website
- wxWidgets - A C++ library that
lets developers create applications for Windows, Mac OS X, Linux and
other platforms with a single code base. [Own LGPL]
- Yue - A library for
creating native cross-platform GUI apps. [LGPLv2]
Graphics
- assimp - Open Asset
Import Library (assimp) is a cross-platform 3D model import library
which aims to provide a common API for different 3D asset file formats.
[BSD-3-Clause] website
- bgfx - A
cross-platform rendering library. [BSD]
- Blend2D - 2D vector
graphics engine powered by a JIT compiler. [Zlib] website
- Cairo - A 2D graphics
library with support for multiple output devices. [LGPL2 or Mozilla
MPL]
- C-Turtle - A
C++11 header-only turtle graphics library acting as a CImg wrapper.
[MIT]
- Diligent
Engine - A modern cross-platform low-level 3D graphics library.
[Apache2]
- DirectXTK - A
collection of helper classes for writing DirectX 11.x code in C++.
[MIT]
- GLFW - A simple,
cross-platform OpenGL wrangling library. [zlib/libpng]
- GLFWPP - A thin
modern C++17 header-only wrapper for GLFW. [MIT]
- Harfang 3D 3D
visualization library usable in C++, Python, Lua and Go. Based on BGFX.
[GPLv3/LGPLv3/Proprietary] website
- herebedragons
- A basic 3D scene implemented with various engines, frameworks or APIs.
[MIT] website
- Horde3D - A small
3D rendering and animation engine. [EPL]
- Ion - A small and
efficient set of libraries for building cross-platform client or server
applications that use 3D graphics. [Apache2] website
- Irrlicht - A high
performance realtime 3D engine written in C++. [zlib]
- libigl - Simple C++
geometry processing library. [MPL2]
- LLGL - Low Level
Graphics Library (LLGL) is a thin abstraction layer for the modern
graphics APIs. [BSD-3-Clause]
- LunaSVG - a
standalone SVG rendering library in C++. [MIT]
- magnum - Lightweight
and modular C++11/C++14 graphics middleware for games and data
visualization. [MIT] website
- micro-gl -
Realtime, Embeddable, Headers Only C++11 CPU vector graphics. no STD
lib, no FPU and no GPU required. [CUSTOM] website
- NanoVG -
Antialiased 2D vector drawing library on top of OpenGL for UI and
visualizations. [Zlib]
- Ogre 3D :zap: - A
scene-oriented, real-time, flexible 3D rendering engine (as opposed to a
game engine) written in C++. [MIT] website
- OpenSceneGraph - An
open source high performance 3D graphics toolkit. [OSGPL]
- OpenSubdiv
- Pixar’s library for evaluating and rendering subdivision surfaces on
CPU and GPU. [Modified Apache2]
- OpenVDB - Library and tools
for storing, editing, and rendering volumetric datasets. [MPL2]
- Panda3D - A framework for 3D
rendering and game development for Python and C++. [BSD]
- Partio - Library for
wrangling particle data, with support for most common file formats.
[Modified BSD]
- Skia - A complete 2D
graphic library for drawing Text, Geometries, and Images. [BSD] website
- ThorVG - a
platform-independent portable library that allows for drawing
vector-based scenes and animations, including SVG and Lottie. [MIT] website
- TinySpline -
A small, yet powerful ANSI C library for interpolating, transforming,
and querying arbitrary NURBS, B-Splines, and Bézier curves. [MIT]
- urho3d -
Cross-platform rendering and game engine. [Many different, mostly
MIT]
- Yocto/GL - Tiny
C++ Libraries for Data-Driven Physically-based Graphics. [MIT]
- olive.c - Simple 2D
Graphics Library. [MIT]
Image Processing
- Boost.GIL - Generic
Image Library. [Boost] website
- BitmapPlusPLus
- Simple and Fast header only Bitmap C++ library. [MIT]
- CImg - A small, open source, C++
toolkit for image processing. [Own LGPL or GPL]
- CxImage -
An image processing and conversion library to load, save, display,
transform BMP, JPEG, GIF, PNG, TIFF, MNG, ICO, PCX, TGA, WMF, WBMP, JBG,
J2K images. [zlib]
- Dlib :zap: - A
modern C++11 machine learning, computer vision, numerical optimization,
and deep learning toolkit. [Boost] website
- fpng - Super fast
C++ .PNG writer/reader. [Unlicense]
- FreeImage - An open
source library that supports popular graphics image formats and others
as needed by today’s multimedia applications. [GPL2 or GPL3]
- GD - GD Graphics
Library, famously used in PHP for image loading/manipulation &
thumbnail generation. [custom permissive license, requires mention in
user docs] website
- DCMTK - DICOM
Toolkit.
- GDCM -
Grassroots DICOM library.
- ITK - An open-source,
cross-platform system for image analysis. [Apache2 from ITK 4.0]
- [Jpegli][https://github.com/google/jpegli] - an improved JPEG
encoder and decoder implementation. [BSD-3-Clause]
- Leptonica -
Leptonica is an open source library containing software that is broadly
useful for image processing and image analysis applications.
[BSD-2-Clause] website
- libavif -
Library for encoding and decoding .avif files. [BSD-2-Clause]
- libfacedetection
- Open source library for face detection in images. The face detection
speed can reach 1500FPS. [BSD]
- libjpeg-turbo
- A JPEG image codec that uses SIMD instructions to accelerate baseline
JPEG encoding and decoding. [IJG & BSD-3-Clause & zlib] website
- libjxl - JPEG XL
image format reference implementation. [BSD-3-Clause]
- libpng - the
reference library for use in applications that read, create, and
manipulate PNG (Portable Network Graphics) raster image files.
[libpng-2.0] website
- libspng - Simple,
modern libpng alternative. [BSD-2] website
- libvips - A fast
image processing library with low memory needs. [LGPL] website
- LodePNG - PNG
encoder and decoder in C and C++. [Zlib]
- Magick++ -
ImageMagick program interfaces for C++. [Apache2]
- MagickWnd -
ImageMagick program interfaces for C. [Apache2]
- MozJPEG - Improved
JPEG encoder. [BSD/BSD-3-Clause/ZLIB]
- OpenCV :zap: - Open source
computer vision. [Apache2] website
- OpenEXR - Cross-platform
library for high dynamic range imaging. [Modified BSDF]
- OpenImageIO -
Powerful image and texture wrangling library with support for a wide
number of common lossy and RAW formats. [Modified BSD]
- OpenJPEG - an
open-source JPEG 2000 codec written in C language. [BSD-2-Clause]
- QOI - The “Quite OK
Image Format” for fast, lossless image compression. [MIT]
- SAIL -
Easy-to-use cross-platform image decoding library with pluggable image
codecs. [MIT]
- Simd - C++ image
processing library with using of SIMD: SSE, SSE2, SSE3, SSSE3, SSE4.1,
SSE4.2, AVX, AVX2, AVX-512, VMX(Altivec) and VSX(Power7), NEON for ARM.
[MIT]
- stb-image
- STB single-header image loading library. [Public Domain]
- tesseract-ocr - An
OCR engine. [Apache2]
- TinyDNG - Header-only
Tiny DNG/TIFF loader and writer in C++. [MIT]
- TinyEXIF - Tiny
ISO-compliant C++ EXIF and XMP parsing library for JPEG. [MIT]
- TinyTIFF -
lightweight TIFF reader/writer library. [GPL-3.0]
- Video++ - A C++14 high
performance video and image processing library. [MIT]
- VIGRA - A generic C++
computer vision library for image analysis. [MIT X11]
- VTK - Open-source, freely
available software system for 3D computer graphics, image processing and
visualization. [BSD]
Internationalization
- gettext - GNU
‘gettext’. [GPL2]
- IBM ICU - A set of C/C++
and Java libraries providing Unicode and Globalization support.
[ICU]
- libiconv - An
encoding conversion library between different character encodings.
[GPL]
- simdutf - Unicode
routines (UTF8, UTF16, UTF32): billions of characters per second using
SSE2, AVX2, NEON, AVX-512. [Apache-2/MIT]
- uni-algo -
Unicode Algorithms Implementation for C/C++. [Unlicense or MIT]
- utf8.h - Single
header utf8 string functions for C and C++. [Unlicense]
- utf8proc - A
clean C library for processing UTF-8 Unicode data. [MIT]
Inter-process communication
- Apache Thrift - Efficient
cross-language IPC/RPC, works between C++, Java, Python, PHP, C#, and
many more other languages. Originally developed by Facebook.
[Apache2]
- Boost.Interprocess -
Header-only Boost library that supports kernel-level shared memory and
memory-mapped files, with in-built synchronization mechanisms
(semaphores, mutexes, and more). [Boost] website
- bRPC - bRPC is an
Industrial-grade RPC framework using C++ Language, which is often used
in high performance system such as Search, Storage, Machine learning,
Advertisement, Recommendation etc. [Apache2] website
- Cap’n Proto -
Fast data interchange format and capability-based RPC system. [MIT] website
- eCAL - Pub/sub,
client/server, C++/Python/C#, various message protocols (protobuf,
capnproto ..). [Apache2] website
- gRPC - A high
performance, open source, general-purpose RPC framework. [BSD] website
- Ice - Comprehensive
RPC framework with support for C++, C#, Java, JavaScript, Python and
more. [GPLv2]
- iceoryx -
True zero-copy inter-process communication framework for safety critical
systems with bindings for C, Rust. Runs on Linux, QNX, Windows, Mac OS,
FreeBSD. [Apache2] website
- libjson-rpc-cpp -
JSON-RPC framework for C++ servers and clients. [MIT]
- nanomsg - A simple
high-performance implementation of several “scalability protocols”.
[MIT] website
- nng -
nanomsg-next-generation, a light-weight brokerless messaging library.
[MIT] website
- rpclib - A modern C++
msgpack-RPC server and client library. [MIT]
- simple-rpc-cpp
- A simple RPC wrapper generator to C/C++ functions. [BSD]
- SRPC - A lightweight RPC
system that supports multiple protocols and OpenTelemetry.
[Apache2]
- WAMP - Provides RPC and pub/sub
messaging patterns. (various implementations, various languages)
- xmlrpc-c - A
lightweight RPC library based on XML and HTTP. [BSD]
JSON
- Boost.PropertyTree
- A property tree parser/generator that can be used to parse
XML/JSON/INI/Info files. [Boost] website
- cJSON -
Ultralightweight JSON parser in ANSI C. [MIT]
- DAW JSON Link
- Fast, convenient JSON serialization and parsing in C++. [BSL-1.0]
- frozen - JSON parser
and generator for C/C++. [GPL & GPL2]
- Glaze -
Extremely fast, in memory, JSON and interface library for modern C++.
[MIT]
- Jansson - C library
for encoding, decoding and manipulating JSON data. [MIT]
- jbson - jbson is
a library for building & iterating BSON data, and JSON documents in
C++14. [Boost]
- JeayeSON - A very
sane (header only) C++ JSON library. [BSD]
- Jsmn - A minimalistic
JSON parser in C. [MIT]
- json :zap: - JSON for
Modern C++. [MIT] website
- JSON++ - A JSON
parser in C++. [MIT]
- json.cpp - a baroque
JSON parsing / serialization library for C++. [Apache-2.0]
- json.h - A simple
one header/one source solution to parsing JSON in C and C++.
[Unlicense]
- json-build -
C89 tiny zero-allocation JSON serializer. [MIT]
- json-c - A JSON
implementation in C. [MIT]
- jsoncons - A
C++ header-only library for JSON and JSON-like binary formats with
JSONPointer, JSONPatch, JSONPath and JMESPath. [Boost]
- JsonCpp
- A C++ library for interacting with JSON. [MIT]
- Jsonifier -
A few classes for parsing and serializing objects from/into JSON - very
rapidly. [MIT]
- jsonParse - A
simple JSON parser in ANSI C. [MIT]
- json-parser - Very
low footprint JSON parser written in portable ANSI C. [BSD]
- json11 - A tiny JSON
library for C++11. [MIT]
- json-struct -
High performance, single header JSON parser parsing to and from C++
structs. [MIT]
- json-voorhees
- JSON library for C++. Support for C++11. No dependencies, fast and
dev-friendly. [Apache2]
- JSON Toolkit
- JSON, JSON Pointer, JSON Schema, and JSONL library for C++20.
[AGPL/Commercial]
- jute - Very simple C++
JSON Parser. [PublicDomain]
- libjson - A JSON
parser and printer library in C. easy to integrate with any model.
[LGPL]
- libjson -
Lightweight JSON library. [?]
- LIBUCL :zap: -
Universal configuration library parser. [BSD-2-Clause]
- parson - Parson is a
lighweight json library written in C. [MIT]
- PicoJSON - A
header-file-only, JSON parser serializer in C++. [BSD]
- qt-json - A
simple class for parsing JSON data into a QVariant hierarchy and vice
versa. [GPLv3]
- QJson - A qt-based
library that maps JSON data to QVariant objects. [LGPL2]
- RapidJSON :zap: -
A fast JSON parser/generator for C++ with both SAX/DOM style API. [MIT]
website
- sajson -
Lightweight, extremely high-performance JSON parser for C++11.
[MIT]
- simdjson -
Extremely fast JSON library that can parse gigabytes of JSON per second.
[Apache-2.0]
- Sonic-Cpp - A
fast JSON serializing & deserializing library, accelerated by SIMD.
[Apache-2.0]
- taoJSON -
Zero-dependency C++ header-only JSON library. [MIT]
- ujson - µjson is a
a small, C++11, UTF-8, JSON library. [MIT]
- UltraJSON -
Ultra fast JSON decoder and encoder written in C. [BSD-3-Clause]
- YAJL - A fast streaming
JSON parsing library in C. [ISC]
- yyjson - A high
performance JSON library written in ANSI C. [MIT]
Logging
- Abseil
Logging - The Abseil Logging library provides facilities for writing
log messages to stderr, files, or other sinks. [Apache-2.0]
- Blackhole -
Attribute-based logging framework, which is designed to be fast, modular
and highly customizable. [MIT]
- Boost.Log - Designed
to be very modular and extensible. [Boost] website
- BqLog - A
lightweight, high-performance logging system used in projects such as
“Honor of Kings”. [Apache-2.0]
- Easylogging++
- Extremely light-weight high performance logging library for C++11 (or
higher) applications. [MIT]
- fmtlog - A
performant fmtlib-style logging library with latency in nanoseconds.
[MIT]
- G3log - Asynchronous
logger with Dynamic Sinks. [PublicDomain]
- glog - C++
implementation of the Google logging module.
- haclog - An
extremely fast plain C logging library. [MIT]
- Log4cpp - A library of
C++ classes for flexible logging to files, syslog, IDSA and other
destinations. [LGPL]
- log4cplus - A
simple to use C++ logging API providing thread-safe, flexible, and
arbitrarily granular control over log management and configuration. [BSD
& Apache2]
- loguru - A lightweight
C++ logging library. [PublicDomain]
- lwlog - Very
fast synchronous and asynchronous C++17 logging library. [MIT]
- ng-log - C++14
library for application-level logging. [BSD-3-Clause]
- plog - Portable
and simple log for C++ in less than 1000 lines of code. [MPL2]
- reckless -
Low-latency, high-throughput, asynchronous logging library for C++.
[MIT]
- spdlog - Super fast,
header only, C++ logging library.
- templog - A very small and
lightweight C++ library which you can use to add logging to your C++
applications. [Boost]
- P7Baical - An open source
and cross-platform library for high-speed sending telemetry & trace
data with minimal usage of CPU and memory. [LGPL]
- Quill - Asynchronous
cross platform low latency logging library. [MIT]
Machine Learning
- Caffe - A fast framework
for neural networks. [BSD]
- catboost - A
fast, scalable, high performance Gradient Boosting on Decision Trees
library. [Apache2]
- CCV -
C-based/Cached/Core Computer Vision Library, A Modern Computer Vision
Library. [BSD]
- darknet - Open
source neural network framework written in C and CUDA. [PublicDomain] website
- Dlib :zap: - A
modern C++11 machine learning, computer vision, numerical optimization,
and deep learning toolkit. [Boost] website
- FAISS - A
library for efficient similarity search and clustering of dense vectors.
[MIT]
- Fido - A
highly-modular C++ machine learning library for embedded electronics and
robotics. [MIT] website
- flashlight - A
fast, flexible machine learning library from Facebook AI Research
written entirely in C++ and based on the ArrayFire tensor library.
[BSD-3-Clause] website
- ggml - Tensor
library for machine learning with 16-bit and 4-bit quantization support.
[MIT]
- libsvm - A simple,
easy-to-use, efficient library for Support Vector Machines.
[BSD-3-Clause] website
- m2cgen - A
CLI tool to transpile trained classic ML models into a native C code
with zero dependencies. [MIT]
- MeTA - A modern
C++ data sciences toolkit. [MIT] website
- Minerva - A fast and
flexible system for deep learning. [Apache2]
- mlpack - A scalable
c++ machine learning library. [LGPLv3] website
- ncnn - A
high-performance neural network inference computing framework optimized
for mobile platforms. [BSD]
- OpenCV :zap: - Open
Source Computer Vision Library. [BSD] website
- oneDAL - A
powerful machine learning library that helps speed up big data analysis.
[Apache]
- ONNX runtime
- C and C++ library for training and inference ONNX models. ONNX is a
standard that AI models can be converted into, regardless of the library
they are trained with. [MIT] website
- Recommender -
C library for product recommendations/suggestions using collaborative
filtering (CF). [BSD]
- RNNLIB - RNNLIB is a
recurrent neural network library for sequence learning problems.
[GPLv3]
- SHOGUN - The
Shogun Machine Learning Toolbox. [GPLv3]
- sofia-ml - The
suite of fast incremental algorithms for machine learning.
[Apache2]
- USearch - Fast
search and clustering library for vectors and strings. [Apache2]
- VLFeat - The VLFeat
open source library implements popular computer vision algorithms
specialising in image understanding and local featurexs extraction and
matching. [BSD-2-Clause] website
- xgboost - Scalable,
Portable and Distributed Gradient Boosting (GBDT, GBRT or GBM) Library,
for Python, R, Java, Scala, C++ and more. Runs on single machine,
Hadoop, Spark, Flink and DataFlow. [Apache2]
Math
- Apophenia - A C
library for statistical and scientific computing. [GPL2]
- Armadillo -
Fast C++ library for linear algebra & scientific computing.
[Apache2] website
- autodiff - A
modern, fast and expressive C++ library for automatic differentiation.
[MIT] website
- blaze -
high-performance C++ math library for dense and sparse arithmetic.
[BSD]
- Boost.Multiprecision
- provides higher-range/precision integer, rational and floating-point
types in C++, header-only or with GMP/MPFR/LibTomMath backends. [Boost]
website
- ceres-solver - C++ library
for modeling and solving large complicated nonlinear least squares
problems from google. [BSD]
- CGAL - Collection of
efficient and reliable geometric algorithms. [LGPL&GPL] website
- cml - The
configurable math library. [Boost]
- CNL - A
Compositional Numeric Library for C++. [Boost]
- DirectXMath -
An all inline SIMD C++ linear algebra library for use in games and
graphics apps.
- Dlib :zap: - A
modern C++11 machine learning, computer vision, numerical optimization,
and deep learning toolkit. [Boost] website
- Eigen - A high-level C++
library of template headers for linear algebra, matrix and vector
operations, numerical solvers and related algorithms. [MPL2]
- ExprTk -
The C++ Mathematical Expression Toolkit Library (ExprTk) is a simple to
use, easy to integrate and extremely efficient run-time mathematical
expression parser and evaluation engine. [MIT]
- Geometric Tools - C++
library for computing in the fields of mathematics, graphics, image
analysis and physics. [Boost] website
- GLM - Header-only C++
math library that matches and inter-operates with OpenGL’s GLSL math.
[MIT] website
- GMTL - Graphics Math
Template Library is a collection of tools implementing Graphics
primitives in generalized ways. [GPL2]
- GMP - A C library for arbitrary
precision arithmetic, operating on signed integers, rational numbers,
and floating-point numbers. [LGPL3 & GPL2]
- Klein - A fast,
SIMD-optimized C++17 Geometric Algebra library for point, line, and
plane projections, intersections, joins, rigid-body motion, and more.
[MIT] website
- linalg.h - Single
header, public domain, short vector math library for C++.
[Unlicense]
- MATIO - MATLAB MAT File
I/O Library. [BSD-2-Clause] website
- MatX - A
GPU-accelerated C++17 numerical computing library with a
MATLAB/Python-like syntax. [BSD 3-clause]
- MIRACL - A
Multiprecision Integer and Rational Arithmetic Cryptographic Library.
[AGPL]
- NumCpp - A
templatized header only C++ implementation of the Python Numpy library.
[MIT]
- muparser - muParser
is an extensible high performance math expression parser library written
in C++. [MIT]
- LibTomMath - A
free open source portable number theoretic multiple-precision integer
library written entirely in C. [PublicDomain & WTFPL] website
- linmath.h - A
lean linear math library, aimed at graphics programming. [WTFPL]
- lp_solve - A
library used to formulate and solve linear programming problems. [LGPL]
website
- OpenBLAS - An
optimized BLAS library based on GotoBLAS2 1.13 BSD version. [BSD
3-clause] website
- PCG-rand - PCG is a family
of simple fast space-efficient statistically good algorithms for random
number generation. Unlike many general-purpose RNGs, they are also hard
to predict. [Apache]
- QuantLib - A
free/open-source library for quantitative finance. [Modified BSD] website
- SimSIMD -
Vector distance functions for x86 AVX2, AVX-512, Arm NEON, and SVE.
[Apache2]
- StatsLib - A C++
header-only library of statistical distribution functions. [Apache2] website
- SymEngine -
Fast symbolic manipulation library, a rewriting of SymPy’s core in C++.
[MIT]
- TinyExpr - A C
library for parsing and evaluating math expressions from strings.
[zlib]
- Vc - SIMD Vector Classes
for C++. [BSD]
- Versor - A (fast) Generic
C++ library for Geometric Algebras, including Euclidean, Projective,
Conformal, Spacetime (etc).
- Wagyu - A general
library for geometry operations of union, intersections, difference, and
xor. [mapbox-wagyu original]
- Wykobi - A C++ library of
efficient, robust and simple to use C++ 2D/3D oriented computational
geometry routines. [MIT]
- xtensor - A
C++14 library for numerical analysis with multi-dimensional array
expressions, inspired by NumPy syntax. [BSD 3-clause] website
- universal -
A C++14 header-only library implementing arbitrary posit arithmetic. The
posit number system is a tapered floating point that is more efficient
than IEEE floating point. Posits enable reproducible computational
science. [MIT license]
- utl::random
- A C++17 header-only library implementing fast random for Monte-Carlo
simulations & gamedev. [MIT]
- XAD -
Powerful Automatic Differentiation for C++. [AGPL] website
Memory Allocation
- Boehm GC - Conservative
garbage collector for C and C++. [similar to X11] website
- C Smart Pointers -
Smart pointers for the (GNU) C programming language. [MIT]
- Hoard - Fast,
Scalable, and Memory-efficient Malloc for Linux, Windows, and Mac.
[Apache-2.0] website
- jemalloc -
General purpose malloc(3) implementation that emphasizes fragmentation
avoidance and scalable concurrency support. [BSD] website
- memory - STL
compatible C++ memory allocator library. [ZLib]
- memory-allocators
- Custom memory allocators to improve the performance of dynamic memory
allocation. [MIT]
- mimalloc - A
compact general purpose allocator with excellent performance. [MIT]
- rpmalloc - Cross
platform lock free thread caching 16-byte aligned memory allocator
implemented in C. [PublicDomain]
- snmalloc -
Message passing based high-performance allocator. [MIT]
- TCMalloc - Google’s
fast, multi-threaded malloc implementation. [Apache-2.0] website
- buddy_alloc -
A single header buddy memory allocator for C with bounded allocation
costs. [0BSD]
- tgc - A tiny garbage
collector for C written in ~500 LOC. [BSD]
- GStreamer - A
library for constructing graphs of media-handling components.
[LGPL]
- libass - Portable
subtitle renderer for the ASS/SSA subtitle format. [ISC]
- libav - A collection of
libraries and tools to process multimedia content such as audio, video,
subtitles and related metadata. [LGPL v2.1+ and others] website
- LIVE555 Streaming
Media - Multimedia streaming library using open standard protocols
(RTP/RTCP, RTSP, SIP). [LGPL]
- libVLC - libVLC (VLC
SDK) media framework. [GPL]
- MediaInfoLib
- Convenient unified display of the most relevant technical and tag data
for video and audio files. [BSD]
- QtAv - A multimedia
playback framework based on Qt and FFmpeg to write a player easily.
[LGPL] website
- SDL :zap: - Simple
DirectMedia Layer. [zlib] website
- SFML :zap: - Simple and
Fast Multimedia Library. [zlib] website
- TagLib - A library
for reading and editing the metadata of several popular audio formats.
[LGPL/MPL] website
Networking
- ada - WHATWG-compliant
and fast URL parser written in modern C++. [Apache-2.0/MIT]
- ACE -
An OO Network Programming Toolkit in C++. [?MIT?]
- Boost.Asio :zap: - A
cross-platform C++ library for network and low-level I/O programming.
[Boost] website
- Boost.Beast :zap: -
HTTP and WebSocket built on Boost.Asio in C++11. [Boost] website
- Breep - Event
based, high-level C++14 peer-to-peer library. [EUPL-1.1 (OSI
approved)]
- C++ REST SDK -
C++ REST SDK (previously named Casablanca). [Apache2]
- Restbed - C++11
Asynchronous RESTful framework. [AGPL]
- Restinio - A
header-only C++14 library that gives you an embedded HTTP/Websocket
server. [BSD]
- c-ares - A C library
for asynchronous DNS requests. [MIT]
- cpp-httplib - A
single file C++11 header-only HTTP/HTTPS server library. [MIT]
- cpp-netlib - A collection of
open-source libraries for high level network programming. [Boost]
- cpp-netlib/uri - URI
parser/builder library for C++, compatible with RFC 3986 and RFC 3987.
[Boost]
- CppServer -
Ultra fast and low latency asynchronous socket server & client C++
library with support TCP, SSL, UDP, HTTP, HTTPS, WebSocket protocols and
10K connections problem solution. [MIT]
- cpr - A modern C++ HTTP
requests library with a simple but powerful interface. Modeled after the
Python Requests module. [MIT] website
- curlcpp - An
object oriented C++ wrapper for CURL(libcurl). [MIT]
- curlpp -C++
wrapper around libcURL. [MIT]
- DPDK - Data Plane
Development Kit, libraries and drivers for fast packet processing.
[BSD-3-Clause & GPL-2.0] website
- Dyad.c - Asynchronous
networking for C. [MIT]
- ENet - Reliable UDP
networking library. [MIT] website
- evpp - C++ high
performance networking with TCP/UDP/HTTP protocols. [BSD]
- FTP client for
C++ - C++ client for making FTP requests. [MIT]
- H2O - An optimized HTTP
server with support for HTTP/1.x and HTTP/2. It can also be used as a
library. [MIT]
- HTTP Parser
:zap: - A http request/response parser for C. [MIT]
- KCP
- A fast and reliable ARQ protocol that helps applications to reduce
network latency. [MIT]
- libcurl - Multiprotocol
file transfer library. [MIT/X derivate license]
- libhttpserver -
C++ library for creating an embedded Rest HTTP server (and more).
[LGPL2.1]
- Libmicrohttpd -
GNU libmicrohttpd is a small C library that is supposed to make it easy
to run an HTTP server as part of another application. [LGPL v2.1+]
- libpcap -
A portable C/C++ library for network traffic capture. [BSD] website
- libquic - A QUIC
protocol library extracted from Chromium’s QUIC Implementation.
[BSD]
- librdkafka -
Apache Kafka client library for C and C++. [BSD-2-Clause]
- libwebsockets
- A lightweight pure C WebSocket implementation that provides both
client and server libraries. [LGPL2.1 + static link exception] website
- Lithium - Build
high performance C++ HTTP servers without being a C++ expert. [MIT]
- lwIP - A
lightweight TCP/IP stack. [Modified BSD]
- mailio - mailio
is a cross platform C++ library for MIME format and SMTP, POP3 and IMAP
protocols. [BSD]
- Mongoose -
Extremely lightweight webserver. [GPL2]
- MQTT-C - A
portable MQTT C client for embedded systems and PCs alike. [MIT] website
- mTCP - Highly
scalable user-level TCP stack for multicore systems. [Modified BSD]
- Muduo - A C++
non-blocking network library for multi-threaded server in Linux.
[BSD]
- nghttp2 - HTTP/2 C
Library. [MIT] website
- nghttp3 - HTTP/3
library written in C. [MIT] website
- Onion - HTTP
server library in C designed to be lightweight and easy to use.
[Apache2/GPL2]
- PF_RING™ - High-speed
packet processing framework. [LGPL-2.1] website
- PicoHTTPParser -
A tiny, primitive, fast HTTP request/response parser. [MIT]
- POCO :zap: - C++ class
libraries and frameworks for building network- and internet-based
applications that run on desktop, server, mobile and embedded systems.
[Boost] website
- Proxygen -
Facebook’s collection of C++ HTTP libraries including an easy to use
HTTP server. [BSD]
- RedPanda -
Streaming data platform for developers. Kafka API compatible. 10x
faster. [BSL]
- RakNet - A cross
platform, open source, C++ networking engine for game programmers.
[BSD]
- restclient-cpp -
Simple REST client for C++. It wraps libcurl for HTTP requests.
[MIT]
- Seasocks -
Simple, small, C++ embeddable webserver with WebSockets support.
[BSD]
- tlse - Single C file
TLS 1.2/1.3 implementation, using tomcrypt as crypto library
[BSD-2-Clause]
- TQUIC - A
high-performance, lightweight, and cross-platform QUIC library, exposed
to C and C++. [Apache2]
- Tufão - An
asynchronous web framework for C++ built on top of Qt. [LGPL2]
- uriparser -
Strictly RFC 3986 compliant URI parsing and handling library.
[BSD-3-Clause]
- uWebSockets
- µWS is one of the most lightweight, efficient & scalable WebSocket
& HTTP server implementations available. [Zlib]
- UCall - A
high-performance SIMD-accelerated RPC library on io_uring.
[Apache2]
- WAFer - A C
language-based ultra-light software platform for scalable server-side
and networking applications. Think node.js for C programmers.
[GPL2]
- Wangle - A
client/server application framework to build asynchronous, event-driven
modern C++ services. [Apache-2.0]
- wdt - An embeddedable
library (and command line tool) aiming to transfer data between 2
systems as fast as possible over multiple TCP paths. [BSD-3-Clause]
- WebSocket++ -
C++/Boost Asio based websocket client/server library. [BSD]
- PcapPlusPlus -
a multiplatform C++ network sniffing and packet parsing and crafting
framework. [Unlicense]
- ZeroMQ - High-speed,
modular asynchronous communication library. [LGPL3/MPL2] website
Office Open XML
Libraries for parsing and manipulating xlsx, pptx, docx,
etc.
- DuckX - C++
library for creating and modifying Microsoft Word (.docx) files.
[MIT]
- FreeXL -
an open source library to extract valid data from within Spreadsheets.
[MPL/GPL-2/LGPL-2]
- libxls - Read binary
Excel files from C/C++ [BSD-2-Clause]
- libxlsxwriter - A
C library for creating Excel XLSX files. [BSD-2-Clause] website
- OpenXLSX - A C++
library for reading, writing, creating and modifying Microsoft Excel®
(.xlsx) files. [BSD-3-Clause]
- SimpleXlsxWriter
- XLSX files writer for Microsoft Excel 2007 and above. [zlib]
- XLSX I/O - C
library for reading and writing .xlsx files. [MIT]
PDF
Libraries for parsing and manipulating PDF documents.
- libharu - A free,
cross platform, open-sourced software library for generating PDF.
[zlib]
- litePDF - Library to
create and edit PDF documents that uses GDI functions through a device
context to draw the page content. [LGPL v3 and zlib]
- MuPDF - A lightweight PDF, XPS, and
E-book viewer. [AGPL/Proprietary]
- PDF-Writer -
High performance library for creating, modiyfing and parsing PDF files
in C++ [Apache-2.0] website
- pdfio - A
simple C library for reading and writing PDF files. [Apache-2] website
- PDFium - PDF
generation and rendering library. [BSD-3-Clause]
- PoDoFo - A library to
work with the PDF file format. [LGPL]
- Poppler - Open-source
multi-backend PDF rendering library based on the xpdf-3.0 code base.
[GPLv2/GPLv3]
- QPDF - A tool and C++
library for content-preserving transformations of PDF files.
[Apache-2.0] website
- Xpdf - Xpdf is a free PDF
viewer and toolkit, including a text extractor, image converter, HTML
converter, and more. [GPL v2/GPL v3]
- DynaPDF - An easy-to-use PDF
generation library. [Commercial]
Physics
Dynamics simulation engines
- Box2D - A 2D
physics engine for games. [BSD-like]
- Bullet - A 3D
physics engine for games. [zlib] website
- Chipmunk - A
fast and lightweight 2D game physics library. [MIT] website
- Jolt Physics - A
multi core friendly rigid body physics and collision detection library.
[MIT]
- Kratos -
framework for building parallel, multi-disciplinary simulation software,
aiming at modularity, extensibility, and high performance. [BSD] website
- LiquidFun - A 2D
physics engine for games. [BSD-like]
- Newton
Dynamics - An integrated solution for real time simulation of
physics environments. [zlib]
- ODE - Open Dynamics Engine - An
open source, high performance library for simulating rigid body
dynamics. [BSD&LGPL]
- ofxBox2d -
openFrameworks wrapper for Box2D. [BSD-like]
- PhysX -
An open-source realtime physics engine middleware SDK developed by
Nvidia as a part of Nvidia GameWorks software suite. [BSD-3-Clause]
- PlayRho -
An interactive physics engine & library. [Zlib]
- Project Chrono
- An open source multi-physics simulation engine. [BSD-3-Clause] website
- Quantum++ - A modern
C++11 quantum computing library. [MIT]
- QuarkPhysics
- A 2D Soft Body and Rigid Body Physics Engine. [MIT]
- Simbody -
High-performance C++ multibody dynamics/physics library for simulating
articulated biomechanical and mechanical systems like vehicles, robots,
and the human skeleton. [Apache2]
- SOFA - SOFA is
an open-source framework targeting at real-time simulation, with an
emphasis on medical simulation. [LGPL] website
Reflection
- config-loader
- A C++17 static reflection framework, from parse configuration file to
native data structure. [MIT]
- Better Enums -
Reflective enums (to string, iteration). Single header. [BSD] website
- clReflect - C++
Reflection using clang. [MIT]
- CPFG - A C++03 library
for reflection, callback and script binding. [Apache2]
- CPP-Reflection
- C++ Reflection using clang. [MIT]
- Easy
Reflection - Easy and fast reflection + serialization solution like
in Rust, Java or Go. [Apache]
- Magic Enum -
Header-only C++17 library provides static reflection for enums (to
string, from string, iteration), work with any enum type without any
macro or boilerplate code. [MIT]
- magic_get -
std::tuple like methods for user defined types without any macro or
boilerplate code. [Boost]
- meta - Header-only,
non-intrusive and macro-free runtime reflection system in C++.
[MIT]
- Nameof - Header-only
C++17 library provides nameof macros and functions to obtain the simple
name of variable, type, function, macro, and enum. [MIT]
- Ponder - A C++11
library for reflection. [MIT]
- REFLECT - C++20
Static Reflection library. [MIT]
- reflect-cpp -
Serialization through reflection, including automatic field name
retrieval from structs. [MIT]
- RTTR - A C++11 library
for reflection. [MIT] website
- simple_enum -
An Fast, Intuitive and Type-Safe C++ Enumeration Support Library.
[BSL-1.0] website
- TSMP - An
intrusion and macro-free C++20 library for static reflection. It uses
libclang to extract reflection data from your source code and makes it
usable via template specialization. [MIT]
- visit_struct -
A miniature library for struct-field reflection in C++. [Boost]
- Refureku - A
C++17 runtime reflection and code generation library. [MIT]
Regular Expression
- CppVerbalExpressions
- C++ regular expressions made easy. [MIT]
- CTRE
- A Compile time PCRE (almost) compatible regular expression matcher.
[MIT]
- Hyperscan -
Hyperscan is a high-performance multiple regex matching library by
Intel. Provides simultaneous matching of large numbers of regexps (up to
tens of thousands). Typically used in a DPI library stack. [BSD]
- Oniguruma - A modern
and flexible regular expressions library that supports a variety of
character encodings. [BSD]
- PCRE - A regular expression C library
inspired by the regular expression capabilities in Perl. [BSD]
- PIRE - Perl
Incompatible Regular Expressions library by Yandex. Can be really fast
(more than 400 MB/s). [LPGL v3.0]
- RE2 - A software library
for regular expressions via a finite-state machine using automata
theory. [BSD-3-Clause]
- SLRE - Super Light
Regexp engine for C/C++. [GPLv2/Proprietary]
- sregex - A
non-backtracking NFA/DFA-based Perl-compatible regex engine library for
matching on large data streams. [BSD]
- SRELL -
Unicode-aware regular expression template library for C++. [BSD]
- Vectorscan -
A portable fork of the high-performance regular expression matching
library. [BSD-3-Clause] website
Robotics
- MOOS-IvP - A set of open source
C++ modules for providing autonomy on robotic platforms, in particular
autonomous marine vehicles.
- MRPT - Mobile Robot Programming
Toolkit. [BSD]
- PCL - Point
Cloud Library is a standalone, large scale, open project for 2D/3D image
and point cloud processing. [BSD] website
- Robotics Library (RL)
- A self-contained C++ library for robot kinematics, motion planning and
control. [BSD]
- RobWork - A
collection of C++ libraries for simulation and control of robot systems.
[Apache2] website
- ROS - Robot Operating System
provides libraries and tools to help software developers create robot
applications. [BSD]
- Ruckig - Real-time
motion generation for robots and machines. [MIT] website
- YARP (Yet Another Robot
Platform) - Library and toolkit for communication and device
interfaces. [BSD-3-Clause] website
- SPICE Toolkit -
Library and toolkit for computing geometric information used in planning
and analyzing science observations obtained from robotic spacecraft.
[MIT] website
Scientific Computing
- AMGCL - a
header-only C++ library for solving large sparse linear systems with
algebraic multigrid. [MIT]
- Au - A
C++14-compatible physical units library with no dependencies and a
single-file delivery option. Emphasis on safety, accessibility,
performance, and developer experience. [Apache 2.0] website
- FFTW - A C library for computing
the DFT in one or more dimensions. [GPL]
- GSL - GNU scientific
library. [GPL]
- preCICE - Coupling
library for partitioned multi-physics simulations (FSI, CHT, and more).
[LGPL] website
- TileDB - Fast
Dense and Sparse Multidimensional Array DBMS. [MIT] website
- Trilinos - High
performance PDE solvers. [BSD]
- Torch - A scientific
computing framework with wide support for machine learning algorithms
that puts GPUs first. [BSD-3-Clause] website
Scripting
- AngelScript -
AngelScript is a game-oriented interpreted/compiled scripting language.
[zlib]
- Boost.Python - A
C++ library which enables seamless interoperability between C++ and the
Python programming language. [Boost] website
- cppimport -
Import C++ files directly from Python! [MIT]
- CppSharp - Tools and
libraries to glue C/C++ APIs to high-level languages. [MIT]
- ChaiScript -
An easy to use embedded scripting language for C++. [BSD] website
- ctypes.sh - A
foreign function interface for bash. [MIT]
- Cython - Cython is an
optimising static compiler for both the Python programming language and
the extended Cython programming language (based on Pyrex). It makes
writing C extensions for Python as easy as Python itself. [Apache] website
- djinni - A tool for
generating cross-language type declarations and interface bindings.
[Apache2]
- Duktape - An
embeddable JavaScript engine with compact footprint. [MIT] website
- JavaCpp - The
missing bridge between Java and native C++. [Apache2]
- JerryScript
- Ultra-lightweight JavaScript engine for the Internet of Things.
[Apache-2.0] website
- libffi - A portable
foreign-function interface library. [MIT] website
- Lua - A minimal and fast scripting
engine for configuration files and basic application scripting.
[MIT]
- LuaBridge - A
lightweight, dependency-free library for binding Lua to C++. [MIT]
- LuaBridge3 - A
lightweight, dependency-free library for binding Lua, LuaJIT, Luau and
Ravi to C++. [MIT]
- luacxx - C++11 API
for creating Lua bindings. [MIT]
- Luau - A fast,
small, safe, gradually typed embeddable scripting language derived from
Lua. [MIT] website
- MiniScript - scripting
language modern, elegant, easy to learn, and easy to embed in your own
C# or C++ projects. [MIT]
- nanobind - tiny and
efficient C++/Python bindings. [BSD-3-Clause]
- nbind - Magical
headers that make your C++ library accessible from JavaScript.
[MIT]
- PHP-CPP
- A library to build PHP extensions with C++. [Apache2] website
- pocketpy -
C++17 header-only Python interpreter for game scripting. [MIT] website
- pybind11 - Seamless
operability between C++11 and Python. [BSD]
- QuickJS - a small and
embeddable JavaScript engine. [MIT]
- SIP
- C or C++ Bindings Generator for Python v2 and v3. [GPL]
- sol2 - A C++ <->
Lua API wrapper with advanced features and top notch performance.
[MIT]
- SWIG - A
wrapper/interface Generator that let you link your c++ code to
JavaScript, Perl, PHP, Python, Tcl and Ruby. [GPL/Output not licensed]
website
- txiki.js - A tiny
JavaScript runtime. [MIT]
- V7 - An embedded
JavaScript engine. [GPL2]
- V8 - A fast JavaScript engine by Google
that can be embedded into any C++ application. [BSD]
- v8pp - Header-only
library to expose C++ classes and functions into V8 to use them in
JavaScript code. [BOOST] website
- ChakraCore -A
JavaScript engine by Microsoft that can be embedded into nodejs.
[MIT]
Serialization
- BitSerializer -
Multi-format serialization library (JSON, XML, YAML, CSV, MsgPack)
[MIT]
- Bitsery - Header
only C++ binary serialization library. [MIT]
- Bond - An open
source, cross-platform framework for working with schematized data.
[MIT]
- Boost.Serialization
- Boost Serialization Library. [Boost] website
- Cap’n Proto -
Fast data interchange format and capability-based RPC system. [MIT] website
- cereal - A C++11
library for serialization. [BSD]
- cista - A
C++17 library for zero-copy high-performance (de-)serialization.
[MIT]
- cppcodec -
Header-only C++11 library to encode/decode base64, base32 and hex with
consistent, flexible API. [MIT]
- FastBinaryEncoding
- Fast Binary Encoding is ultra fast and universal serialization
solution for C++, C#, Go, Java, JavaScript, Kotlin, Python, Ruby, Swift.
[MIT]
- FlatBuffers - A
Memory efficient serialization library. [Apache2]
- Kaitai Struct - A declarative
language to describe various binary data structures and a compiler to
generate C++ parser code. [GPLv3+][MIT][Apache2]
- iguana - a modern,
universal and easy-to-use serialization engine developed in C++20 and
C++17. [Apache2]
- MessagePack -
Efficient binary serialization format “like JSON” for C and C++.
[Apache2] website
- mrpt-serialization -
Versioned serialization to binary or text formats. [BSD] website
- nanopb - Small
code-size Protocol Buffers implementation in ANSI C. [Zlib]
- protobuf -
Protocol Buffers - Google’s data interchange format. [BSD]
- protobuf-c -
Protocol Buffers implementation in C. [BSD]
- Protocol
Puffers - A little, highly templated, and protobuf-compatible
serialization/deserialization header-only library written in C++20.
[Apache-2.0]
- SimpleBinaryEncoding
- encoding and decoding application messages in binary format for
low-latency applications. [Apache2]
- upb - A small
protobuf implementation in C. [BSD]
- Wirehair - O(N)
Fountain Code for Large Data. [BSD-3-Clause]
- YAS - Very fast
Yet Another
Serialization library supports the binary/text/json
formats. [Boost]
- zpp_bits -
Actually, the fastest modern Serialization library.
Just check this
video.
Serial Port
- Asio - Asio
includes classes for creating and manipulating serial ports in a
portable manner. [Boost] website
- Boost.Asio -
Boost.Asio includes classes for creating and manipulating serial ports
in a portable manner. [Boost] website
- CSerialPort -
lightweight cross-platform serial port library. [LGPL3]
- Libserial -
Serial Port Programming in C++. [BSD-3-Clause]
- Serial Communication
Library - Cross-platform, Serial Port library written in C++. [MIT]
website
Sorting
- cpp-sort - Sorting
algorithms & related tools for C++14. [MIT]
- pdqsort -
Pattern-defeating quicksort. [zlib]
- Timsort - A
templated stable sorting function which outperforms quicksort-based
algorithms including std::sort, for reversed or semi-sorted data.
[MIT]
- Indiesort -
A sort wrapper which enables the use of std::sort (& other
random-access sort functions) with non-random-access containers, and
also improves sort performance for large/non-trivially-copyable types in
random-access containers and arrays. [zLib] website
Video
- libvpx - VP8/VP9
Codec SDK. [BSD]
- FFmpeg - A complete,
cross-platform solution to record, convert and stream audio and video.
[LGPL2/GPL2]
- avcpp - Modern C++
wrapper around FFmpeg. [MIT]
- libde265 - Open
h.265 video codec implementation. [LGPL] website
- x265
- Open h.265 video codec implementation. [GPL2] website
- OpenH264 - Open
Source H.264 Codec. [BSD] website
- Theora - A free and open video
compression format. [BSD]
- Vireo - A
lightweight and versatile video processing library by Twitter.
[MIT]
Virtual Machines
- CarpVM -
“interesting” VM in C. Let’s see how this goes. [GPLv3]
- MicroPython
- Aims to put an implementation of Python 3.x on a microcontroller.
[MIT]
- TinyVM - A small,
fast, lightweight virtual machine written in pure ANSI C. [MIT]
Web Application Framework
- Civetweb -
Provides easy to use, powerful, C/C++ embeddable web server with
optional CGI, SSL and Lua support. [MIT]
- C++ REST SDK -
Microsoft project for cloud-based client-server communication in native
code using a modern asynchronous C++ API design. [MIT]
- CppCMS - A Free High Performance
Web Development Framework (not a CMS). [LGPLv3]
- Crow - Crow is a C++
microframework for running web services. It uses routing similar to
Python’s Flask. [BSD] website
- Cutelyst - A C++
Web Framework built on top of Qt, using the simple approach of Catalyst
(Perl) framework. [BSD-3-Clause] website
- Drogon - A C++17/20
based, high-performance HTTP application framework. [MIT]
- C++ wfrest - C++ Web
Framework REST API. [Apache2]
- facil.io -
Evented, high performance C web framework supporting HTTP, WebSockets,
SSE and more. [MIT] website
- Kore - ultra fast and flexible web
server / framework for web applications developed in C. [ISC]
- libOnion -
lightweight library to help you create webservers in C programming
language. [LGPLv3]
- lwan - Experimental,
scalable, high performance HTTP server. [GPL2]
- oat++ - Light,
zero-dependency framework to create high-performance web-services.
[Apache-2.0] website
- Pistache -
Pistache is a C++ REST framework written in pure C++11 with no external
dependency. [Apache2]
- QDjango - A web
framework written in C++ and built on top of the Qt library. Where
possible it tries to follow django’s API, hence its name. [LGPL]
- TreeFrog
Framework - High-speed and full-stack web application framework
based on C++ and Qt, which supports HTTP and WebSocket protocol (with
O/R mapping). [BSD] website
- userver -
Asynchronous C++17 framework with a rich set of abstractions and
database drivers for fast and comfortable creation of efficient
microservices, services and utilities. [Apache-2.0] website
- Wt - A C++ library for
developing web applications. [GPL/Proprietary]
XML
XML is crap. Really. There are no excuses. XML is nasty to parse
for humans, and it’s a disaster to parse even for computers. There’s
just no reason for that horrible crap to exist. - Linus
Torvalds
- Boost.PropertyTree
- A property tree parser/generator that can be used to parse
XML/JSON/INI/Info files. [Boost] website
- Expat - An XML parser library
written in C. [MIT]
- Libxml2 - The XML C parser and
toolkit of Gnome. [MIT]
- libxml++ - An
XML Parser for C++. [LGPL2]
- Mini-XML - A
small XML parsing library written in ANSI C. [LGPL2 with
exceptions]
- PugiXML - A light-weight, simple
and fast XML parser for C++ with XPath support. [MIT]
- RapidXml - An attempt
to create the fastest XML parser possible, while retaining useability,
portability and reasonable W3C compatibility. [Boost]
- TinyXML - A
simple, small, minimal, C++ XML parser that can be easily integrating
into other programs. [zlib]
- TinyXML2 - A
simple, small, efficient, C++ XML parser that can be easily integrating
into other programs. [zlib]
- TinyXML++ - A
completely new interface to TinyXML that uses MANY of the C++ strengths.
Templates, exceptions, and much better error handling. [MIT]
- Xalan C - A library
and a command line program to transform XML documents using a stylesheet
that conforms to XSLT 1.0 standards. [Apache-2.0] website
- Xerces-C++ - A
validating XML parser written in a portable subset of C++.
[Apache2]
Yaml
- fkYAML - A C++
header-only YAML library. [MIT]
- LibCYAML - C library
for reading and writing YAML. [ISC]
- libfyaml - A
fancy 1.2 YAML and JSON parser/writer. [MIT]
- LibYAML - A C library
for parsing and emitting YAML. [MIT] website
- mini-yaml
- Single header YAML 1.0 C++11 serializer/deserializer. [MIT]
- rapidyaml - Rapid
YAML is a C++ library to parse and emit YAML. [MIT]
- yaml-cpp - A YAML
parser and emitter in C++. [MIT]
Miscellaneous
Useful libraries or tools that don’t fit in the categories above
or maybe just not categorised yet
- access_profiler - A
tool to count accesses to member variables in c++ programs. [GPL3]
- American fuzzy lop
a.k.a. afl-fuzz - Crazy fuzzing tool that automatically discovers bugs
given time and minimal example input. [Apache2]
- Argon2 -
The password hash Argon2, winner of PHC. [CC0/Apache2]
- AsmJit - Low-latency
machine code generation. [Zlib] website
- Better String - An
alternative to the string library for C which is more functional and
does not have buffer overflow overrun problems. Also includes a C++
wrapper. [BSD, GPL2]
- Boost.Signals2 -
An implementation of a managed signals and slots system. [Boost] website
- casacore - A set
of c++ core libraries derived from aips++. [LGPL]
- CCTZ - a C++ library
for translating between absolute and civil times using the rules of a
time zone. [Apache-2.0]
- Cheat Sheets
of HackingCPP - Cool cheat sheets and infographics for algorithms,
views, containers, randomness, etc.
- Concord - A
Discord API wrapper library written in C. [MIT] website
- CPPItertools -
Range-based for loop add-ons inspired by the Python builtins and
itertools library. [BSD-2-Clause]
- CPP-JWT - JSON
Web Token library for C++. [MIT]
- cpp-lazy - a
fast and easy lazy evaluation library for C++11/14/17/20. [MIT]
- CRCpp - Easy to use
and fast C++ CRC library. [BSD-3-Clause]
- cxx-prettyprint -
A pretty printing library for C++ containers. [Boost]
- date - A date
and time library based on the C++11/14/17 header. [MIT] website
- D++ (DPP) - A
lightweight, high performance and scalable C++ library for creating
Discord Bots. [Apache2] website
- DynaMix - A library
which allows you to compose and modify objects at run time. [MIT]
- emio - A safe and
fast high-level and low-level character input/output library. [MIT]
- faker-cxx -
C++20 Faker library for generating fake (but realistic) data for testing
and development. [MIT]
- fast_float -
Fast, Exact C++ from_chars, 4x to 10x faster than strtod, part of GCC
12, Chromium, Redis, Webkit/Safari. [Apache2/BSL-1.0/MIT]
- FastFormat - Fast, Safe C++
Formatting inspired by log4j and Pantheios. [Simplified BSD]
- fast_io -
Significantly faster input/output for C++20. [MIT]
- fccf - A command-line
tool that recursively searches a directory to find C/C++ source code
matching a search string. [MIT]
- {fmt} :zap: - Small,
safe and fast formatting library for C++. [Simplified BSD] website
- gcc-poison - A
simple header file for developers to ban unsafe C/C++ functions from
applications.
- happly - A C++
header-only parser for the PLY file format. Parse .ply happily!
[MIT]
- hedley - A C/C++
header file designed to smooth over some platform-specific annoyances.
website
- Hexi - Header-only,
lightweight C++ library for binary streaming & serialization.
[Apache-2.0/MIT]
- HighwayHash -
Fast strong hash functions: SipHash/HighwayHash. [Apache-2.0]
- inja - A Template
Engine for Modern C++. [MIT]
- Jinja2С++ -
almost full-conformance template engine implementation. website
- jwt-cpp - A
header only library for creating and validating JSON web tokens in C++.
[MIT]
- Kangaru - A
dependency injection container for C++11 and C++14. [MIT]
- Klib - Small
and lightweight implementations of common algorithms and data
structures. [MIT]
- KOMIHASH - Very
fast, high-quality hash function, discrete-incremental and streamed
hashing-capable. [MIT]
- libcpuid - A small
C library for x86 CPU detection and feature extraction. [BSD]
- libenvpp - A modern
C++ library for type-safe environment variable parsing.
[Apache-2.0]
- libevil - The Evil
License Manager. [GPLv3]
- libnih - A
lightweight library of C functions and structures. [GPL2.1]
- libONVIF - Yet
another ONVIF library. [GPL-3.0]
- libpopcnt -
Fast C/C++ bit population count library. [BSD-2-Clause]
- libsigc++
- A typesafe callback system for standard C++. [LGPL] website
- libusb - A universal USB library
which allows for portable access to USB devices. [LGPL2]
- Mach7 - A
Pattern-matching library for C++. [BSD]
- minja.hpp - A
minimalistic C++ Jinja templating engine for LLM chat templates.
[MIT]
- mio - Cross-platform
C++11 header-only library for memory mapped file IO. [MIT]
- MPark.Variant - C++17
std::variant for C++11/14/17. [BSL-1.0]
- MPH - C++20 [Minimal]
Static Perfect Hash library. [MIT]
- PEGTL - The Parsing
Expression Grammar Template Library. [MIT]
- Pipes - Pipelines
for expressive code on collections in C++. [MIT]
- pprint - Pretty
Printer for Modern C++. [MIT]
- pspsdk - An
open-source SDK for PSP homebrew development. [BSD/GNU GPL3]
- QtVerbalExpressions
- This Qt lib is based off of the C++ VerbalExpressions library.
[MIT]
- rain - The
fastest 128-bit and 256-bit non-crypto hash, passes all tests, and under
140 source lines of code. [Apache-2.0]
- RapidFuzz -
Rapid fuzzy string matching in C++ using the Levenshtein Distance. [MIT]
website
- rapidhash - Very
fast, high quality, platform-independent hashing algorithm.
[BSD-2-Clause]
- Reaction - A
lightweight, header-only reactive programming framework leveraging
modern C++20 features for building efficient dataflow applications.
[MIT]
- Remote Call Framework -
Inter-process communication framework for C++. [GPL2/Proprietary]
- reproc - A
cross-platform (C99/C++11) process library. [MIT]
- SafetyHook -
C++23 procedure hooking library. [BSL-1.0]
- scnlib - scanf
for modern C++. [Apache-2.0] website
- Scintilla - A free source code
editing component. [MIT]
- SDS - Simple Dynamic
Strings library for C. [BSD]
- semver.c - A semver
parser and render in ANSI C. [MIT]
- sigslot - C++
Signal/Slot Library. [PublicDomain]
- SLJIT - Platform
independent low-level JIT compiler. [BSD] website
- palacaze/sigslot -
A simple, header only, C++14 signal-slots implementation [MIT]
- simdzone - Fast
and standards compliant DNS zone parser. [BSD-3-Clause]
- SimpleSignal -
High performance C++11 signals. [PublicDomain]
- Stage - Mobile robot
simulator. [GPL2]
- stb :zap: - A range of
single-file libraries for C/C++. [PublicDomain]
- stdman - A tool that
parses archived HTML files from cppreference and generates
groff-formatted manual pages for Unix-based systems. [MIT]
- StringZilla - the
Godzilla of string libraries, splitting, sorting, and shuffling large
textual datasets faster than you can say “Tokyo Tower”.
[Apache-2.0]
- StrTk - A
C++ library consisting of high performance string processing routines.
[MIT]
- tgbotxx -
Telegram Bot C++ Library. [MIT]
- tiny::optional -
Replacement for std::optional that does not waste memory unnecessarily.
[BSL-1.0]
- Tulip Indicators - A C
library of over 100 financial technical analysis indicators. [LGPL]
- ub-canaries - A
collection of C/C++ programs that try to get compilers to exploit
undefined behavior.
- value-category-cheatsheet
A PDF cheatsheet for lvalues, rvalues, and the like. [Jank
copyleft]
- VarTypes - A
feature-rich, object-oriented framework for managing variables in C++ /
Qt4. [LGPL]
- Wildcards - A
simple C++ header-only template library implementing matching using
wildcards. [BSL-1.0]
- xxHash - Extremely
fast non-cryptographic hash algorithm. [BSD-2-Clause] website
- xxhash_cpp -
Port of the xxhash library to C++17. [BSD-2-Clause]
- ZBar - A barcode scanner
library, which allows to scan photos/images/video streams for barcodes
and return their value. [LGPL2]
- ZXing - An
open-source, multi-format 1D/2D barcode image processing library
implemented in Java, with ports to other languages. [Apache]
Software
Software for creating a development environment.
Compiler
List of C or C++ compilers
- 8cc - A Small C
Compiler.
- c - Compile and
execute C “scripts” in one go! [MIT]
- Clang - A C compiler for LLVM.
Supports C++11/14/1z C11. Developed by LLVM Team. [NCSA]
- GCC - GNU Compiler Collection.
Supports C++11/14/1z C11 and OpenMP. [GNU GPL3]
- PCC - A very old C
compiler. Supports C99.
- AMD C++
Compiler - Developed by AMD.
- Intel C++
Compiler - Developed by Intel.
- LLVM - Collection of modular and
reusable compiler and toolchain technologies.
- Microsoft
Visual C++ - MSVC, developed by Microsoft.
- Open WatCom - Watcom C,
C++, and Fortran cross compilers and tools. [Sybase Open Watcom Public
License]
- Oracle
Solaris Studio - C, C++ and Fortran compiler for SPARC and x86.
Supports C++11. Available on Linux and Solaris. [OTN Developer
License]
- TCC - Tiny C Compiler.
[LGPL]
Online Compiler
List of online C or C++ compilers
- codechef - A simple
online compiler CodeChef.
- coliru - Online
compiler/shell with support for various C++ compilers.
- Compiler Explorer - An
interactive compiler with assembly output available.
- CompileOnline
- Compile and Execute C++ online on Linux.
- Ideone - An online compiler and
debugging tool which allows you to compile source code and execute it
online in more than 60 programming languages.
- OneCompiler - An online
compiler supporting over 70 programming languages and database
systems.
- Programiz
- An online compiler for learners and developers.
- repl.it - A powerful yet simple tools
and platforms for educators, learners, and developers.
- Rextester - Online
compiler which provides several compilers(Clang, GCC, MSVC) and several
editors.
- Try It Online - TIO is a family of
online interpreters for an evergrowing list of practical and
recreational programming languages.
- Wandbox - An online Clang/GCC
compiler with Boost available.
- paiza.io - An online C/C++
compiler with multiple files supporting feature, GitHub(gist)
integration and collaborative editing.
- InterviewBit
- A simple and easy to use online C++ compiler.
Debugger
List of C or C++ debuggers
- Comparison
of debuggers - A list of Debuggers from Wikipedia.
- GDB - GNU
Debugger.
- LLDB - The LLDB Debugger.
- Metashell - An
interactive template metaprogramming shell which includes the MDB
metadebugger.
- Valgrind - A tool for memory
debugging, memory leak detection, and profiling.
- x64dbg - An open-source x64/x32
debugger for windows.
Integrated Development
Environment
List of C or C++ nominal IDEs.
- Anjuta
DevStudio - The GNOME IDE. [GPL3]
- AppCode - an IDE for
Objective-C, C, C++, and JavaScript development built on JetBrains’
IntelliJ IDEA platform.
- Cevelop - Cross-platform C and
C++ IDE based on Eclipse CDT with additional plug-ins.
- CLion - Cross-platform
C and C++ IDE from JetBrains.
- Code::Blocks - A free C,
C++ and Fortran IDE.
- CodeLite - Another
cross-platform, free C and C++ IDE. [GPL2 with an exception for
plugins]
- color_coded - A
vim plugin for libclang-based highlighting. [MIT]
- Dev-C++
- A portable C/C++/C++11 IDE.
- Eclipse CDT - A fully
functional C and C++ IDE based on the Eclipse platform.
- Embarcadero
Dev-CPP - A fork of Dev-C++ that comes preinstalled with new themes
and modern compilers. [GPLv2] website
- Geany - Small, fast,
cross-platform IDE. [GPL]
- IBM
VisualAge - A family of computer integrated development environments
from IBM.
- Irony-mode - A
C/C++ minor mode for Emacs powered by libclang.
- juCi++ -
Cross-platform, lightweight C++ IDE with libclang integration.
[MIT]
- KDevelop - A free, open
source IDE.
- Microsoft Visual Studio
- An IDE from Microsoft.
- Microsoft Visual
Studio Code :zap: - An open-source IDE from Microsoft. [MIT] website
- NetBeans - An IDE for developing
primarily with Java, but also with other languages, in particular PHP,
C/C++, and HTML5.
- Qt Creator
:zap: - A cross-platform C++, JavaScript and QML IDE which is part of
the SDK for Qt. [GPL3 with exceptions] website
- rtags - A c/c++
client/server indexer with for integration with emacs based on
clang.
- Xcode - Developed
by Apple.
- YouCompleteMe -
YouCompleteMe is a fast, as-you-type, fuzzy-search code completion
engine for Vim.
- cquery - A
C++ code completion engine for vscode, emacs, vim, etc.
- C Playground - Online C
Programming IDE - An online IDE to practice C Programming where you
can write, edit, and run code online.
Build Systems
- Bazel - A multi-language, fast and
scalable build system from Google. [Apache]
- Bear - A tool to
generate compilation database for clang tooling. [GPLv3]
- Buck - A fast build
system that encourages the creation of small, reusable modules over a
variety of platforms and languages including C++ developed and used at
Facebook. Written in Java. [Apache]
- build2 - cross-platform build,
packaging and dependency management toolchain for developing and
packaging C/C++ projects. [MIT]
- Ccache - A fast C/C++ compiler
cache. [GPLv3]
- clib - Package manager
for the C programming language. [MIT]
- CMake - Cross-platform free and
open-source software for managing the build process of software using a
compiler-independent method. [BSD]
- Cget - Cmake package
retrieval. [Boost] website
- Conan - C/C++ Package Manager, open
sourced. [MIT]
- CPM - A C++ Package
Manager based on CMake and Git.
- FASTBuild -
High performance, open-source build system supporting highly scalable
compilation, caching and network distribution.
- Hunter - CMake
driven cross-platform package manager for C++. [BSD-2]
- MesonBuild - An open source
build system meant to be both extremely fast, and, even more
importantly, as user friendly as possible.
- Ninja - A small build system
with a focus on speed.
- Sccache - A fast
compiler cache for C/C++, with cross-platform support and cloud backed
storage options.
- Scons - A software construction
tool configured with a Python script.
- Sconsolidator
- Scons build system integration for Eclipse CDT.
- Spack - A flexible package manager
that supports multiple versions, configurations, platforms, and
compilers. [Apache-2.0/MIT]
- SW - Cross-platform C++
(and other langs) Build System and Package Manager with a lot of
packages available. [GPLv3]
- tundra -
High-performance code build system designed to give the best possible
incremental build times even for very large software projects.
- tup - File-based build system
that monitors in the background for changed files.
- Premake - A tool configured
with a Lua script to generate project files for Visual Studio, GNU Make,
Xcode, Code::Blocks, and more across Windows, Mac OS X, and Linux.
- Vcpkg - C++ library
manager for Windows, Linux, and MacOS. [MIT]
- waf - Python-based
framework for configuring, compiling and installing applications. [BSD]
website
- XMake - A C/C++ cross-platform build
utility based on Lua. [Apache]
Static Code Analysis
List of tools for improving quality and reducing defects by code
analysis
- Cppcheck - A tool for
static C/C++ code analysis. - source
- CppDepend - Simplifies
managing a complex C/C++ code base by analyzing and visualizing code
dependencies, by defining design rules, by doing impact analysis, and
comparing different versions of the code.
- cpplint - A C++
style checker following Google’s C++ style guide.
- PVS-Studio - A
tool for bug detection in the source code of programs, written in C, C++
and C#.
- cpp-dependencies
- Tool to check C++ #include dependencies (dependency graphs created in
.dot format). [Apache]
- include-what-you-use
- A tool for use with clang to analyze includes in C and C++ source
files. website
- Infer - A static
analyzer for Java, C and Objective-C. [BSD]
- OCLint - A static source code
analysis tool to improve quality and reduce defects for C, C++ and
Objective-C. - source
- Clang Static
Analyzer - A source code analysis tool that finds bugs in C, C++,
and Objective-C programs.
- Linticator - Eclipse CDT
integration of Pc-/FlexeLint.
- IKOS - Static
analyzer for C/C++ based on the theory of Abstract Interpretation. [NOSA
1.3]
- List
of tools for static code analysis - A list of tools for static code
analysis from Wikipedia.
- OptView2 -
Inspect missed Clang optimizations.
- Trunk - Toolkit to check, test,
merge, and monitor code.
- Artistic Style - A tool
to format C/C++/C#/Obj-C/Java code. Also known as astyle.
- ClangFormat - A
tool to format C/C++/Obj-C code.
- Clang-Tidy
- Clang-based C++ linter tool.
- EditorConfig - EditorConfig
helps maintain consistent coding styles across different editors and
IDEs.
- Uncrustify -
Code beautifier.
Resources
Various resources, such as books, websites, and articles for
improving your C++ development skills and knowledge.
API Design
Articles
Fantastic C++ related articles.
Books
Fantastic C or C++ related books.
Coding Standards
Coding Style
Podcasts
- CppCast - The first podcast by C++
developers for C++ developers.
- CppChat - A (sometimes) weekly look at
what’s going on in the world of C++ chatting with a guest from the
community.
Talks
Videos
Fantastic C or C++ related videos.
Websites
Useful C or C++ related websites.
- Standard C++ :zap: - News, Status
& Discussion about Standard C++.
- Build Bench - Compare C++
Builds.
- Quick Bench - Quick C++
Benchmarks.
- CppCon - The C++ Conference.
- C++ reference - A complete
online reference for the C and C++ languages and standard
libraries.
- C++ by Example - Learn C++
by Example.
- cplusplus.com - The C++
Resources Network.
- C FAQ - C frequently asked
questions.
- C++ FAQ - C++
frequently asked questions.
- C++ FQA Lite - C++
frequently questioned answers.
- C++ Quiz - A simple online quiz
that you can use to test your knowledge of the C++ programming
language.
- Guru of the Week - A regular
series of C++ programming problems created and written by Herb
Sutter.
- Meeting C++
- PVS-Studio’s challenge -
PVS-Studio’s C++ quiz in which you’re asked to find errors in code
fragments of open source projects.
- Udemy C++ Courses
and Tutorials
- C++ Hints - Every business day
hints about most often C++ mistakes and ways to solve them from
PVS-Studio Team.
- C++
tutorial - A user ranked online tutorial bank site displaying
multiple courses to learn C++ from.
- C++ Tutorial for
Beginners - A comprenhensive tutorial on C++ curated by trained
experts.
- cppexpert.online - Learn the
best C++ practices by improving code snippets with some problems or with
bad practices.
- C++ for yourself -
A comprehensive tutorial on modern C++ covering everything from
fundamentals to software design.
Weblogs
Useful C or C++ related weblogs.
Other Awesome Projects
Collection of useful codes, snippets, …
Other Awesome Lists
Other amazingly awesome lists
Jobs
- This list is currently empty, but you can add to it by opening a
merge request.
- Please reach out if you are interested in sponsoring this repo. Your
company’s name and logo will be prominently displayed here.
Contributing
Please take a quick gander at the contribution
guidelines for details. Thanks to all contributors;
you rock!
If
you see a project or link here that is no longer maintained or is not a
good fit, please submit a pull request to improve this document. Thank
you!
cpp.md
Github