Curated list of awesome lists
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]
-
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]
-
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
-
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]
-
Seastar - An advanced, open-source C++ framework for high-performance server applications on modern hardware. [Apache-2.0 License] seastar.io
-
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]
-
uSTL - The small STL library. [MIT]
-
Windows Template Library - A C++ library for developing Windows applications and UI components. [Public]
-
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]
-
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]
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
-
ORCA - An ab initio quantum chemistry program package that contains modern electronic structure methods. [Academic] 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]
-
Taywee/args - A simple header-only C++ argument parser library. [MIT]
-
Boost.Program_options - A library to obtain program options via conventional methods such as command line and config file. [Boost] website
-
Clara - A simple to use, composable, command line parser for C++ 11 and beyond. [Boost]
-
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]
-
jarro2783/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]
-
gflags - Commandline flags module for C++. [BSD]
-
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]
-
cpp-terminal - Small header only C++ library for writing multiplatform terminal applications. [MIT]
-
FTXUI - C++ Functional Terminal User Interface. [MIT]
-
imtui - Immediate Mode Text-based User Interface. [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]
-
FiniteStateEntropy - New generation entropy codecs : Finite State Entropy and Huff0.
-
heatshrink - data compression library for embedded/real-time systems [ISC]
-
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]
-
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]
-
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]
-
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]
-
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
-
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]
-
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]
-
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]
-
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]
-
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
-
dynamic_bitset - A C++17 header-only dynamic bitset. [MIT]
-
Hashmaps - Implementation of open addressing hash table algorithms in C++. [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]
-
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::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]
-
svector - Compact SVO optimized vector for C++17 or higher. [MIT]
-
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]
-
lazycsv - A fast, lightweight and single-header csv parser for modern C++. [MIT]
-
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]
-
DuckDB - in-process SQL OLAP Database Management System. [MIT]
-
hiberlite - C++ Object-relational mapping for sqlite3. [BSD]
-
Hiredis - A minimalistic C client library for the Redis database. [BSD]
-
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]
-
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]
-
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]
-
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]
-
TileDB - Fast Dense and Sparse Multidimensional Array DBMS. [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]
-
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
Debug
Debugging Libraries, Memory Leak and Resource Leak Detection, Unit Testing
-
backward-cpp - A beautiful stack trace pretty printer for C++. [MIT]
-
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]
-
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]
-
CppUnit - C++ port of JUnit. [LGPL2]
-
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]
-
ig-debugheap - Multiplatform debug heap useful for tracking down memory errors. [BSD]
-
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]
-
Mockator - Eclipse CDT plug-in for C++ Seams and Mock Objects.
-
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]
-
μ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]
-
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]
-
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]
-
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]
-
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
-
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]
-
xtd - Modern C++17/20 framework to create console (CLI), forms (GUI like WinForms) and tunit (unit tests like Microsoft Unit Testing Framework) applications on Windows, macOS, Linux, iOS and android. [MIT]
-
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]
-
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]
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
-
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]
-
Leptonica - Leptonica is an open source library containing software that is broadly useful for image processing and image analysis applications. [BSD-2-Clause] website
-
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
-
libvips - A fast image processing library with low memory needs. [LGPL] website
-
Magick++ - ImageMagick program interfaces for C++. [Apache2]
-
MagickWnd - ImageMagick program interfaces for C. [Apache2]
-
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]
-
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]
-
TinyEXIF - Tiny ISO-compliant C++ EXIF and XMP parsing library for JPEG. [MIT]
-
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
-
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.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]
-
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
-
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
-
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]
-
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]
-
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
-
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
-
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
-
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]
-
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]
-
ncnn - A high-performance neural network inference computing framework optimized for mobile platforms. [BSD]
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 - free C++ math library for games and graphics. [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]
-
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
-
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).
-
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]
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
-
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]
-
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]
-
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]
-
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]
-
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]
-
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]
-
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
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]
-
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
-
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]
-
Kratos - framework for building parallel, multi-disciplinary simulation software, aiming at modularity, extensibility, and high performance. [BSD] website
-
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]
-
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]
-
RTTR - A C++11 library for reflection. [MIT] 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]
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
Scientific Computing
-
AMGCL - a header-only C++ library for solving large sparse linear systems with algebraic multigrid. [MIT]
-
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]
-
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]
-
luacxx - C++11 API for creating Lua bindings. [MIT]
-
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]
-
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
-
V7 - An embedded JavaScript engine. [GPL2]
-
V8 - A fast JavaScript engine by Google that can be embedded into any C++ application. [BSD]
-
ChakraCore -A JavaScript engine by Microsoft that can be embedded into nodejs. [MIT]
Serialization
-
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]
-
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]
-
SimpleBinaryEncoding - encoding and decoding application messages in binary format for low-latency applications. [Apache2]
-
upb - A small protobuf implementation in C. [BSD]
-
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.
Sorting
-
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]
-
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. [LGPLv2.1+] website
-
Drogon - A C++14/17 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]
-
Xerces-C++ - A validating XML parser written in a portable subset of C++. [Apache2]
Yaml
-
mini-yaml - Single header YAML 1.0 C++11 serializer/deserializer. [MIT]
-
yaml-cpp - A YAML parser and emitter in C++. [MIT]
-
rapidyaml - Rapid YAML is a C++ library to parse and emit YAML. [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]
-
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
-
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]
-
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]
-
faker-cxx - C++20 Faker library for generating fake (but realistic) data for testing and development. [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
-
FastFormat - Fast, Safe C++ Formatting inspired by log4j and Pantheios. [Simplified BSD]
-
casacore - A set of c++ core libraries derived from aips++. [LGPL]
-
QtVerbalExpressions - This Qt lib is based off of the C++ VerbalExpressions library. [MIT]
-
cxx-prettyprint - A pretty printing library for C++ containers. [Boost]
-
icecream-cpp - A small printing library for debugging purposes. [MIT]
-
inja - A Template Engine for Modern C++. [MIT]
-
gcc-poison - A simple header file for developers to ban unsafe C/C++ functions from applications.
-
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]
-
libsigc++ - A typesafe callback system for standard C++. [LGPL] website
-
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]
-
Libserial - Serial Port Programming in C++. [BSD-3-Clause]
-
libusb - A universal USB library which allows for portable access to USB devices. [LGPL2]
-
Mach7 - A Pattern-matching library for C++. [BSD]
-
mio - Cross-platform C++11 header-only library for memory mapped file IO. [MIT]
-
PEGTL - The Parsing Expression Grammar Template Library. [MIT]
-
Remote Call Framework - Inter-process communication framework for C++. [GPL2/Proprietary]
-
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]
-
Serial Communication Library - Cross-platform, Serial Port library written in C++. [MIT]
-
sigslot - C++ Signal/Slot Library. [PublicDomain]
-
SimpleSignal - High performance C++11 signals. [PublicDomain]
-
Stage - Mobile robot simulator. [GPL2]
-
stdman - A tool that parses archived HTML files from cppreference and generates groff-formatted manual pages for Unix-based systems. [MIT]
-
stb :zap: - A range of single-file libraries for C/C++. [PublicDomain]
-
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]
-
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]
-
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]
-
pprint - Pretty Printer for Modern C++. [MIT]
-
pspsdk - An open-source SDK for PSP homebrew development. [BSD/GNU GPL3]
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.
-
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.
-
codepad - An online compiler/interpreter, and a simple collaboration tool.
-
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.
-
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-plaform, 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.
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]
-
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.
-
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.
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!