awesome-cpp (c)
A curated list of awesome C++ (or C) frameworks, libraries, resources, and shiny things.
- Awesome C++
- Standard Libraries
- Frameworks
- Artificial Intelligence
- Asynchronous Event Loop
- Audio
- Authentication and OAuth
- Biology
- BitTorrent
- Blockchain
- Chemistry
- CLI
- Compression
- Concurrency
- Configuration
- Containers
- Cryptography
- CSV
- Database
- Data Structures
- Data visualization
- Debug
- Distributed Systems
- Documentation
- Embeddable Scripting Languages
- Financial
- Font
- Game Engine
- GUI
- Graphics
- Image Processing
- Internationalization
- Inter-process communication
- JSON
- Logging
- Machine Learning
- Math
- Memory Allocation
- Messaging
- Multimedia
- Networking
- Physics
- Reflection
- Regular Expression
- Robotics
- Scientific Computing
- Scripting
- Security
- Serialization
- Sorting
- String Manipulation
- Template Engines
- Video
- Virtual Machines
- Web Application Framework
- XML
- Miscellaneous
- Software
- Resources
- Other Awesome Lists
Standard Libraries
C++ Standard Library - including STL Containers, STL Aglorithm, STL Functional, etc.
- C++ Standard Library - A collection of classes and functions, which are written in the core language and part of the C++ ISO Standard itself.
- Standard Template Library - The Standard Template Library (STL).
- C POSIX library - A specification of a C standard library for POSIX systems.
- CPPAtomic - Replacement of std::atomic supporting non trivially-copyable types.
- ISO C++ Standards Committee - ISO/IEC JTC1/SC22/WG21 - The C++ Standards Committee. website
- The GNU C Library - The purpose of this manual is to tell you how to use the facilities of the GNU C Library.
- result - Result<T, E> for Modern C++
Frameworks
C++ generic frameworks and libraries.
- C++ Micro Services - An OSGi-like C++ dynamic module system and service registry.
- abseil-cpp - Abseil C++ Common Libraries.
- ananas - A C++11 RPC framework based on future and protobuf, with utility: timer,ssl,future/promise,log,coroutine,etc
- Apache C++ Standard Library - STDCXX, A collection of algorithms, containers, iterators, and other fundamental components.
- APR - Apache Portable Runtime. Another library of cross-platform utility functions.
- ASL - Adobe Source Libraries provides peer-reviewed and portable C++ source libraries.
- Boost - A large collection of generic C++ libraries. website
- BDE - The BDE Development Environment from Bloomberg Labs.
- C++ Workflow - C++ Parallel Computing and Asynchronous Networking Engine.
- CCAN - Modelled after Perl’s CPAN, this is a big collection of code that does stuff.
- CGraph - A cross-platform DAG framework based on C++ without any 3rd-party.
- cockpit - Cockpit is an interactive server admin interface. It is easy to use and very lightweight. Cockpit interacts directly with the operating system from a real Linux session in a browser.
- co - includes coroutine library (golang-style), network library (tcp/http/rpc), log library, command line and configuration file parsing library, unit testing framework, json library and other basic components.
- cocoyaxi - A collection of C++ libraries, containing a go-style coroutine library, log, JSON, RPC framework and other base components.
- Coost - A tiny boost library in C++11.
- Cinder - A community-developed, free and open source library for professional-quality creative coding.
- Cxxomfort - A small, header-only library that backports various facilities from more recent C++ Standards to C++03 and later.
- EASTL - Electronic Arts Standard Template Library.
- esl - Enterprise Support Library - An attempt to define important C++ classes for developing enterprise applications.
- ETL - Embedded Template Library.
- EFL - Large collection of useful data structures and functions.
- Fatal - Fatal (Facebook Template Library) is a library for fast prototyping software in modern C++.
- ffead-cpp - Framework for Enterprise Application Development in C++, HTTP1/HTTP2/HTTP3 compliant, Supports multiple server backends.
- Flecs - Flecs is a fast and lightweight Entity Component System for C & C++ that lets you build games and simulations with millions of entities.
- Folly - An open-source C++ library developed and used at Facebook.
- foundation_lib - This library provides a cross-platform foundation library in C providing basic support data types and functions to write applications and games in a platform-independent fashion.
- FunctionalPlus - Functional Programming Library for C++. Write concise and readable C++ code.
- GLib - GLib provides the core application building blocks for libraries and applications written in C.
- gnulib - Collection of common GNU code.
- goaccess - GoAccess is a real-time web log analyzer and interactive viewer that runs in a terminal in *nix systems or through your browser.
- helio - A modern framework for backend development based on io_uring Linux interface.
- JUCE - An all-encompassing C++ class library for developing cross-platform software.
- Kigs framework - A free and open source C++ modular multi-purpose cross platform RAD framework.
- libdjb - Collection of libraries doing various things.
- libdynamic - libdynamic is a utility library for C that will give you dynamic data structures like buffers, lists, vectors, maps and strings. It also includes asynchronous worker pools, and a core event driven framework. It is used, for example, in conjunction with libreactor handling many millions of HTTP transactions daily for over 5 years.
- libPhenom - libPhenom is an eventing framework for building high performance and high scalability systems in C.
- LibSourcey - C++11 evented IO for real-time video streaming and high performance networking applications.
- LibU - A multiplatform utility library written in C.
- libnih - Lightweight library of C functions and structures.
- libreactor - Extendable event driven high performance C-abstractions.
- libxutils - Simple and yet powerful cross-platform C library providing data structures, algorithms and much more.
- Loki - A C++ library of designs, containing flexible implementations of common design patterns and idioms.
- MiLi - Minimal headers-only C++ Library.
- mmx - Collection of single-header libraries.
- OpenFrameworks - A cross platform open source toolkit for creative coding in C++. website
- par - Bunch of single-file libraries.
- pico - This is a very simple HTTP server for Unix, using fork(). It’s very easy to use.
- plibsys - Cross-platform system C library. Zero third-party dependencies, uses only native system calls.
- Qt - A cross-platform application and UI framework.
- 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++.
- 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.
- Seastar - An advanced, open-source C++ framework for high-performance server applications on modern hardware.
- sc - Common C libraries and data structures. (C99).
- stb - Range of single-file libraries for C.
- STLport - An exemplary version of STL.
- STXXL - Standard Template Library for Extra Large Data Sets.
- Tars - Tars is a high-performance RPC framework based on name service and Tars protocol, also integrated administration platform, and implemented hosting-service via flexible schedule.
- tbox - A glib-like multi-platform c library. website
- tinyheaders - Collection of header-only libraries, primarily oriented toward game development.
- Ultimate++ - A C++ cross-platform rapid application development framework.
- uSTL - The small STL library.
- Windows Template Library - A C++ library for developing Windows applications and UI components.
- Yomm2 - Fast, Orthogonal, Open multi-methods. Supersedes Yomm11
- ZLMediaKit - WebRTC/RTSP/RTMP/HTTP/HLS/HTTP-FLV/WebSocket-FLV/HTTP-TS/HTTP-fMP4/WebSocket-TS/WebSocket-fMP4/GB28181 server and client framework based on C++11.
- zpl - C99 cross-platform header-only library with many goodies.
Artificial Intelligence
- ANNetGPGPU - A GPU (CUDA) based Artificial Neural Network library.
- btsk - Game Behavior Tree Starter Kit.
- Evolving Objects - A template-based, ANSI-C++ evolutionary computation library which helps you to write your own stochastic optimization algorithms insanely fast.
- frugally-deep - Header-only library for using Keras models in C++.
- Genann - Simple neural network library in C.
- MXNet - Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Scala, Go, Javascript and more.
- PyTorch - Tensors and Dynamic neural networks in Python with strong GPU acceleration.
- Recast/Detour - (3D) Navigation mesh generator and pathfinder, mostly for games.
- TensorFlow - An open source software library for numerical computation using data flow graphs.
- oneDNN - An open-source cross-platform performance library for deep learning applications.
- CNTK - Microsoft Cognitive Toolkit (CNTK), an open source deep-learning toolkit.
- tiny-dnn - A header only, dependency-free deep learning framework in C++11.
- Veles - Distributed platform for rapid Deep learning application development.
- Kaldi - Toolkit for speech recognition.
- wenet - Production First and Production Ready End-to-End Speech Recognition Toolkit.
Asynchronous Event Loop
- Aubio - A library for audio and music analysis.website
- 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.Asio - A cross-platform C++ library for network and low-level I/O programming.
- C++ Actor Framework - An Open Source Implementation of the Actor Model in C++. Website
- hiactor - Hiactor is an actor framework for building high-performance, concurrent and scalable event-driven systems using C++.
- ivykis - library for asynchronous I/O readiness notification. It is a thin, portable wrapper around OS-provided mechanisms such as epoll_create, kqueue, poll, poll (/dev/poll) and port_create.
- libev - A full-featured and high-performance event loop that is loosely modelled after libevent, but without its limitations and bugs.
- libevent - An event notification library.
- libhv - Cross-platform event loop library. Like libevent, libev, and libuv, libhv provides event-loop with non-blocking IO and timer, but simpler apis and richer protocols.
- libuv - Cross-platform asynchronous I/O.
- uvw - C++ wrapper for libuv.
Audio
Audio, Sound, Music, Digitized Voice Libraries
- AudioFile - A simple C++ library for reading and writing audio files.
- audioFlux - A C library for audio and music analysis, feature extraction.
- dr_libs - Single file audio decoding libraries for C and C++.
- FMOD - An easy to use crossplatform audio engine and audio content creation tool for games.
- KFR - Fast, modern C++ DSP framework, FFT, FIR/IIR filters, Sample Rate Conversion.
- LAME - LAME is a high quality MPEG Audio Layer III (MP3) encoder.
- libsndfile - C library with C++ wrapper for reading and writing files containing sampled sound through one standard library interface.
- libsoundio - C library for cross-platform real-time audio input and output.
- Maximilian - C++ Audio and Music DSP Library.
- OpenAL - Open Audio Library - A crossplatform audio API.
- miniaudio - Single file audio playback and capture library.
- Opus - A totally open, royalty-free, highly versatile audio codec.
- PortAudio - PortAudio is a free, cross-platform, open-source, audio I/O library.
- rnnoise - Recurrent neural network for audio noise reduction.
- SELA - SimplE Lossless Audio.
- SoLoud - Easy, portable audio engine for games.
- Speex - A free codec for free speech. Obsoleted by Opus.
- Tonic - Easy and efficient audio synthesis in C++.
- Vorbis - Ogg Vorbis is a fully open, non-proprietary, patent-and-royalty-free, general-purpose compressed audio format.
- minimp3 - Public domain, header-only MP3 decoder with clean-room implementation.
- Verovio - Verovio is a fast and lightweight music notation engraving library.[https://www.verovio.org]
- 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
Authentication and OAuth
- Alternative-2FA-Dongle - A hardware token that works with the two-factor authentication for GitHub, Google, Facebook, and so on.
- Bad-TOTP - [Completed] TOTP implemented with RFC2104, RFC3174, RFC4226, RFC6234, RFC6238.
- cjose - C library implementing the Javascript Object Signing and Encryption (JOSE).
- cjwt - cjwt is a small JWT handler designed to allow consumers of JWTs of the JWS variant the ability to securely and easily get claims and data from a JWT.
- cpp-jwt - JSON Web Token library for C++.
- jsmn-web-tokens - Small library for creating and decoding Json Web Tokens
- jwt-cpp - A header only library for creating and validating JSON web tokens in C++.
- jwtpp - JSON Object Signing and Encryption library for C++.
- l8w8jwt - Minimal, OpenSSL-less and super lightweight JWT library written in C.
- libcotp - C library that generates TOTP and HOTP according to RFC-6238.
- libjwt - JWT C Library.
- OTPClient - Highly secure and easy to use GTK+ software for two-factor authentication that supports both Time-based One-time Passwords (TOTP) and HMAC-Based One-Time Passwords (HOTP).
- rhonabwy - Javascript Object Signing and Encryption (JOSE) library - JWK, JWKS, JWS, JWE and JWT.
- totp - RFC 6238 code generator compatible with Google Authenticator.
Biology
Bioinformatics, Genomics, Biotech
- BioC++ - C++ Computational Libraries for Bioinformatics.
- 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.
- SeqAn - Algorithms and data structures for the analysis of sequences with the focus on biological data.
- Vcflib - A C++ library for parsing and manipulating VCF files.
- Wham - Structural variants (SVs) in Genomes by directly applying association tests to BAM files.
BitTorrent
- jech/dht - BitTorrent DHT library in C.
- libtorrent (a.k.a. libtorrent-rasterbar) - An efficient feature complete C++ bittorrent implementation.
- LibTorrent (a.k.a. libtorrent-rakshasa) - BitTorrent library.
- libutp - uTorrent Transport Protocol library.
Blockchain
Tools for building blockchains.
- mako - Full bitcoin implementation in C.
- okcash - OK wallet integration/staging tree • Okcash
- wallet-core - Cross-platform, cross-blockchain wallet library.
Chemistry
Chemistry, 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.
- gromacs - A message-passing parallel molecular dynamics implementation.
- LAMMPS - A classical molecular dynamics code with a focus on materials modeling. It’s an acronym for Large-scale Atomic/Molecular Massively Parallel Simulator.
- MADNESS - Multiresolution Adaptive Numerical Environment for Scientific Simulation. 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. website
- ORCA - An ab initio quantum chemistry program package that contains modern electronic structure methods. website
- Psi - An ab initio computational chemistry package.
- Reaktoro - A computational framework in C++ and Python for modeling chemically reactive systems.
CLI
Console/Terminal User Interface, Command Line Interface
- Argh! - A minimalist, frustration-free, header-only argument handler.
- argparse - Command-line argument parsing library, inspired by Python’s argparse module.
- ArgParse - Argument Parser for Modern C++.
- Boost.Program_options - A library to obtain program options via conventional methods such as command line and config file.
- Clara - A simple to use, composable, command line parser for C++ 11 and beyond.
- cli - A cross-platform header only C++14 library for interactive command line interfaces (Cisco style).
- CLI11 - Header only single or multi-file C++11 library for simple and advanced CLI parsing.
- clipp - Easy to use, powerful and expressive command line argument handling for C++11/14/17 contained in a single header file.
- cpp-terminal - Small header only C++ library for writing multiplatform terminal applications.
- docopt.cpp - A library to generate option parser from docstring.
- FINAL CUT - Library for creating terminal applications with text-based widgets.
- FTXUI - C++ Functional Terminal User Interface.
- jarro2783/cxxopts - Lightweight C++ command line option parser.
- gflags - Commandline flags module for C++.
- imtui - Immediate Mode Text-based User Interface.
- indicators - Activity indicators for Modern C++.
- linenoise - A small self-contained alternative to readline and libedit.
- linenoise-ng - A small, portable GNU readline replacement for Linux, Windows and MacOS which is capable of handling UTF-8 characters.
- nemu - Ncurses UI for QEMU.
- Ncurses - A terminal user interface.
- oof - Convenient, high-performance RGB color and position control for console output.
- PDCurses - Public domain curses library with both source code and pre-compiled library available.
- replxx - A readline and libedit replacement that supports UTF-8, syntax highlighting, hints, works on Unix and Windows.
- Rogueutil - Rogueutil is a cross-platform C/C++ (Windows and *nix at least) utility for creating text-based user interfaces (TUI) and console-based games.
- structopt - Parse command line arguments by defining a struct.
- structopt - A lovely structopt library for C++! Parse command line arguments by defining a struct.
- tabulate - Table Maker for Modern C++.
- Taywee - A simple header-only C++ argument parser library.
- TCLAP - A mature, stable and feature-rich library for defining and accessing command line arguments in ANSI C++.
- termbox - A C library for writing text-based user interfaces.
Compression
Compression and Archiving Libraries
- bit7z - A C++ static library offering a clean and simple interface to the 7-zip DLLs.
- Brotli - Brotli compression format. Developed by Google.
- bzip2 - A freely available, patent free, high-quality data compressor.
- bzip3 - A better and stronger spiritual successor to BZip2.
- clzip - C version of the high-quality data compressor Lzip (LZMA implementation).
- FiniteStateEntropy - New generation entropy codecs : Finite State Entropy and Huff0.
- 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.
- 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.
- libarchive - Multi-format archive and compression library. website
- LZ4 - Extremely Fast Compression algorithm.
- 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.
- LZMA :zap: - The default and general compression method of 7z format.
- LZMAT - An extremely fast real-time lossless data compression library.
- miniz - Single C source file Deflate/Inflate compression library with zlib-compatible API, ZIP archive reading/writing, PNG writing.
- Minizip - Zlib with latest bug fixes that supports PKWARE disk spanning, AES encryption, and IO buffering.
- smaz - Small strings compression library.
- Snappy - A fast compressor/decompressor.
- ZLib - A very compact compression library for data streams.
- zlib-ng - zlib for the “next generation” systems. Drop-In replacement with some serious optimizations.
- zstd - Zstandard - Fast real-time compression algorithm. Developed by Facebook.
- ZZIPlib - Provides read access on ZIP-archives.
Concurrency
Concurrency and Multithreading
- alpaka - Abstraction library for parallel kernel acceleration.
- ArrayFire - A general purpose GPU library.
- Async++ - A lightweight concurrency framework for C++11, inspired by the Microsoft PPL library and the N3428 C++ standard proposal.
- async2 - Taking inspiration from protothreads, async.h, coroutines.h and async/await as found in python this is an async/await/fawait/event loop implementation for C based on Duff’s device. asynchronous, stackful subroutines.
- atomic_queue - C++ lockless queue.
- Boost.Compute - A C++ GPU Computing Library for OpenCL.
- Bolt - A C++ template library optimized for GPUs.
- ck - Concurrency primitives, safe memory reclamation mechanisms and non-blocking data structures.
- cchan - Small library for channel constructs for inter-thread communication.
- checkedthreads - A simple library for parallelism, with built-in checking for race conditions.
- ck - Concurrency primitives, safe memory reclamation mechanisms and non-blocking data structures.
- concurrencpp - A general concurrency library containing tasks, executors, timers and C++20 coroutines to rule them all.
- concurrentqueue - A fast multi-producer, multi-consumer lock-free concurrent queue for C++11.
- coro - Coroutine library and toolkit for C++20.
- coroutine - It’s an asymmetric coroutine library (like lua).
- coroutine - C++ 20 Coroutines in Action (Helpers + Test Code Examples)
- Cpp-Taskflow - Fast C++ Parallel Programming with Task Dependencies.
- CTPL - Modern and efficient C++ Thread Pool Library.
- CUB - CUB provides state-of-the-art, reusable software components for every layer of the CUDA programming mode.
- cupla - C++ API to run CUDA/C++ on OpenMP, Threads, TBB, … through Alpaka.
- C++React - A reactive programming library for C++11.
- uThreads - A concurrent user-level thread library implemented in C++.
- FiberTaskingLib - Task-based multi-threading library that supports task graphs with arbitrary dependencies.
- HPX - A general purpose C++ runtime system for parallel and distributed applications of any scale.
- Intel Games Task Scheduler - A task scheduling framework designed for the needs of game developers.
- Intel Parallel STL - Intel® implementation of C++17 STL for C++11 and above.
- Intel TBB - Intel® Threading Building Blocks.
- junction - A library of concurrent data structures in C++.
- Kokkos - A performance portable programming model for parallel execution and memory abstraction.
- libaco - A blazing fast and lightweight C asymmetric coroutine library.
- libcds - A C++ library of Concurrent Data Structures.
- Libclsph - An OpenCL based GPU accelerated SPH fluid simulation library.
- Libco - Libco is a c/c++ coroutine library that is widely used in WeChat services. It has been running on tens of thousands of machines since 2013.
- libcopp - cross-platform coroutine library in C++.
- libconcurrent - Concurrent programming library, using coroutines, for C11.
- libcsp - A concurrency C library 10x faster than Golang.
- libdill - Introduces structured concurrency in C.
- 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.
- libfiber - The high performance coroutine library for Linux/FreeBSD/MacOS/Windows, supporting select/poll/epoll/kqueue/iocp/windows GUI.
- libfibre - libfibre is a user-threading runtime.
- libgo - Go-style concurrency in C++11.
- libhl - Library implementing a thread-safe API to manage a range of data structures. Also provides some supporting functions and structures for concurrent and lockfree programming.
- liburcu - Data synchronization library, which scales linearly with the number of cores.
- libmill - Introduces Go-style concurrency in C.
- librf - A stack-free coroutine library written based on C++ Coroutines.
- lock-free-object-pool - A lock-free object pool, CAS/spin/pthread_mutex.
- lthread - lthread, a multicore enabled coroutine library written in C.
- marl - Marl is a hybrid thread / fiber task scheduler written in C++ 11.
- 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.
- NCCL - Optimized primitives for collective multi-GPU communication.
- OpenCL - The open standard for parallel programming of heterogeneous systems.
- OpenMP - The OpenMP API.
- promise-cpp - C++ promise/A+ library in Javascript style.
- pth - Portable implementation for non-preemptive priority-based scheduling for multiple threads of execution.
- pthreads - The POSIX thread library.
- pthreadpool - A portable and efficient thread pool implementation.
- psched - Priority-based Task Scheduling for Modern C++.
- RaftLib - The RaftLib C++ library, streaming/dataflow concurrency via C++ iostream-like operators.
- readerwriterqueue - A fast single-producer, single-consumer lock-free queue for C++.
- rotor - Event loop friendly C++ actor micro framework.
- s_task - awaitable coroutine library for C.
- STAPL - A C++ parallel programming framework designed to work on both shared and distributed memory parallel computers.
- state-threads - Light-weight thread library for C/C++ coroutine (similar to goroutine), for high performance network servers.
- TinyCThread - Portable, small implementation of the C11 threads API.
- stdgpu - Efficient STL-like Data Structures on the GPU.
- thread-pool - Thread pool implementation using c++11 threads.
- thread-pool - A modern thread pool implementation based on C++20.
- thread-pool - BS::thread_pool: a fast, lightweight, and easy-to-use C++17 thread pool library.
- ThreadPool - A simple C++11 Thread Pool implementation.
- threadpool - based on C++11 , a mini threadpool , accept variable number of parameters.
- Thrust - A parallel algorithms library which resembles the C++ Standard Template Library (STL).
- transwarp - A header-only C++ library for task concurrency.
- HPX - A general purpose C++ runtime system for parallel and distributed applications of any scale.
- SObjectizer - An implementation of Actor, Publish-Subscribe, and CSP models in one rather small C++ framework. With performance, quality, and stability proved by years in the production.
- Quantum - A powerful C++ coroutine dispatcher framework built on top of boost::coroutines2.
- VexCL - A C++ vector expression template library for OpenCL/CUDA.
- YACLib - Yet Another Concurrency Library.
Configuration
Configuration files, INI files
- cpptoml - A header-only library for parsing TOML configuration files.
- figcone - Read JSON, YAML, TOML, XML or INI configuration by declaring a struct.
- ini-cpp - Single header only C++ version, with some handy read/write interface, extend from inih. website
- inifile-cpp - A header-only and easy to use Ini file parser for C++.
- inih - Simple .INI file parser in C, good for embedded systems.
- iniparser - INI file parser.
- inipp - Simple header-only C++ ini parser and generator.
- libconfig - C, C++ library for processing structured configuration files. website
- libconfuse - Small configuration file parser library for C.
- simpleini - Cross-platform C++ library providing a simple API to read and write INI-style configuration files.
- tinytoml - A header only C++11 library for parsing TOML.
- toml++ - Header-only TOML parser and serializer for C++17 and later.
- rapidyaml - Rapid YAML is a C++ library to parse and emit YAML.
- yaml-cpp - is a YAML parser and emitter in C++ matching the YAML 1.2 spec.
Containers
- btree.c - A B-tree implementation in C.
- C++ B-tree - A template library that implements ordered in-memory containers based on a B-tree data structure.
- 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. website
- dynamic_bitset - A C++17 header-only dynamic bitset.
- Forest - Template library implementing an AVL, a Binary Search, a KD and a Quad Tree.
- hashmap.c - Hash map implementation in C.
- Hashmaps - Implementation of open addressing hash table algorithms in C++.
- Hopscotch map - A fast header-only hash map which uses hopscotch hashing for collisions resolution.
- LSHBOX - A c++ toolbox of locality-sensitive hashing (LSH), provides several popular LSH algorithms, also support Python and MATLAB.
- MPSCQ - This is an intrusive lock-free multiple-producer, single-consumer queue inspired by Dmitry Vyukov’s implementation.
- 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.
- plf::list - A std::list implementation which removes range splicing in order to enable cache-friendlier structure, yielding significant performance gains.
- plf::stack - A replacement container for the std::stack container adaptor, with better performance than any std container in a stack context.
- ring_span lite - A simplified implementation of Arthur O’Dwyer’s ring_span implementation ie. a circular buffer view.
- robin-hood-hashing - Fast & memory efficient hashtable based on robin hood hashing for C++14.
- robin-map - Fast hash map and hash set using robin hood hashing.
- rtree.c - An R-tree implementation in C.
- sparsepp - A fast, memory efficient hash map for C++.
Cryptography
Cryptography and Encryption Libraries
- Bcrypt - A cross platform file encryption utility. Encrypted files are portable across all supported operating systems and processors.
- BeeCrypt - A portable and fast cryptography library.
- bfish - A single include C99 Blowfish ECB crypto library.
- Botan - A crypto library for C++.
- cifra - Cifra is a collection of cryptographic primitives targeted at embedded use.
- compact25519 - A compact portable X25519 + Ed25519 implementation.
- Crypto++ - A free C++ class library of cryptographic schemes.
- crypto3 - Modern Cryptography Suite in C++17.
- digestpp - C++11 header-only message digest (hash) library.
- GnuPG - A complete and free implementation of the OpenPGP standard.
- GnuTLS - A secure communications library implementing the SSL, TLS and DTLS protocols.
- HEhub - A library for homomorphic encryption and its applications.
- libgcrypt - A general purpose cryptographic library originally based on code from GnuPG.
- liblithium - liblithium is a lightweight cryptography library that is portable by design.
- 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.
- libhydrogen - A lightweight, secure, easy-to-use crypto library suitable for constrained environments.
- libsecp256k1 - Optimized C library for ECDSA signatures and secret/public key operations on curve secp256k1.
- libtomcrypt - A fairly comprehensive, modular and portable cryptographic toolkit.
- mbedTLS - An open source, portable, easy to use, readable and flexible SSL library, previously known as PolarSSL.
- Nettle - A low-level cryptographic library.
- OpenSSL - A robust, commercial-grade, full-featured, and Open Source cryptography library.
- picotls - Picotls is a TLS 1.3 (RFC 8446) protocol stack written in C.
- pkcs11js - A Node.js implementation of the PKCS#11 2.3 interface. (Keywords: Javascript, PKCS#11, Crypto, Smart Card, HSM).
- portable8439 - Portable 8439: ChaCha20-Poly1305 (RFC 8439) in portable & fast C99.
- retter - A collection of hash functions, ciphers, tools, libraries, and materials related to cryptography.
- RHash - RHash (Recursive Hasher) is a console utility for calculation and verification of magnet links and various message digests.
- s2n - C99 implementation of the TLS/SSL protocols, designed to be simple, fast and with security as a priority.
- sha1collisiondetection - Library and command line tool to detect SHA-1 collision in a file.
- t1ha - Fast Positive Hash, it is a portable non-cryptographic 64-bit hash function.
- Tink - A multi-language, cross-platform library that provides cryptographic APIs that are secure, easy to use correctly, and hard(er) to misuse.
- Tiny AES in C - Small portable AES128/192/256 in C.
- tr31 - ASC X9 TR-31 library and tools.
- trezor-crypto - Heavily optimized crypto algorithms for embedded devices.
- tsip - Tiny sip-like hash. This repository has Go, amd64, C, and Rust implemtations of a small fast string hashing function.
- Themis - crypto library for painless data security, providing symmetric and asymmetric encryption, secure sockets with forward secrecy, for mobile and server platforms.
- xxHash - Extremely fast hash algorithm.
- x509ls - A text-based SSL certificate viewer. Shows an SSL server’s certificate chain, and the validation path formed by OpenSSL.
CSV
Libraries for parsing Comma Separated Value (CSV) files
- csv2 - Fast CSV parser for modern C++.
- csv_parser - This library provides a CSV parser to be used in an event loop for processing large amounts of streaming data.
- csv_parser - C library for parsing CSV files.
- Fast C++ CSV Parser - Small, easy-to-use and fast header-only library for reading CSV files.
- lazycsv - A fast, lightweight and single-header csv parser for modern C++.
- libcsv - csv parser library.
- minicsv - A tiny, fast, simple, single-file, BSD-licensed CSV parsing library in C.
- Vince’s CSV Parser - A fast, self-contained, streaming C++17 CSV parser with optional type-casting and statistics.
Database
Database Libraries, SQL Servers, ODBC Drivers, and Tools
- Aerospike - Aerospike is a distributed, scalable NoSQL database.
- age - Graph database optimized for fast analysis and real-time data processing. It is provided as an extension to PostgreSQL.
- AgensGraph - AgensGraph, a transactional graph database based on PostgreSQL.
- Akumuli - Akumuli is a time-series database for modern hardware.
- ArangoDB - ArangoDB is a multi-model, open-source database with flexible data models for documents, graphs, and key-values. Build high performance applications using a convenient SQL-like query language or JavaScript extensions. Use ACID transactions if you require them. Scale horizontally with a few mouse clicks.
- ArDb - A redis protocol compatible nosql, it support multiple storage engines as backend like Google’s LevelDB, Facebook’s RocksDB, OpenLDAP’s LMDB, PerconaFT, WiredTiger, ForestDB.
- AtomSpace - The OpenCog (hyper-)graph database and graph rewriting system.
- BaikalDB - BaikalDB, A Distributed HTAP Database.
- Bedrock - Rock solid distributed database specializing in active/active automatic failover and WAN replication.
- BerylDB - BerylDB is a fully modular data structure data manager that can be used to store data as key-value entries. The server allows channel subscription and is optimized to be used as a cache repository. Supported structures include lists, sets, multimaps, and keys.
- BerkeleyDB - Library for a high-performance embedded database for key-value data.
- CacheGrand - cachegrand - a modern OSS Key-Value store built for today’s hardware.
- Ceph - Ceph is a distributed object, block, and file storage platform. WebSite
- CacheLib - Pluggable in-process caching engine to build and scale high performance services.
- Citus - Citus is a PostgreSQL extension that transforms Postgres into a distributed database—so you can achieve high performance at any scale.
- ClickHouse - C++ client for ClickHouse DBMS.
- corobase - Coroutine-Oriented Main-Memory Database Engine, VLDB 2021.
- corvus - Fast and lightweight Redis Cluster Proxy for Redis 3.0
- cpp_redis - C++11 Lightweight Redis client: async, thread-safe, no dependency, pipelining, multi-platform.
- cruzdb - Append-only key-value database on a distributed shared-log.
- DBx1000 - DBx1000 is a single node OLTP database management system (DBMS). The goal of DBx1000 is to make DBMS scalable on future 1000-core processors.
- doris - Apache Doris is an easy-to-use, high performance and unified analytics database.
- Dragonfly - A modern replacement for Redis and Memcached.
- duckdb - DuckDB is an in-process SQL OLAP Database Management System.
- Dynomite - Inspired by Dynamo whitepaper, is a thin, distributed dynamo layer for different storage engines and protocols. Currently these include Redis and Memcached. Dynomite supports multi-datacenter replication and is designed for high availability.
- ep-engine - Eventually Persistent Couchbase Data Layer.
- ejdb - Embeddable JSON Database engine C library. Simple XPath like query language (JQL). Websockets / Android / iOS / React Native / Flutter / Java / Dart / Node.js bindings. Docker image.
- Extensible-Storage-Engine - ESE is an embedded / ISAM-based database engine, that provides rudimentary table and indexed access. However the library provides many other strongly layered and and thus reusable sub-facilities as well: A Synchronization / Locking library, a Data-structures / STL-like library, an OS-abstraction layer, and a Cache Manager.
- FineDB - High-performance key-value noSQL database. Written in C, multi-threaded, based on LightningDB and nanomsg. Web site
- FoundationDB - FoundationDB is a distributed database designed to handle large volumes of structured data across clusters of commodity servers. It organizes data as an ordered key-value store and employs ACID transactions for all operations. It is especially well-suited for read/write workloads but also has excellent performance for write-intensive workloads.
- OpenTick - OpenTick is a fast tick database for financial timeseries data, built on FoundationDB with simplified SQL layer.
- ForestDb - A Fast Key-Value Storage Engine Based on Hierarchical B+-Tree Trie.
- Greenplum Database (GPDB) - Greenplum Database - Massively Parallel PostgreSQL for Analytics. An open-source massively parallel data platform for analytics, machine learning and AI.
- GridDB - GridDB is a next-generation open source database that makes time series IoT and big data fast,and easy.
- Groonga - Groonga is an open-source fulltext search engine and column store.
- hiberlite - C++ Object-relational mapping for sqlite3.
- Hiredis - A minimalistic C client library for the Redis database.
- hiredis-vip - Hiredis-vip is a C client library for the Redis database, supported redis cluster.
- hse - HSE is a fast embeddable key-value store designed for SSDs and persistent memory. HSE optimizes performance and endurance by orchestrating data placement across DRAM and multiple classes of solid-state storage.
- iowow - The skiplist based persistent key/value storage engine.
- IvorySQL - Open Source Oracle Compatible PostgreSQL.
- Jungle - An embedded key-value store library specialized for building state machine and log store.
- KeyDB - KeyDB is a high performance fork of Redis with a focus on multithreading, memory efficiency, and high throughput.
- kvrocks - Kvrocks is a distributed key value NoSQL database based on RocksDB and compatible with Redis protocol.
- LevelDB - A fast key-value storage library written at Google that provides an ordered mapping from string keys to string values.
- lf - Fully Decentralized Fully Replicated Key/Value Store.
- libmdbx - One of the fastest embeddable key-value ACID database without WAL.
- libfpta - Ultra fast, compact, Embedded Database for tabular and semistructured data.
- libpqxx - The official C++ client API for PostgreSQL.
- LMDB - Very fast embedded key/value store with full ACID semantics.
- LMDB++ - C++11 wrapper for the LMDB embedded database library.
- LruClockCache - A low-latency LRU approximation cache in C++ using CLOCK second-chance algorithm. Multi level cache too. Up to 2.5 billion lookups per second.
- ManticoreSearch - Easy to use open source fast database for search. Good alternative to Elasticsearch now, Drop-in replacement for E in the ELK soon.
- MariaDB - Robust, scalable and reliable SQL server, designed to be a drop-in replacement for MySQL.
- matador - matador is an ORM and Web Application framework written in C++. It encapsulates all database backend communication and offers a simple (web) server.
- memcache - Free & open source, high-performance, distributed memory object caching system.
- memgraph - Open-source graph database, built for real-time streaming data, compatible with Neo4j.
- MMKV - MMKV is an efficient, small, easy-to-use mobile key-value storage framework used in the WeChat application. It’s currently available on Android, iOS/macOS, Win32 and POSIX.
- MonetDB - The MonetDB database system is a high-performance database kernel for query-intensive applications. The MonetDB kernel works together with an SQL frontend that is in a separate CVS module.
- MongoDB C Driver - MongoDB client library for C.
- MongoDB C++ Driver - C++ driver for MongoDB.
- MongoDB Libbson - A BSON utility library.
- MySQL++ - A C++ wrapper for MySQL’s C API.
- nanodbc - A small C++ wrapper for the native C ODBC API.
- Nebula Graph - Nebula Graph is an open-source graph database capable of hosting super large-scale graphs with billions of vertices (nodes) and trillions of edges, with milliseconds of latency. It delivers enterprise-grade high performance to simplify the most complex data sets imaginable into meaningful and useful information.
- NomaDB - Eventual consistent distributed key - data structure database based on CRDT.
- OceanBase - OceanBase Database is a native distributed relational database. It is developed entirely by Alibaba and Ant Group. OceanBase Database is built on a common server cluster. Based on the Paxos protocol and its distributed structure, OceanBase Database provides high availability and linear scalability. OceanBase Database is not dependent on specific hardware architectures.
- ODB - An open-source, cross-platform, and cross-database object-relational mapping (ORM) system for C++.
- ormpp - modern C++ ORM, C++17, support mysql, postgresql, sqlite.
- PaxosStore - PaxosStore has been deployed in WeChat production for more than two years, providing storage services for the core businesses of WeChat backend. Now PaxosStore is running on thousands of machines, and is able to afford billions of peak TPS.
- Pedis - Pedis is the NoSQL data store using the SEASTAR framework, compatible with REDIS. The name of Pedis is an acronym of Parallel redis, which with high throughput and low latency.
- Pegasus - Pegasus is a distributed key-value storage system.
- PerconaFT - PerconaFT is a high-performance, transactional key-value store, used in the TokuDB storage engine for Percona Server and MySQL, and in TokuMX, the high-performance MongoDB distribution. PerconaFT is provided as a shared library with an interface similar to Berkeley DB.
- Pika - Pika is a nosql compatible with redis, it is developed by Qihoo’s DBA and infrastructure team.
- pgfe - PostgreSQL C++ driver.
- PolarDB - PolarDB for PostgreSQL (PolarDB for short) is an open source database system based on PostgreSQL. It extends PostgreSQL to become a share-nothing distributed database, which supports global data consistency and ACID across database nodes, distributed SQL processing, and data redundancy and high availability through Paxos based replication.
- proxysql - High-performance MySQL proxy with a GPL license.
- Qedis - A C++11 implementation of Redis Server, including cluster, use Leveldb for persist storage.
- QxOrm - QxOrm library - C++ Qt ORM (Object Relational Mapping) and ODM (Object Document Mapper) library - Official repository.
- recutils - Set of tools and a C library for accessing human-editable, plaintext database files called recfiles.
- Redcon - Redcon is a custom Redis server framework that is fast and simple to use. This is a C version of the original Redcon, and is built on top of evio.c.
- Redis - Redis is an in-memory database that persists on disk. The data model is key-value, but many different kind of values are supported: Strings, Lists, Sets, Sorted Sets, Hashes website
- RedisGraph - A graph database as a Redis module.
- Redpanda - Redpanda is a streaming platform for mission critical workloads. Kafka® compatible, No Zookeeper, no JVM, and no code changes required. Use all your favorite open source tooling - 10x faster.
- RediSearch - Full-Text search over Redis.
- redis3m - Wrapper of hiredis with clean C++ interface, supporting sentinel and ready to use patterns.
- redis-cluster-tool - Convenient and useful tool for redis cluster. It was primarily built to manage the redis cluster.
- redis-cpp - redis-cpp is a header-only library in C++17 for Redis (and C++11 backport).
- redis-nds - This is a version of Redis patched to implement NDS (the Naive Disk Store). Documentation on this feature is contained within README.nds.
- redis-roaring - Roaring Bitmaps for Redis.
- Reindexer - Reindexer is an embeddable, in-memory, document-oriented database with a high-level Query builder interface.
- RethinkDB - RethinkDB is the first open-source scalable database built for realtime applications. It exposes a new database access model, in which the developer can tell the database to continuously push updated query results to applications without polling for changes. RethinkDB allows developers to build scalable realtime apps in a fraction of the time with less effort.
- RocksDB - Embedded key-value store for fast storage from facebook.
- rqlite - The lightweight, distributed relational database built on SQLite.
- SequoiaDB - SequoiaDB is a MySQL/PostgreSQL-compatible distributed relational database. It supports ACID, horizontal scaling, HA/DR and Multi-model data storage engine.
- Scylla - Scylla is the real-time big data database that is API-compatible with Apache Cassandra and Amazon DynamoDB.
- sharedhashfile - Share Hash Tables With Stable Key Hints Stored In Memory Mapped Files Between Arbitrary Processes.
- SimDB - High performance, shared memory, lock free, cross platform, single file, minimal dependencies, C++11 key-value store.
- SOCI - A database abstraction layer for C++.
- sophia - Modern, embeddable key-value database.
- sparkey - Sparkey is a simple constant key/value storage library. It is mostly suited for read heavy systems with infrequent large bulk inserts. It includes both a C library for working with sparkey index and log files (libsparkey), and a command line utility for getting info about and reading values from a sparkey index/log (sparkey).
- SplinterDb - High Performance Embedded Key-Value Store.
- sqlean - The ultimate set of SQLite extensions.
- sqlite-gui - Lightweight SQLite editor for Windows.
- ssdb - SSDB is a high performace key-value(key-string, key-zset, key-hashmap) NoSQL database, an alternative to Redis.
- StarRocks - StarRocks is a next-gen sub-second MPP database for full analytics scenarios, including multi-dimensional analytics, real-time analytics and ad-hoc query.
- SQLite - A completely embedded, full-featured relational database in a few 100k that you can include right into your project.
- SQLiteC++ - SQLiteC++ (SQLiteCpp) is a smart and easy to use C++ SQLite3 wrapper.
- sqlite_modern_cpp - Header only C++14 wrapper around sqlite library.
- sqlite_orm - SQLite ORM light header only library for modern C++.
- sqlpp11 - A type safe embedded domain specific language for SQL queries and results in C++.
- tair - A distributed key-value storage system developed by Alibaba Group.
- TDengine - An open-source time-series database with high-performance, scalability and SQL support. It can be widely used in IoT, Connected Vehicles, DevOps, Energy, Finance and other fields.
- Tendis - Tendis is a high-performance distributed storage system fully compatible with the Redis protocol.
- Tera - Tera is a high performance distributed NoSQL database, which is inspired by google’s BigTable and designed for real-time applications.
- TerarkDb - A RocksDB compatible KV storage engine with better performance.
- TileDB - Fast Dense and Sparse Multidimensional Array DBMS.
- TimescaleDB - Database designed to make SQL scalable for time-series data. It is engineered up from PostgreSQL and packaged as a PostgreSQL extension, providing automatic partitioning across time and space (partitioning key), as well as full SQL support.
- TokuDB - TokuDB is a high-performance, write optimized, transactional storage engine for Percona Server and MySQL. For more details, see our product page.
- TokuMX - TokuMX is a high-performance distribution of MongoDB, a document-oriented database with built-in sharding and replication, built on Tokutek’s Fractal Tree indexes.
- ToplingDB - ToplingDB is a cloud native LSM Key-Value Store with searchable compression algo and distributed compaction
- Typesense - Open Source alternative to Algolia and an Easier-to-Use alternative to ElasticSearch zap mag sparkles Fast, typo tolerant, in-memory fuzzy Search Engine for building delightful search experiences
- upscaledb - An embedded “typed” key/value store with a built-in query interface.
- UnQLite - Self-contained, serverless, zero-configuration, transactional NoSQL engine with a C interface.
- urkel - An optimized and cryptographically provable key-value store. Written in C.
- Velox - A C++ vectorized database acceleration library aimed to optimizing query engines and data processing systems. Website
- VoltDB - VoltDB is a horizontally-scalable, in-memory SQL RDBMS designed for applications that benefit from strong consistency, high throughput and low, predictable latency.
- ybc - YBC - Yet another Blob Cache library. This library implements fast in-process blob cache with persistence support.
- YugabyteDB - YugabyteDB is a high-performance, cloud-native distributed SQL database that aims to support all PostgreSQL features. It is best fit for cloud-native OLTP (i.e. real-time, business critical) applications that need absolute data correctness and require at least one of the following: scalability, high tolerance to failures, globally-distributed deployments.
- YTsaurus - YTsaurus is a distributed storage and processing platform for big data with support for MapReduce model, a distributed file system and a NoSQL key-value database. Website
- WhiteDB - Lightweight database library, operating entirely in main memory.
Data Structures
This section has big libraries that provide data structures and other stuff you expect of a ‘modern’ standard library.
- APR - Apache Portable Runtime; another library of cross-platform utility functions.
- avlmini - AVL implementation which is as fast/compact as linux’s rbtree.
- bplustree - A minimal but extreme fast B+ tree indexing structure demo for billions of key-value storage.
- BTree - A general-purpose high-performance lightweight STL-like modern C++ B-Tree.
- btrees - C++ implementation of concurrent Binary Search Trees.
- c-hashmap - A fast hash map/hash table (whatever you want to call it) for the C programming language. It can associate a key with a pointer or integer value in O(1) time.
- C-Macro-Collections - Generate simple and generic data structures using macros.
- C Algorithms - Collection of common algorithms and data structures for C.
- CLIST - Simple and lightweight dynamic array implementation.
- code-library - Templates, algorithms and data structures implemented and collected for programming contests.
- Collections-C - Library of generic data structures.
- CPL - The Common Pipeline Library; a set of libraries designed to be a comprehensive, efficient and robust software toolkit.
- cpp-btree - C++ B-tree is a template library that implements ordered in-memory containers based on a B-tree data structure.
- cpp-btree - Modern C++ B-tree containers.
- cstl - C STL - a Simple Template Library for C, including JSON processing, hash maps, dynamic arrays, binary strings and more.
- ds - Common Data Structures and Algorithms.
- EFL - Large collection of useful data structures and functions.
- C++ Fixed Containers - Header-only C++20 library that provides fixed containers.
- GLib - Library of utility functions and structures, designed to be portable, efficient and powerful.
- GIO - Modern and easy-to-use VFS API.
- GObject - Object-oriented system and object model for C.
- hashmap.h - A simple one header hashmap implementation for C/C++.
- igraph - A graph processing library.
- kdtree - Simple library for working with KD-trees.
- labynkyr - C++11 implementation of side-channel key rank estimation and parallel key search algorithms.
- libavl - Library containing a range of self-balancing binary trees.
- libcdada - A small, portable, MACRO-less library for basic data structures (list, set, map, queue…) in C (C++ backend).
- libkdtree - libkdtree++ is a C++ template container implementation of k-dimensional space sorting, using a kd-tree.
- liblfds - Portable lock-free data structure library. Public domain (more exactly, whatever license you want).
- libsrt - Soft and hard real-time data structures.
- list.h - Implementations for singly linked and doubly linked list functions.
- lrucache11 - A header only C++11 LRU Cache template class that allows you to define key, value and optionally the Map type. uses a double linked list and a std::unordered_map style container to provide fast insert, delete and update.
- M*LIB - Library for generic, but typesafe C containers. Implemented as header-only.
- MyTinySTL - Achieve a tiny STL in C++11.
- offbrand - Collection of generic, reference-counted data structures.
- PackedArray - Random-access array of tightly packed unsigned integers of any desired width. Has a SIMD-optimized implementation.
- Parallel Hashmap - A family of header-only, very fast and memory-friendly hashmap and btree containers.
- PBL - Large library of utilities, featuring data structures, among other things.
- pqueue - Priority queue for C.
- range-v3 - Range library for C++11/14/17. This code is the basis of a formal proposal to add range support to the C++ standard library.
- rb3ptr - Red-Black tree. Exposes almost all implementation primitives, so can be used for scenarios like augmentation, multiple compatible ordering functions, and more.
- qlibc - Simple and powerful C library, designed as a replacement for GLib while focusing on being small and light.
- quadsort - Quadsort is a stable adaptive merge sort which is faster than quicksort.
- tensorstore - Library for reading and writing large multi-dimensional arrays.
- uthash - Single-file hash table implementation.
- vector.h - C header library for typed lists (using macros and “template” C).
- vla - Variable length array.
Big Integer
- wide-integer - Wide-Integer implements a generic C++ template for uint128_t, uint256_t, uint512_t, uint1024_t, etc.
Interval Tree
- AVL Tree Integer Intervals - This is an implementation of an AVL Tree having as node values closed integer intervals of the form [4, 16], where 4 is the left-bounded value and 16 is right-bounded value.
- cgranges - A C/C++ library for fast interval overlap queries (with a “bedtools coverage” example).
- cpp_trees - The cpp_trees repo provides various tree data structures in C++ along with some simple unit tests.
- interval-tree - A C++ header only interval tree implementation.
- interval-tree - Implementation of an augmented AVL interval tree in the STL fashion.
- interval-tree - Interval tree implementation.
- interval_tree - An STL-like ordered tree data structure to hold intervals.
- interval_tree_cpp - CLRS’s Interval Tree implementation in C++.
- IntervalTree - A red-black self-balancing interval tree C++11 header-only implementation.
- intervaltree - An interval tree implementation in C++.
- intervaltree - This library provides a basic implementation of an interval tree using C++ templates, allowing the insertion of arbitrary types into the tree.
- IntervalTreess
- iTree - iTree - an Interval Tree library. In computer science, an interval tree is a tree data structure to hold intervals. Every node in itree has a start and an end value.
- ITree - C++ Interval Tree implementation.
- parallel-interval-tree - Parallel interval tree.
- range-tree - Implementation of range tree, range tree with fractional cascading and interval tree.
- rangetree - Implementation of the fastest interval tree querying algorithm based on range tree data structure. Work on genomic and time intervals etc. Paper in Scientific Reports.
- Range trees and Interval Trees - Implementation of range trees and interval trees for windowing queries.
- red-black-and-interval-trees - This is some code for red-black trees and interval trees in C++.
- test-itree - Compare C++ interval-tree implementations.
- UniqueIntervalTree - A C++ implementation for an IntervalTree that does not allow overlapping ranges.
Miscellaneous Data Structures and Algorithms
- Fast Algorithms in Data Structures - LA, LCA, Perfect Hash, RMQ, Segment Tree, Sparse Table, Treap, vEB Tree, x-fast Tree (Willard), Suffix Automaton (Blumer et al.), Suffix Tree (Ukkonen)
- mmmulti - Memory mapped multimap, multiset, and implicit interval tree based on an in-place parallel sort.
- Ring-Buffer - A simple ring buffer (circular buffer) designed for embedded systems.
- ring-buffer - Ring buffer library for C++17.
- sdsl-lite - Succinct Data Structure Library 2.0
Segment Tree
- ygg - An intrusive C++17 implementation of a Red-Black-Tree, a Weight Balanced Tree, a Dynamic Segment Tree and much more.
Data visualization
Data visiualization Libraries
- matplotplusplus - C++ Graphics Library for Data Visualization. website
Debug
Debugging Libraries, Memory Leak and Resource Leak Detection, Unit Testing
- backward-cpp - A beautiful stack trace pretty printer for C++.
- benchmark - Google provided small microbenchmark support library.
- Boost.Test - Boost Test Library.
- bytehound - A memory profiler for Linux.
- check - Check is a unit testing framework for C. website
- doctest - The lightest feature rich C++ single header testing framework.
- Catch - A modern, C++-native, header-only, framework for unit-tests, TDD and BDD.
- Catch2 - A modern, C++-native, test framework for unit-tests, TDD and BDD.
- Celero - C++ Benchmarking Framework.
- Coz - Coz is a new kind of profiler that unlocks optimization opportunities missed by traditional profilers.
- CppUTest - Unit testing and mocking framework for C/C++.
- Criterion - A cross-platform C and C++ unit testing framework for the 21st century.
- CUTE - C++ Unit Testing Easier.
- CMocka - unit testing framework for C with support for mock objects.
- CppUnit - C++ port of JUnit. [LG
- CTest - The CMake test driver program.
- cwrap - Testing full software stack on a single machine.
- Deleaker - A tool for resource leak detection, including memory, GDI and handle leaks.
- FakeIt - Simple mocking framework for C++.
- fff - A micro-framework for creating fake C functions.
- Google Mock - A library for writing and using C++ mock classes.
- Google Test - Google C++ Testing Framework.
- ig-debugheap - Multiplatform debug heap useful for tracking down memory errors.
- libbacktrace - A C library that may be linked into a C/C++ program to produce symbolic backtraces.
- libtap - Write tests in C.
- magic-trace - magic-trace collects and displays high-resolution traces of what a process is doing.
- MemTrack - Tracking memory allocations in C++.
- microprofile - Profiler with web-view for multiple platforms.
- MinUnit - A minimal unit testing framework for C self-contained in a single header file.
- 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.
- Nanotimer - A simple low-overhead cross-platform timer class for benchmarking.
- Nonius - A C++ micro-benchmarking framework.
- Remotery - Single C File Profiler with Web Viewer.
- tcpkali - Fast multi-core TCP and WebSockets load generator.
- trompeloeil - Header only C++14 mocking framework.
- snitch - Lightweight C++20 testing framework.
- Touca - Automated regression testing system for testing complex mission-critical workflows.
- UnitTest++ - A lightweight unit testing framework for C++.
- Unity - Simple Unit Testing for C.
- utest.h - Single header unit testing framework for C and C++.
- μt - C++20 single header/single module, macro-free μ(micro)/Unit Testing Framework.
- VLD - Visual Leak Detector. A free, robust, open-source memory leak detection system for Visual C++.
Distributed Systems
- cirrus - Serverless ML Framework.
- Curve - Curve is a high-performance, lightweight-operation, cloud-native open source distributed storage system. Curve can be applied to: 1) mainstream cloud-native infrastructure platforms OpenStack and Kubernetes; 2) high-performance storage for cloud-native databases; 3) cloud storage middleware using S3-compatible object storage as a data storage.
- Dogee - C++ distributed platform for shared memory programming.
- endurox - Enduro/X is Open Source Middleware Platform for Distributed Transaction Processing.
- fibre - Abstraction layer for painlessly building object oriented distributed systems that just work.
- fuurin - Simple and fast ZeroMQ-based communication library.
- glusterfs - Gluster Filesystem : Build your distributed storage in minutes.
- libatapp - Server app framework based on libatbus.
- LightCTR - Lightweight and Scalable framework that combines mainstream algorithms of Click-Through-Rate prediction based computational DAG, philosophy of Parameter Server and Ring-AllReduce collective communication.
- LizardFS - LizardFS is a highly reliable, scalable and efficient distributed file system. It spreads data over a number of physical servers, making it visible to an end user as a single file system.
- Nebula - Nebula is a powerful framework for building highly concurrent, distributed, and resilient message-driven applications for C++.
- nebula - A distributed block-based data storage and compute engine.
- NuRaft - C++ implementation of Raft core logic as a replication library.
- Pixie - Instant Kubernetes-Native Application Observability. website
- Service Fabric - Service Fabric is a distributed systems platform for packaging, deploying, and managing stateless and stateful distributed applications and containers at large scale.
- Skale Consensus - Running the very core of SKL network, SKALE BFT consensus is universal, modern, modular, high-performance, asynchronous, provably-secure, agent-based Proof-of-Stake blockchain consensus engine in C++ 17. Includes provably secure embedded Oracle. Used by SKALE elastic blockchains. Easy and flexible enough to implement your own blockchain or smart.
- v6d - vineyard (v6d): an in-memory immutable data manager. (Project under CNCF, TAG-Storage).
- wukong - A graph-based distributed in-memory store that leverages efficient graph exploration to provide highly concurrent and low-latency queries over big linked data.
- zookeeper-cpp - A ZooKeeper client for C++.
Documentation
- doxygen - The de facto standard tool for generating documentation from annotated C++ sources. website
- doxyrest - A compiler from Doxygen XML to reStructuredText for Sphinx.
- hdoc - The modern documentation tool for C++. website
- Natural Docs - Natural Docs is an open source documentation generator for multiple programming languages. website
- Sphinx - Sphinx makes it easy to create intelligent and beautiful documentation. website
Libraries and tools that implement email creation and sending.
- eMail - Program that will send email via the command line to remote smtp servers or use ‘sendmail’ internally, and fully interact with GNUPG to encrypt and sign your e-mails.
- LibEtPan - Mail library providing an efficient network for IMAP, SMTP, POP and NNTP.
- libquickmail - Library intended to give developers a way to send email from their applications. Supports multiple To/Cc/Bcc recipients and attachments without size limits.
Embeddable Scripting Languages
- Duktape - An embeddable Javascript engine with compact footprint. website
- MetaCall - Cross-platform Polyglot Runtime which supports NodeJS, JavaScript, TypeScript, Python, Ruby, C#, Wasm, Java, Cobol and more.
- MuJS - Lightweight Javascript interpreter designed for embedding in other software to extend them with scripting capabilities.
- quickjs - QuickJS is a small and embeddable Javascript engine. It supports the ES2020 specification including modules, asynchronous generators and proxies.
Financial
Packages for accounting and finance.
- aes256gcm-decrypt - Decrypt AES256GCM-encrypted data in Apple Pay Payment Tokens.
- applepay-php - A PHP extension that verifies and decrypts Apple Pay payment tokens.
- nfc-frog - Contactless EMV credit card reader.
Font
Libraries for parsing and manipulating font files.
- Fontconfig - Font configuration and customization library. website
- FreeType - FreeType is a freely available software library to render fonts.
- otfcc - A C library and utility used for parsing and writing OpenType font files.
- harfbuzz - A text shaping engine.
Game Engine
- Acid - A high speed C++17 Vulkan game engine.
- Allegro - A cross-platform library mainly aimed for video games and multimedia programming.
- [astera][https://github.com/tek256/astera] - C99 Cross Platform 2D Game Library.
- Atomic Game Engine - A multi-platform 2D and 3D engine with a consistent API in C++, C#, JavaScript, and TypeScript.
- Banshee 3D - Modern C++14 game engine with Vulkan support, fully featured editor and C# scripting.
- Cocos2d-x - A multi-platform framework for building 2d games, interactive books, demos and other graphical applications.
- Corange - A game engine written in pure C, SDL and OpenGL.
- 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.
- delta3d - A robust simulation platform.
- EnTT - Gaming meets modern C++.
- GamePlay - A cross-platform native C++ game framework for creating 2D/3D mobile and desktop games.
- Godot - A fully featured, open source, MIT licensed, game engine.
- Grit - Community project to build a free game engine for implementing open world 3D games.
- Halley - A lightweight game engine written in C++14 with a “true” entity-component system.
- KlayGE - a cross-platform open source game engine with plugin-based architecture.
- OpenXRay - a community-modified X-Ray engine used in S.T.A.L.K.E.R. game series.
- Oxygine - A cross-platform 2D C++ game engine.
- Panda3D - A game engine, a framework for 3D rendering and game development for Python and C++ programs.
- PixelGameEngine - The official distribution of olcPixelGameEngine, a tool used in javidx9’s YouTube videos and projects.
- Polycode - A cross-platform framework for creative code in C++ (with Lua bindings).
- raylib - A simple and easy-to-use library to enjoy videogames programming. website
- Spring - A powerful free cross-platform RTS game engine.
- Torque2D - An open-source and cross-platform C++ engine built for 2D game development.
- Torque3D - An open-source C++ engine built for 3D game development.
- 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.
GUI
Graphic User Interface
- Boden - Native, mobile, cross-platform GUI Framework.
- CEGUI - Flexible, cross-platform GUI library.
- Elements - Lightweight, fine-grained, resolution independent, modular GUI library.
- Expo - An open-source platform for making universal native apps with React. Expo runs on Android, iOS, and the web.
- FLTK - Fast, light, cross-platform C++ GUI toolkit.
- GacUI - GPU Accelerated C++ User Interface, with WYSIWYG developing tools, XML supports, built-in data binding and MVVM features.
- GTK+ - A multi-platform toolkit for creating graphical user interfaces.
- gtkmm - The official C++ interface for the popular GUI library GTK+.
- JUCE - JUCE is an open-source cross-platform C++ application framework for desktop and mobile applications, including VST, VST3, AU, AUv3, RTAS and AAX audio plug-ins.
- imgui - Immediate Mode Graphical User Interface with minimal dependencies.
- implot - Immediate Mode Plotting widgets for imgui.
- iup - Multi-platform toolkit for building graphical user interfaces.
- libRocket - libRocket is a C++ HTML/CSS game interface middleware.
- libui - Simple and portable (but not inflexible) GUI library in C that uses the native GUI technologies of each platform it supports.
- MyGUI - Fast, flexible and simple GUI.
- nana - Nana is a cross-platform library for GUI programming in modern C++ style.
- NanoGui - A minimalistic cross-platform widget library for OpenGL 3.x or higher.
- nuklear - A single-header ANSI C gui library.
- PlotJuggler - PlotJuggler is a tool to visualize time series that is fast, powerful and intuitive.
- QCustomPlot - Qt plotting widget without further dependencies.
- QWidgetDemo - Some open source demos written in Qt (widgets) are expected to have more than 100.
- Qwt - Qt Widgets for Technical Applications.
- QwtPlot3D - A feature-rich Qt/OpenGL-based C++ programming library, providing essentially a bunch of 3D-widgets.
- revery - Revery is kind of like super-fast, native code Electron - with bundled React-like/Redux-like libraries and a fast build system - all ready to go!
- RmlUi - The HTML/CSS User Interface library evolved. Fork of libRocket.
- Sciter - Sciter is an embeddable HTML/CSS/scripting engine aimed to be used as an UI layer of modern desktop applications.
- Slint - Lightweight GUI toolkit for desktop and embedded.website
- WebUI - Use any web browser as GUI, with your preferred language in the backend, and HTML/JS/TS/CSS in the frontend.
- wxWidgets - A C++ library that lets developers create applications for Windows, Mac OS X, Linux and other platforms with a single code base.
- Yue - A library for creating native cross-platform GUI apps.
- 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.
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. website
- bgfx - A cross-platform rendering library.
- Blend2D - 2D vector graphics engine powered by a JIT compiler. website
- bs::framework - Modern C++14 library for the development of real-time graphical applications.
- Cairo - A 2D graphics library with support for multiple output devices.
- C-Turtle - A C++11 header-only turtle graphics library acting as a CImg wrapper.
- Diligent Engine - A modern cross-platform low-level 3D graphics library.
- DirectXTK - A collection of helper classes for writing DirectX 11.x code in C++.
- graphene - Thin layer of graphical data types.
- GLFW - A simple, cross-platform OpenGL wrangling library.
- GLFWPP - A thin modern C++17 header-only wrapper for GLFW.
- Harfang 3D - 3D visualization library usable in C++, Python, Lua and Go. Based on BGFX. website
- heman - Tiny library of image utilities dealing with height maps, normal maps, distance fields and the like.
- herebedragons - A basic 3D scene implemented with various engines, frameworks or APIs. website
- Horde3D - A small 3D rendering and animation engine.
- Ion - A small and efficient set of libraries for building cross-platform client or server applications that use 3D graphics. website
- Irrlicht - A high performance realtime 3D engine written in C++.
- libigl - Simple C++ geometry processing library.
- libcaca - ASCII renderer for terminal-based interfaces.
- LLGL - Low Level Graphics Library (LLGL) is a thin abstraction layer for the modern graphics APIs.
- magnum - Lightweight and modular C++11/C++14 graphics middleware for games and data visualization. website
- NanoVG - Antialiased 2D vector drawing library on top of OpenGL for UI and visualizations.
- Ogre 3D :zap: - A scene-oriented, real-time, flexible 3D rendering engine (as opposed to a game engine) written in C++.
- OpenSceneGraph - An open source high performance 3D graphics toolkit.
- OpenSubdiv - Pixar’s library for evaluating and rendering subdivision surfaces on CPU and GPU.
- OpenVDB - Library and tools for storing, editing, and rendering volumetric datasets.
- Panda3D - A framework for 3D rendering and game development for Python and C++.
- Partio - Library for wrangling particle data, with support for most common file formats.
- PlutoSVG - Tiny SVG rendering library in C.
- PlutoVG - A standalone 2D vector graphics library in C.
- SAIL - Small and fast image decoding library for humans (not for machines)
- Skia - A complete 2D graphic library for drawing Text, Geometries, and Images. webpage
- TinySpline - A small, yet powerful ANSI C library for interpolating, transforming, and querying arbitrary NURBS, B-Splines, and Bézier curves.
- urho3d - Cross-platform rendering and game engine.
- Yocto/GL - Tiny C++ Libraries for Data-Driven Physically-based Graphics.
Image Processing
- Boost.GIL - Generic Image Library.
- BitmapPlusPLus - Simple and Fast header only Bitmap C++ library.
- CImg - A small, open source, C++ toolkit for image processing.
- 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.
- FaceLivenessDetection-SDK - 3D Passive Face Liveness Detection (Anti-Spoofing). A single image is needed to compute liveness score. 99,67% accuracy on our dataset and perfect scores on multiple public datasets (NUAA, CASIA FASD, MSU…).
- 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. website
- DCMTK - DICOM Toolkit.
- FlyCV - FlyCV is a high-performance library for processing computer visual tasks.
- GDCM - Grassroots DICOM library.
- giflib - Library for reading and writing gif images.
- ITK - An open-source, cross-platform system for image analysis.
- Leptonica - Leptonica is an open source library containing software that is broadly useful for image processing and image analysis applications. website
- libfacedetection - Open source library for face detection in images. The face detection speed can reach 1500FPS.
- libjpeg-turbo - A JPEG image codec that uses SIMD instructions to accelerate baseline JPEG encoding and decoding. website
- libpag - libpag is a real-time rendering library for PAG (Portable Animated Graphics) files that renders both vector-based and raster-based animations across most platforms, such as iOS, Android, macOS, Windows, Linux, and Web.
- libpng - Official PNG reference library.
- [libRSVG][https://wiki.gnome.org/action/show/Projects/LibRsvg?action=show&redirect=LibRsvg] - Library to render SVG files using Cairo.
- libsixel - Library implementing the SIXEL protocol, allowing beautiful graphics in your terminal.
- libspng - A simpler interface for reading and writing PNG files.
- libvips - A fast image processing library with low memory needs. website
- libxmi - Function library for rasterizing 2D vector graphics.
- lightmapper - Single-file library for lightmap baking, using an existing OpenGL renderer.
- [little CMS][www.littlecms.com] - A Color Management System. It provides fast transforms between ICC profiles.
- Magick++ - ImageMagick program interfaces for C++.
- MagickWnd - ImageMagick program interfaces for C.
- mozjpeg - Improved JPEG encoder.
- OpenCV - Open source computer vision.
- OpenEXR - Cross-platform library for high dynamic range imaging.
- OpenImageIO - Powerful image and texture wrangling library with support for a wide number of common lossy and RAW formats.
- qoi - The “Quite OK Image” format for fast, lossless image compression.
- 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.
- stb-image - STB single-header image loading library.
- tesseract-ocr - An OCR engine.
- TinyEXIF - Tiny ISO-compliant C++ EXIF and XMP parsing library for JPEG.
- ultimateCreditCard-SDK - Bank credit card deep layout analysis, fields extraction and recognition/OCR (ScanToPay) using deep learning. website
- Video++ - A C++14 high performance video and image processing library.
- VIGRA - A generic C++ computer vision library for image analysis.
- VTK - Open-source, freely available software system for 3D computer graphics, image processing and visualization.
Internationalization
- gettext - GNU ‘gettext’.
- IBM ICU - A set of C/C++ and Java libraries providing Unicode and Globalization support.
- libiconv - An encoding conversion library between different character encodings.
- uni-algo - Unicode Algorithms Implementation for C/C++.
- utf8.h - Single header utf8 string functions for C and C++.
- utf8proc - A clean C library for processing UTF-8 Unicode data.
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.
- brpc - brpc is an Industrial-grade RPC framework using C++ Language, which is often used in high performance system such as Search, Storage, Machine learning, Advertisement, Recommendation etc. “brpc” means “better RPC”.
- 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).
- Cap’n Proto - Fast data interchange format and capability-based RPC system.
- cppzmq - Header-only C++ binding for libzmq.
- eCAL - Pub/sub, client/server, C++/Python/C#, various message protocols (protobuf, capnproto ..).
- gloo - Gloo is a collective communications library. It comes with a number of collective algorithms useful for machine learning applications. These include a barrier, broadcast, and allreduce.
- gRPC - A high performance, open source, general-purpose RPC framework.
- Ice - Comprehensive RPC framework with support for C++, C#, Java, JavaScript, Python and more.
- 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. website
- incubator-brpc - Industrial-grade RPC framework used throughout Baidu, with 1,000,000+ instances and thousands kinds of services. “brpc” means “better RPC”.
- libjson-rpc-cpp - JSON-RPC framework for C++ servers and clients.
- nanomsg - A simple high-performance implementation of several “scalability protocols”.
- nng - nanomsg-next-generation, a light-weight brokerless messaging library.
- rpclib - A modern C++ msgpack-RPC server and client library.
- shadesmar - Fast C++ IPC using shared memory.
- simple-rpc-cpp - A simple RPC wrapper generator to C/C++ functions.
- ujrpc - Up to 100x Faster FastAPI. JSON-RPC with io_uring, SIMDJSON, and pure CPython bindings.
- WAMP - Provides RPC and pub/sub messaging patterns. (various implementations, various languages)
- xmlrpc-c - A lightweight RPC library based on XML and HTTP.
Shared Memory
- cpp-ipc - C++ IPC Library: A high-performance inter-process communication using shared memory on Linux/Windows.
- shm_container - A collection of shared memory containers for high performance server.
- shm_ring_buffer - Shared-memory based ring buffer.
- tcpshm - A connection-oriented persistent message queue framework based on TCP or SHM(shared memory).
JSON
- ArduinoJson - JSON library for Arduino and embedded C++. Simple and efficient.
- Boost.PropertyTree - A property tree parser/generator that can be used to parse XML/JSON/INI/Info files.
- cJSON - Ultralightweight JSON parser in ANSI C.
- frozen - JSON parser and generator for C/C++.
- Glaze - Extremely fast, in memory, JSON and interface library for modern C++.
- Jansson - C library for encoding, decoding and manipulating JSON data.
- jbson - jbson is a library for building & iterating BSON data, and JSON documents in C++14.
- JeayeSON - A very sane (header only) C++ JSON library.
- Jsmn - A minimalistic JSON parser in C.
- json - JSON for Modern C++.
- JSON++ - A JSON parser in C++.
- json.h - A simple one header/one source solution to parsing JSON in C and C++.
- json-c - A JSON implementation in C.
- jsoncons - A C++ header-only library for JSON and JSON-like binary formats with JSONPointer, JSONPatch, JSONPath and JMESPath.
- JsonCpp - A C++ library for interacting with JSON.
- json-build - C89 tiny zero-allocation JSON serializer.
- json-parser - Very low footprint JSON parser written in portable ANSI C.
- jsonParse - A simple JSON parser in ANSI C.
- json11 - A tiny JSON library for C++11.
- json-voorhees - JSON library for C++. Support for C++11. No dependencies, fast and dev-friendly.
- jute - Very simple C++ JSON Parser.
- libjson - A JSON parser and printer library in C. easy to integrate with any model.
- libjson - Lightweight JSON library. [?]
- LIBUCL - Universal configuration library parser
- PicoJSON - A header-file-only, JSON parser serializer in C++.
- qt-json - A simple class for parsing JSON data into a QVariant hierarchy and vice versa.
- QJson - A qt-based library that maps JSON data to QVariant objects.
- qajson4c - A simple json library written in C. Optimized for low memory consumption and for good usability without dynamic memory allocation.
- RapidJSON - A fast JSON parser/generator for C++ with both SAX/DOM style API.
- sajson - Lightweight, extremely high-performance JSON parser for C++11.
- simdjson - Parsing gigabytes of JSON per second.
- subjson - High performance JSON manipulation library.
- taoJSON - Zero-dependency C++ header-only JSON library.
- ujson - µjson is a a small, C++11, UTF-8, JSON library.
- YAJL - A fast streaming JSON parsing library in C.
- json-c - Library for working with JSON.
- yyjson - A high performance JSON library written in ANSI C.
- parson - Lightweight JSON library written in C.
- WJElement - Advanced JSON manipulation library, with support for JSON Schema.
Logging
- binary_log - Fast binary logger for C++.
- binlog - A high performance C++ log library, producing structured binary logs.
- Blackhole - Attribute-based logging framework, which is designed to be fast, modular and highly customizable.
- Boost.Log - Designed to be very modular and extensible.
- Easylogging++ - Extremely light-weight high performance logging library for C++11 (or higher) applications. website
- fmtlog - A fmtlib-style logging library with latency in nanoseconds.
- Fluent Bit - Fast Log Processor and Forwarder for Linux, Embedded Linux, MacOS and BSD family operating systems. It’s part of the Fluentd Ecosystem and a CNCF sub-project.
- G3log - Asynchronous logger with Dynamic Sinks.
- glog - C++ implementation of the Google logging module.
- Log4cpp - A library of C++ classes for flexible logging to files, syslog, IDSA and other destinations.
- log4cplus - A simple to use C++ logging API providing thread-safe, flexible, and arbitrarily granular control over log management and configuration.
- log.c - A simple logging library implemented in C99.
- loguru - A lightweight C++ logging library.
- NanoLog - Nanolog is an extremely performant nanosecond scale logging system for C++ that exposes a simple printf-like API.
- plog - Portable and simple log for C++ in less than 1000 lines of code.
- reckless - Low-latency, high-throughput, asynchronous logging library for C++.
- stumpless - C logging library built for high performance and a rich feature set.
- spdlog - Super fast, header only, C++ logging library.
- TANK - A very high performance distributed log service.
- templog - A very small and lightweight C++ library which you can use to add logging to your C++ applications.
- P7Baical - An open source and cross-platform library for high-speed sending telemetry & trace data with minimal usage of CPU and memory.
- Quill - Asynchronous cross platform low latency logging library.
- zlog - Reliable, pure C logging library.
Machine Learning
- Caffe - A fast framework for neural networks.
- CCV - C-based/Cached/Core Computer Vision Library, A Modern Computer Vision Library.
- Fido - A highly-modular C++ machine learning library for embedded electronics and robotics.
- flashlight - A fast, flexible machine learning library from Facebook AI Research written entirely in C++ and based on the ArrayFire tensor library.
- liboai - liboai is a simple, unofficial C++17 library for the OpenAI API. It allows developers to access OpenAI endpoints through a simple collection of methods and classes.
- libsvm - A simple, easy-to-use, efficient library for Support Vector Machines.
- LightGBM - A fast, distributed, high performance gradient boosting (GBT, GBDT, GBRT, GBM or MART) framework based on decision tree algorithms, used for ranking, classification and many other machine learning tasks.
- MeTA - A modern C++ data sciences toolkit.
- Minerva - A fast and flexible system for deep learning.
- m2cgen - A CLI tool to transpile trained classic ML models into a native C code with zero dependencies.
- mlpack - A scalable c++ machine learning library.
- OpenCV - Open Source Computer Vision Library.
- oneDAL - A powerful machine learning library that helps speed up big data analysis.
- 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. website
- OpenVINO - OpenVINO is an open-source toolkit for optimizing and deploying AI inference.
- Recommender - C library for product recommendations/suggestions using collaborative filtering (CF).
- RNNLIB - RNNLIB is a recurrent neural network library for sequence learning problems.
- SHOGUN - The Shogun Machine Learning Toolbox.
- sofia-ml - The suite of fast incremental algorithms for machine learning.
- VLFeat - The VLFeat open source library implements popular computer vision algorithms specialising in image understanding and local featurexs extraction and matching.
- whisper.cpp - High-performance inference of OpenAI’s Whisper automatic speech recognition (ASR) model
- 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.
Math
- Apophenia - A C library for statistical and scientific computing.
- Armadillo - Fast C++ library for linear algebra & scientific computing.
- autodiff - A modern, fast and expressive C++ library for automatic differentiation.
- blaze - high-performance C++ math library for dense and sparse arithmetic.
- Boost.Multiprecision - provides higher-range/precision integer, rational and floating-point types in C++, header-only or with GMP/MPFR/LibTomMath backends.
- ceres-solver - C++ library for modeling and solving large complicated nonlinear least squares problems from google.
- CGAL - Collection of efficient and reliable geometric algorithms.
- cml - free C++ math library for games and graphics.
- DirectXMath - An all inline SIMD C++ linear algebra library for use in games and graphics apps.
- Dlib - A modern C++11 machine learning, computer vision, numerical optimization, and deep learning toolkit. website
- Eigen - A high-level C++ library of template headers for linear algebra, matrix and vector operations, numerical solvers and related algorithms.
- 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.
- Geometric Tools - C++ library for computing in the fields of mathematics, graphics, image analysis and physics. website
- GLM - Header-only C++ math library that matches and inter-operates with OpenGL’s GLSL math. website
- GMTL - Graphics Math Template Library is a collection of tools implementing Graphics primitives in generalized ways.
- GMP - A C library for arbitrary precision arithmetic, operating on signed integers, rational numbers, and floating-point numbers.
- Klein - A fast, SIMD-optimized C++17 Geometric Algebra library for point, line, and plane projections, intersections, joins, rigid-body motion, and more.
- linalg.h - Single header, public domain, short vector math library for C++.
- MatX - A GPU-accelerated C++17 numerical computing library with a MATLAB/Python-like syntax.
- MIRACL - A Multiprecision Integer and Rational Arithmetic Cryptographic Library.
- muparser - muParser is an extensible high performance math expression parser library written in C++.
- NT2 - A SIMD-optimized numerical template library that provides an interface with MATLAB-like syntax.
- LibTomMath - A free open source portable number theoretic multiple-precision integer library written entirely in C. website
- linmath.h - A lean linear math library, aimed at graphics programming.
- lp_solve - A library used to formulate and solve linear programming problems. website
- OpenBLAS - An optimized BLAS library based on GotoBLAS2 1.13 BSD version. 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.
- QuantLib - A free/open-source library for quantitative finance. [Modified BSD] website
- StatsLib - A C++ header-only library of statistical distribution functions. website
- SymEngine - Fast symbolic manipulation library, a rewriting of SymPy’s core in C++.
- TinyExpr - A C library for parsing and evaluating math expressions from strings.
- Vc - SIMD Vector Classes for C++.
- 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.
- xtensor - A C++14 library for numerical analysis with multi-dimensional array expressions, inspired by NumPy syntax. 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. website
Memory Allocation
- Boehm GC - Conservative garbage collector for C and C++. website
- C Smart Pointers - Smart pointers for the (GNU) C programming language.
- Hoard - Fast, Scalable, and Memory-efficient Malloc for Linux, Windows, and Mac. website
- jemalloc - General purpose malloc(3) implementation that emphasizes fragmentation avoidance and scalable concurrency support. website
- memory - STL compatible C++ memory allocator library.
- memory-allocators - Custom memory allocators to improve the performance of dynamic memory allocation.
- Mesh - A memory allocator that automatically reduces the memory footprint of C/C++ applications.
- mimalloc - A compact general purpose allocator with excellent performance.
- rpmalloc - This library provides a public domain cross platform lock free thread caching 16-byte aligned memory allocator implemented in C.
- sfl-pool-allocator - C++11 memory allocator based on memory pools. It offers fast and efficient allocation of a large number of small-size objects.
- snmalloc - Message passing based high-performance allocator.
- TCMalloc - Google’s fast, multi-threaded malloc implementation website.
- tgc - A tiny garbage collector for C written in ~500 LOC of code and based on the Cello Garbage Collector.
Messaging
- iris - Lightweight Component Model and Messaging Framework based on ØMQ.
- MPSC_Queue - A multi-producer single consumer queue C++ template suitable for async logging with SHM IPC support.
- tcpshm - A connection-oriented persistent message queue framework based on TCP or SHM(shared memory).
Multimedia
- gerbera - UPnP media server which allows you to stream your digital media through your home network and consume it on a variety of UPnP compatible devices.
- GStreamer - A library for constructing graphs of media-handling components.
- libass - Portable subtitle renderer for the ASS/SSA subtitle format.
- 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).
- libVLC - libVLC (VLC SDK) media framework.
- MediaInfoLib - Convenient unified display of the most relevant technical and tag data for video and audio files.
- QtAv - A multimedia playback framework based on Qt and FFmpeg to write a player easily. website
- SDL - Simple DirectMedia Layer.
- SFML - Simple and Fast Multimedia Library. website
- TagLib - A library for reading and editing the metadata of several popular audio formats. website
Networking
- ACE - An OO Network Programming Toolkit in C++.
- Boost.Asio - A cross-platform C++ library for network and low-level I/O programming.
- Boost.Beast - HTTP and WebSocket built on Boost.Asio in C++11. website
- Breep - Event based, high-level C++14 peer-to-peer library.
- C++ REST SDK - C++ REST SDK (previously named Casablanca).
- Restbed - Corvusoft’s Restbed framework brings asynchronous RESTful functionality to C++14 applications.
- Restinio - A header-only C++14 library that gives you an embedded HTTP/Websocket server.
- c-ares - A C library for asynchronous DNS requests.
- CHL - C Hypertext Library - A library for writing web applications in C.
- cpp-httplib - A single file C++11 header-only HTTP/HTTPS sever library.
- cpp-netlib - A collection of open-source libraries for high level network programming.
- cpp-netlib/uri - URI parser/builder library for C++, compatible with RFC 3986 and RFC 3987.
- cpp-rest-api-core - C++ framework to facilitate the creation of REST API.
- CppNet - Cross platform network library with C++11.
- 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.
- cpr - A modern C++ HTTP requests library with a simple but powerful interface. Modeled after the Python Requests module. website
- curlcpp - An object oriented C++ wrapper for CURL(libcurl).
- DPDK - Data Plane Development Kit, libraries and drivers for fast packet processing. website
- Dyad.c - Asynchronous networking for C.
- ENet - Reliable UDP networking library. website
- envoy - Cloud-native high-performance edge/middle/service proxy.
- evpp - C++ high performance networking with TCP/UDP/HTTP protocols.
- f-stack - F-Stack is an user space network development kit with high performance based on DPDK, FreeBSD TCP/IP stack and coroutine API. (http://www.f-stack.org)
- gumbo-parser - HTML5 parsing library in C99.
- gsocket - The Global Socket Tookit allows two users behind NAT/Firewall to establish a TCP connection with each other.
- haproxy - HAProxy Load Balancer’s.
- H2O - An optimized HTTP server with support for HTTP/1.x and HTTP/2. It can also be used as a library.
- nghttp3 - HTTP/3 library written in C.
- HTTP Parser - A http request/response parser for C.
- httpserver.h - single header C library for building event driven non-blocking HTTP servers. Supports Linux with epoll and BSD/Mac with kqueue.
- HP-Socket - High Performance TCP/UDP/HTTP Communication Component https://www.oschina.net/p/hp-socket
- i2pd - i2pd (I2P Daemon) is a full-featured C++ implementation of I2P client.
- Katran - A high performance layer 4 load balancer.
- KCP - A fast and reliable ARQ protocol that helps applications to reduce network latency.
- libasyncd - Embeddable event-based asynchronous HTTP server library for C.
- libevbuffsock - libevbuffsock is a minimal port of the evbuffer suite of functions from libevent to libev.
- libcurl - Multiprotocol file transfer library.
- libhttp - The official home of LibHTTP is www.libhttp.org.
- libhttpserver - C++ library for creating an embedded Rest HTTP server (and more).
- libjingle - Google talk voice and P2P interoperability library.
- libip - This is small and simple event-based UPD/IP library. TCP is not supported and not planned (now, at least). It implements ONLY network, and you don’t need to write any extra code, such as program state, or smth else. Just network events.
- 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.
- libnl -
libnl
is a collection of libraries to provie APIs to the Netlink protocol (replacement for ioctl). It’s primary use is to communicate with the Linux kernel, to modify networking state (interfaces, routing etc…). - libpcap - A portable C/C++ library for network traffic capture. website
- libquic - A QUIC protocol library extracted from Chromium’s QUIC Implementation.
- librdkafka - Apache Kafka client library for C and C++.
- libwebsock - Easy-to-use and powerful web socket library.
- libwebsockets - A lightweight pure C WebSocket implementation that provides both client and server libraries. website
- lwIP - A lightweight TCP/IP stack.
- libsagui - Sagui is a cross-platform C library which helps to develop web servers or frameworks.
- libvldmail - Your friendly e-mail address validation library.
- ltio - LigthingIO is a lightweight network IO framework with some infrastructure code for better coding experience.
- mongols - C++ high performance networking with TCP/UDP/RESP/HTTP/WebSocket protocols.
- Mongoose - Extremely lightweight webserver.
- MQTT-C - A portable MQTT C client for embedded systems and PCs alike. website
- mTCP - Highly scalable user-level TCP stack for multicore systems.
- Muduo - A C++ non-blocking network library for multi-threaded server in Linux.
- n2n - Peer-to-peer VPN.
- naiveproxy - NaïveProxy uses Chromium’s network stack to camouflage traffic with strong censorship resistence and low detectablility. Reusing Chrome’s stack also ensures best practices in performance and security.
- nanomsg - C-based implementation of ZeroMQ.
- nchan - Fast, horizontally scalable, multiprocess pub/sub queuing server and proxy for HTTP, long-polling, Websockets and EventSource (SSE), powered by Nginx.
- nekoray - Qt based cross-platform GUI proxy configuration manager (backend: v2ray / sing-box).
- neon - neon - an HTTP/1.1 and WebDAV client library with a C API.
- network-driver - An asynchronous network abstraction framework for applications written C++20.
- nghttp2 - HTTP/2 C Library. website
- ngrest - Fast and easy C++ RESTful WebServices framework.
- NNG - nanomsg-next-generation - lightweight brokerless messaging.
- odhcpd - odhcpd - Embedded DHCP/DHCPv6/RA Server & Relay.
- Onion - HTTP server library in C designed to be lightweight and easy to use.
- PF_RING™ - High-speed packet processing framework. website
- picoev - A tiny, lightning fast event loop for network applications.
- PicoHTTPParser - A tiny, primitive, fast HTTP request/response parser.
- POCO - C++ class libraries and frameworks for building network- and internet-based applications that run on desktop, server, mobile and embedded systems. website
- PowerDNS - PowerDNS Authoritative, PowerDNS Recursor, dnsdist.
- Proxygen - Facebook’s collection of C++ HTTP libraries including an easy to use HTTP server.
- RakNet - A cross platform, open source, C++ networking engine for game programmers.
- restclient-cpp - Simple REST client for C++. It wraps libcurl for HTTP requests.
- Seasocks - Simple, small, C++ embeddable webserver with WebSockets support.
- sion - A lightweight cross-platform C++ HTTP client. supports asynchronous, https.
- silgy - Asynchronous HTTP(S) engine for C/C++ projects.
- Silicon - A high performance, middleware oriented C++14 http web framework.
- socket99 - C99 wrapper for the BSD sockets API.
- sockpp - Modern C++ socket library.
- srt - Secure Reliable Transport (SRT) is a transport protocol for ultra low (sub-second) latency live video and audio streaming, as well as for generic bulk data transfer.
- taotu - A lightweight multithreading C++ network library based on Reactor.
- tinyproxy - A light-weight HTTP/HTTPS proxy daemon for POSIX operating systems.
- tlse - Single C file TLS 1.2/1.3 implementation, using tomcrypt as crypto library.
- Tufão - An asynchronous web framework for C++ built on top of Qt.
- toxcore - Tox is a peer to peer (serverless) instant messenger aimed at making security and privacy easy to obtain for regular users. It uses NaCl for its encryption and authentication.
- trantor - A non-blocking I/O cross-platform TCP network library, using C++14.
- ULib - C++ application development framework, to help developers create and deploy applications quickly and simply.
- uriparser - Strictly RFC 3986 compliant URI parsing and handling library.
- uSockets - µSockets - miniscule networking & eventing. This is the cross-platform async networking and eventing foundation library.
- uWebSockets - µWS is one of the most lightweight, efficient & scalable WebSocket & HTTP server implementations available.
- WAFer - A C language-based ultra-light software platform for scalable server-side and networking applications. Think node.js for C programmers.
- Wangle - A client/server application framework to build asynchronous, event-driven modern C++ services.
- wdt - An embeddedable library (and command line tool) aiming to transfer data between 2 systems as fast as possible over multiple TCP paths.
- WebSocket++ - WebSocket++ is a header only C++ library that implements RFC6455 The WebSocket Protocol. It allows integrating WebSocket client and server functionality into C++ programs.
- wslay - The WebSocket library in C.
- PcapPlusPlus - a multiplatform C++ network sniffing and packet parsing and crafting framework.
- ZeroMQ - High-speed, modular asynchronous communication library.
- zproto - Protocol framework for ZeroMQ.
Libraries for parsing and manipulating PDF documents.
- libharu - A free, cross platform, open-sourced software library for generating PDF.
- litePDF - Library to create and edit PDF documents that uses GDI functions through a device context to draw the page content.
- MuPDF - A lightweight PDF, XPS, and E-book viewer.
- pdfio - PDFio is a simple C library for reading and writing PDF files.
- PoDoFo - A library to work with the PDF file format.
- Poppler - Open-source multi-backend PDF rendering library based on the xpdf-3.0 code base.
- DynaPDF - An easy-to-use PDF generation library.
- VersyPDF - High-quality, industry-strength PDF library for C/C++ programming languages meeting the requirements of the most demanding and diverse applications. Using VersyPDF library you can write stand-alone, cross-platform and reliable applications that can read, write, and edit PDF documents.
- Xpdf - Xpdf is a free PDF viewer and toolkit, including a text extractor, image converter, HTML converter, and more.
Physics
Dynamics simulation engines
- Box2D - A 2D physics engine for games.
- Bullet - A 3D physics engine for games.
- Chipmunk - A fast and lightweight 2D game physics library.
- LiquidFun - A 2D physics engine for games.
- Newton Dynamics - An integrated solution for real time simulation of physics environments.
- ODE - Open Dynamics Engine - An open source, high performance library for simulating rigid body dynamics.
- ofxBox2d - openFrameworks wrapper for Box2D.
- PhysX - An open-source realtime physics engine middleware SDK developed by Nvidia as a part of Nvidia GameWorks software suite.
- Project Chrono - An open source multi-physics simulation engine.
- Quantum++ - A modern C++11 quantum computing library.
- Simbody - High-performance C++ multibody dynamics/physics library for simulating articulated biomechanical and mechanical systems like vehicles, robots, and the human skeleton.
- SOFA - SOFA is an open-source framework targeting at real-time simulation, with an emphasis on medical simulation.
Reflection
- Better Enums - Reflective enums (to string, iteration). Single header. website
- clReflect - C++ Reflection using clang.
- CPFG - A C++03 library for reflection, callback and script binding. website
- CPP-Reflection - C++ Reflection using clang.
- Easy Reflection - Easy and fast reflection + serialization solution like in Rust, Java or Go.
- 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.
- magic_get - std::tuple like methods for user defined types without any macro or boilerplate code.
- meta - Header-only, non-intrusive and macro-free runtime reflection system in C++.
- Nameof - Header-only C++17 library provides nameof macros and functions to obtain the simple name of variable, type, function, macro, and enum.
- Ponder - A C++11 library for reflection.
- RTTR - A C++11 library for reflection. 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.
- visit_struct - A miniature library for struct-field reflection in C++.
Regular Expression
- CppVerbalExpressions - C++ regular expressions made easy.
- CTRE - A Compile time PCRE (almost) compatible regular expression matcher.
- 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.
- Onigmo - Fork of Oniguruma, supporting more advanced regexps.
- Oniguruma - A modern and flexible regular expressions library that supports a variety of character encodings.
- PCRE - A regular expression C library inspired by the regular expression capabilities in Perl.
- PCRE2 - PCRE2 is a re-working of the original PCRE1 library to provide an entirely new API.
- PIRE - Perl Incompatible Regular Expressions library by Yandex. Can be really fast (more than 400 MB/s). [LPGL v3.0]
- R3 - R3 is an URL router library with high performance, thus, it’s implemented in C. It compiles your R3Route paths into a prefix trie. By using the prefix tree constructed in the start-up time, you can dispatch the path to the controller with high efficiency.
- RE2 - A software library for regular expressions via a finite-state machine using automata theory.
- regexp4 - Simple and complete implementation of regular expressions with its own sintax.
- SLRE - Super Light Regexp engine for C/C++.
- sregex - A non-backtracking NFA/DFA-based Perl-compatible regex engine library for matching on large data streams.
- toy-regex - A toy-regex use follow set and DFA.
- TRE - POSIX-compliant, feature-full regex library.
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.
- PCL - Point Cloud Library is a standalone, large scale, open project for 2D/3D image and point cloud processing website
- Robotics Library (RL) - A self-contained C++ library for robot kinematics, motion planning and control.
- RobWork - A collection of C++ libraries for simulation and control of robot systems.
- ROS - Robot Operating System provides libraries and tools to help software developers create robot applications.
Scientific Computing
- AMGCL - a header-only C++ library for solving large sparse linear systems with algebraic multigrid.
- FFTW - A C library for computing the DFT in one or more dimensions.
- GSL - GNU scientific library.
- TileDB - Fast Dense and Sparse Multidimensional Array DBMS. website
- Trilinos - High performance PDE solvers.
- Torch - A scientific computing framework with wide support for machine learning algorithms that puts GPUs first. website
Scripting
- AngelScript - AngelScript is a game-oriented interpreted/compiled scripting language.
- Boost.Python - A C++ library which enables seamless interoperability between C++ and the Python programming language.
- caccessor - Let lua access C types.
- cppimport - Import C++ files directly from Python!
- CppSharp - Tools and libraries to glue C/C++ APIs to high-level languages.
- ChaiScript - An easy to use embedded scripting language for C++. website
- ctypes.sh - A foreign function interface for bash.
- 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. website
- datatree-lua - DataTree structure for Lua.
- djinni - A tool for generating cross-language type declarations and interface bindings.
- JavaCpp - The missing bridge between Java and native C++.
- JerryScript - Lightweight JavaScript engine for resource-constrained devices such as microcontrollers. It can run on devices with less than 64 KB of RAM and less than 200 KB of flash memory.
- LEM - A Lua Event Machine.
- libffi - A portable foreign-function interface library. website
- Lua - A minimal and fast scripting engine for configuration files and basic application scripting.
- LuaBridge - A lightweight, dependency-free library for binding Lua to C++.
- luacstruct - A simple C source code which provides a lua metatable representing a C struct, can be embedded within your application. Also it enables controlling access to the fields of the struct.
- luacxx - C++11 API for creating Lua bindings.
- lua-eco - Lua-eco is a Lua coroutine library which was implemented based on IO event.
- luau - A fast, small, safe, gradually typed embeddable scripting language derived from Lua. website
- nbind - Magical headers that make your C++ library accessible from JavaScript.
- PHP-CPP - A library to build PHP extensions with C++. website
- preCICE - Coupling library for partitioned multi-physics simulations (FSI, CHT, and more).
- pybind11 - Seamless operability between C++11 and Python.
- SIP - C or C++ Bindings Generator for Python v2 and v3.
- sol2 - A C++ <-> Lua API wrapper with advanced features and top notch performance.
- SWIG - A wrapper/interface Generator that let you link your c++ code to Javascript, Perl, PHP, Python, Tcl and Ruby. website
- V7 - An embedded JavaScript engine.
- V8 - A fast JavaScript engine by Google that can be embedded into any C++ application.
- ChakraCore -A JavaScript engine by Microsoft that can be embedded into nodejs.
- Wren - Wren is a small, fast, class-based concurrent scripting language.
Security
Libraries that are used to help make your application more secure.
- SoftHSM - OpenDNSSEC handles and stores its cryptographic keys via the PKCS#11 interface.
- wazuh - The Open Source Security Platform.
Serialization
- alpaca - Serialization library written in C++17 - Pack C++ structs into a compact byte-array without any macros or boilerplate code.
- bertlv - This is a data processor of Basic Encoding Rules (BER) format of TLV data.
- ber-tlv - BER TLV parser.
- Ber-TLV - TLV Parser and Builder With C.
- BerTlvParser - BER TLV Library and QT UI for handling BER TLV data.
- BER_TLV_parsing - BER_TLV_parsing.
- BER TLV Encoder and Decoder - Constructed BER-TLV Encoder and Decoder in C.
- binn - Binary serialization format, meant to be compact, fast and easy-to-use.
- Bitsery - Header only C++ binary serialization library.
- Bond - An open source, cross-platform framework for working with schematized data.
- Boost.Serialization - Boost Serialization Library.
- c-capnproto - Implementation of the Cap’n Proto serialization protocol.
- cb0r - Minimal Zero-Footprint CBOR Decoder in C.
- cereal - A C++11 library for serialization.
- cista - A C++17 library for zero-copy high-performance (de-)serialization.
- cmp - Implementation of the MessagePack serialization protocol.
- cppcodec - Header-only C++11 library to encode/decode base64, base32 and hex with consistent, flexible API.
- cppack - A modern c++ implementation of the msgpack spec. - msgpack.org (C++17)
- EMV-tag-parser - Generate a readable output from a string of tags EMV for payment systems.
- FastBinaryEncoding - Fast Binary Encoding is ultra fast and universal serialization solution for C++, C#, Go, Java, JavaScript, Kotlin, Python, Ruby, Swift.
- FlatBuffers - A Memory efficient serialization library.
- hps - High Performance C++11 Serialization Library.
- iguana - Universal serialization engine.
- Kaitai Struct - A declarative language to describe various binary data structures and a compiler to generate C++ parser code.
- libavro - Implementation of the Avro data serialization system.
- libbaseencode - Library written in C for encoding and decoding data using base32 or base64.
- libcbor - CBOR protocol implementation for C and others.
- libtlv - A TLV (Tag Length Value) library inspired by (but not the same) BER-TLV and UTF-8.
- libxo - Allows an application to generate plain text, XML, JSON and HTML output using a common set of function calls. The application decides at runtime what output style should be produced.
- MessagePack - Efficient binary serialization format “like JSON” for C and C++. website
- mpack - Another implementation of the MessagePack serialization protocol.
- msgpuck - MsgPuck is a compact and efficient MessagePack serialization library:.
- mrpt-serialization - Versioned serialization to binary or text formats.
- nanopb - Small code-size Protocol Buffers implementation in ANSI C.
- OPIC - - Object Persistence in C, a revolutionary serialization framework, with matching on-disk and in-memory representations.
- pboctlv - EMV TLV Data parse.
- protobuf - Protocol Buffers - Google’s data interchange format.
- protobuf-c - Protocol Buffers implementation in C.
- SimpleBinaryEncoding - encoding and decoding application messages in binary format for low-latency applications.
- tpl - Small binary serialization library.
- upb - A small protobuf implementation in C.
- varint.c - Read and write variable sized integers in C. Compatible with Protobuf and Go varints.
- YAS - Very fast Yet Another Serialization library supports the binary/text/json formats.
- xpack - convert json/xml/bson to c++ struct.
- zpp_bits - Actually, the fastest modern Serialization library. Just check this video.
Sorting
- pdqsort - Pattern-defeating quicksort.
- Timsort - A templated stable sorting function which outperforms quicksort-based algorithms including std::sort, for reversed or semi-sorted data.
- 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. website
String Manipulation
- 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.
- fast_double_parser - Fast function to parse strings into double (binary64) floating-point values, enforces the RFC 7159 (JSON standard) grammar: 4x faster than strtod.
- fast_float - Fast and exact implementation of the C++ from_chars functions for float and double types: 4x faster than strtod, part of GCC 12.
- houdini - Houdini is a simple API for escaping text for the web. And unescaping it. But that kind of breaks the joke in the name so nevermind.
- ICU - International Components for Unicode; a library for Unicode support.
- itoa - Fast integer to ascii / integer to string conversion.
- libunistring - Library for manipulating Unicode strings in C.
- libgiconv - Text conversion library.
- match.c - A very simple pattern matcher where ‘*’ matches on any number characters and ‘?’ matches on any one character.
- SDS - Simple Dynamic Strings; a library for handling C strings in a simpler way, but one that is compatible with normal C string functions. Available via clib.
- shoco - Compressor for small text strings.
- smaz - Efficient string compression library.
- utf8.h - Single header utf8 string functions.
- utf8proc - Small, clean library for processing UTF-8 Unicode data.
Template Engines
Libraries and tools for templating and lexing.
- boostache - Boostache is a text template processing engine. The initial release uses the Mustache template language.
- ginger - C++ Template Engine for HTML/CSS/JavaScript.
- hypertextcpp - Fast HTML template engine using C++ code generation.
- inja - A Template Engine for Modern C++.
- Jinja2С++ - C++ implementation of the Jinja2 Python template engine. This library brings support of powerful Jinja2 template features into the C++ world, reports dynamic HTML pages and source code generation.
- Mold - Mold is a C++ Text Engine. It’s a header-only library for generating text from a template and a set of data (feed).
- see-phit - A C++ HTML template engine that uses compile time HTML parsing.
- string_template - Simple and small string template engine in C++17.
- TENG - TEng is a general purpose templating engine for C++ and Python. Especially useful for C++ apps that need to render dynamic HTML content.
- ucode - Jinja-like micro templating.
- Qentem Engine - About Fast JSON, templating engine, Arithmetic and logic evaluation. Pure C++.
Video
- libvpx - VP8/VP9 Codec SDK.
- FFmpeg - A complete, cross-platform solution to record, convert and stream audio and video.
- libde265 - Open h.265 video codec implementation. website
- x265 - Open h.265 video codec implementation. website
- OpenH264 - Open Source H.264 Codec. website
- Theora - A free and open video compression format.
- Vireo - A lightweight and versatile video processing library by Twitter.
Virtual Machines
- CarpVM - “interesting” VM in C. Let’s see how this goes.
- MicroPython - Aims to put an implementation of Python 3.x on a microcontroller.
- TinyVM - A small, fast, lightweight virtual machine written in pure ANSI C.
Web Application Framework
- acl - Server framework and network components written by C/C++ for Linux, Mac, FreeBSD, Solaris(x86), Windows, Android, IOS.
- Agoo-C - Agoo webserver and GraphQL server in C with the goal of being the best performing webserver and GraphQL server.
- cerveur - A HTTP Web Server Framework Written In C (Just For Fun).
- cfadmin - A lua web network framework.
- Cherokee - Cherokee Web Server.
- cinatra - Modern C++ (C++17), cross-platform, header-only, easy to use http framework.
- Civetweb - Provides easy to use, powerful, C/C++ embeddable web server with optional CGI, SSL and Lua support.
- C++ REST SDK - Microsoft project for cloud-based client-server communication in native code using a modern asynchronous C++ API design.
- CppCMS - A Free High Performance Web Development Framework (not a CMS).
- CPPWebFramework - The C++ Web Framework (CWF) is a MVC web framework, Open Source, under MIT License, using C++ with Qt to be used in the development of web applications.
- Crow - Crow is C++ micro web framework (inspired by Python Flask).
- cuehttp - Modern C++ middleware framework for http(http/https)/websocket(ws/wss).
- Cutelyst - A C++ Web Framework built on top of Qt, using the simple approach of Catalyst (Perl) framework.
- darkhttpd - When you need a web server in a hurry.
- duda - Duda I/O is an event-driven and high performant web services framework written in C. [Apache 2.0]
- Drogon - A C++14/17 based, high-performance HTTP application framework.
- Dremini - Highly parallel and concurrent Gemini server and client library for the Drogon web application framework
- drogon-chat-api
- Drogon-demo
- Drogon-JWT-Filter-example - A simple project to serve as an example of how to implement an JWT filter on Drogon framework.
- drogon_orm_prj
- drogon-realworld-example-app - Example Drogon codebase containing real world examples (CRUD, auth, advanced patterns, etc) that adheres to the RealWorld API spec.
- Drogon-torch-serve - Serve pytorch / torch models using Drogon.
- DrogonSQL - Drogon framework SQL example.
- Libreism - Open source server time viewer written in C++.
- MVC - An example of Model–View–Controller pattern using Drogon Framework.
- orgChartApi - RESTful API written in C++ using Drogon HTTP application framework.
- ProtobuffedDrogon - PROTOBUF implementation with DROGON framework.
- SMTPMail-drogon - Simple Mail plugin for the Drogon framework.
- teatro-rewrite - Rewrite of teatro in C++ using drogon.
- tegra - Tegra is an open source super high-end performance, user-friendly, multi-lingual and multi-purpose modern system based on C++20 which enables you to build websites and powerful online applications.
- tlgs - “Totally Legit” Gemini Search - Open source search engine for the Gemini protocol.
- traq-client-drogoncpp -
- rng - A simple service to generate random numbers using modern Drogon C++14/17 microservices framework.
- rvs - drogon + redis example.
- facil.io - Evented, high performance C web framework supporting HTTP, WebSockets, SSE and more. website
- fcgiwrap - Simple FastCGI wrapper for CGI scripts.
- Guacamole Server - Mirror of Apache Guacamole Server.
- janus-gateway - Janus is an open source, general purpose, WebRTC server.
- hinsightd - hinsightd is a HTTP/1.1 webserver designed to be light on resources but not light on features. It uses the new linux async API io_uring for network and file access.
- ivykis-http - ivykis http server.
- kcgi - CGI and FastCGI library for C.
- KLone - Fully featured, multi-platform, web application development framework, targeted especially at embedded systems and appliances.
- Kore - ultra fast and flexible web server / framework for web applications developed in C.
- libOnion - lightweight library to help you create webservers in C programming language.
- libuhttpd - A very flexible, lightweight and fully asynchronous HTTP server library based on libev and http-parser for Embedded Linux.
- libsniper - Super fast HTTP client/server C++ framework.
- lithium - Easy to use C++17 HTTP Server with no compromise on performances.
- lwan - Experimental, scalable, high performance HTTP server.
- libzmq - Core ZeroMQ library, a high-performance asynchronous messaging library, aimed at use in distributed or concurrent applications. C API (backend C++)
- Naxsi - NAXSI means Nginx Anti XSS & SQL Injection.
- oat++ - Light, zero-dependency framework to create high-performance web-services. website
- Phorklift - Phorklift is an HTTP server and proxy daemon, with clear, powerful and dynamic configuration.
- Pistache - Pistache is a C++ REST framework written in pure C++11 with no external dependency.
- paozhu - paozhu C++ Web Framework,Support HTTP1 HTTP2, Rapid development of CRUD web applications, Include modules HttpServer HttpClient WebSocket ORM.
- RabbitServer - A high-performance web server based on HTTP request implemented in C++.
- served - Served is a C++ library for building high performance RESTful web servers.
- suil - Suil C++ Framework - a mordern C++ micro framework packaged in various libraries that can be used to develop micro service components.
- suika - High Performance C++ Reactor Web Server from Scratch.
- 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.
- Tinyhttpd - Tinyhttpd is J. David Blackstone wrote an ultra-lightweight Http Server with less than 500 lines in 1999. It is very good for learning and can help us truly understand the nature of server programs. website
- TinyWebServer - A lightweight C++ Web server under Linux helps beginners quickly practice network programming and build their own server.
- 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).
- ulfius - HTTP Framework for REST Applications in C.
- 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.
- WebServer - A C++ High Performance Web Server.
- Wt - A C++ library for developing web applications.
- yahttp - YaHTTP aims to be a pure http request/response parser that has no IO ties. It is intended to be used on small-footprint applications and other utilities that want to use HTTP over something else than network IO.
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.
- Expat - An XML parser library written in C.
- Libxml2 - The XML C parser and toolkit of Gnome.
- libxml++ - An XML Parser for C++.
- 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.
- RapidXml - An attempt to create the fastest XML parser possible, while retaining useability, portability and reasonable W3C compatibility.
- TinyXML - A simple, small, minimal, C++ XML parser that can be easily integrating into other programs.
- TinyXML2 - A simple, small, efficient, C++ XML parser that can be easily integrating into other programs.
- TinyXML++ - A completely new interface to TinyXML that uses MANY of the C++ strengths. Templates, exceptions, and much better error handling.
- Xerces-C++ - A validating XML parser written in a portable subset of C++.
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.
- American fuzzy lop a.k.a. afl-fuzz - Crazy fuzzing tool that automatically discovers bugs given time and minimal example input.
- Argon2 - The password hash Argon2, winner of PHC.
- BehaviorTree.CPP - Behavior Trees Library in C++. Batteries included. Even if our main use-case is robotics, you can use this library to build AI for games, or to replace Finite State Machines. website
- Boost.Signals - An implementation of a managed signals and slots system.
- btop - Monitor of resources.
- calendar - Fast Gregorian calendar algorithms.
- CCFinder - Recursive Credit Card Searcher For Windows C++ and Linux.
- Cheat Sheets of HackingCPP - Cool cheat sheets and infographics for algorithms, views, containers, randomness, etc.
- Concord - A Discord API wrapper library written in C.
- cosmopolitan - fast portable static native textmode containers (build C programs for Linux\Mac\Windows in one go).
- C-Plus-Plus - Collection of various algorithms in mathematics, machine learning, computer science and physics implemented in C++ for educational purposes.
- cpp-validator - C++ header-only library for generic data validation.
- CPPItertools - Range-based for loop add-ons inspired by the Python builtins and itertools library.
- cpu_features - Get CPU features at runtime.
- D++ (DPP) - A lightweight, high performance and scalable C++ library for creating Discord Bots. website
- Datatype99 - Algebraic data types for C99.
- date - A date and time library based on the C++11/14/17 header.
- DynaMix - A library which allows you to compose and modify objects at run time.
- - Small, safe and fast formatting library for C++.
- FastFormat - Fast, Safe C++ Formatting inspired by log4j and Pantheios.
- fccf - A command-line tool that recursively searches a directory to find C/C++ source code matching a search string.
- higress - Next-generation Cloud Native Gateway.
- casacore - A set of c++ core libraries derived from aips++.
- QtVerbalExpressions - This Qt lib is based off of the C++ VerbalExpressions library.
- cxx-prettyprint - A pretty printing library for C++ containers.
- icecream-cpp - A small printing library for debugging purposes.
- gcc-poison - A simple header file for developers to ban unsafe C/C++ functions from applications.
- JniHelpers - JniHelpers is a library designed to facilitate writing JNI code with C++.
- [incbin][https://github.com/graphitemaster/incbin] - Include binary files in your C/C++ applications with ease.
- ip2region - Ip2region (2.0 - xdb) is a offline IP address manager framework and locator, support billions of data segments, ten microsecond searching performance. xdb engine implementation for many programming languages.
- Kangaru - A dependency injection container for C++11 and C++14.
- Klib - Small and lightweight implementations of common algorithms and data structures.
- Kore mustach - Integration of mustache templates with kore.
- libCello - Library introducing higher-level programming to C.
- libsigc++ - A typesafe callback system for standard C++.
- libcpuid - A small C library for x86 CPU detection and feature extraction.
- libevil - The Evil License Manager.
- libnfc - Platform-independent Near-Field Communication library.
- libnih - A lightweight library of C functions and structures.
- libphonenumber - Google’s common Java, C++ and JavaScript library for parsing, formatting, and validating international phone numbers.
- libpostal - library for parsing/normalizing street addresses around the world using statistical NLP and open data.
- librd - Rapid Development C utility library.
- liburing - This is the io_uring library, liburing. liburing provides helpers to setup and teardown io_uring instances, and also a simplified interface for applications that don’t need (or want) to deal with the full kernel side implementation.
- libusb - A universal USB library which allows for portable access to USB devices.
- libusual - Collection of various code useful for writing server code.
- Mach7 - A Pattern-matching library for C++.
- Metalang99 - Full-blown preprocessor metaprogramming.
- minilibs - Miniature libraries that consist of a single header and source file.
- mio - Cross-platform C++11 header-only library for memory mapped file IO.
- oui - A modern web interface for OpenWrt implemented in vue.js and Lua.
- PEGTL - The Parsing Expression Grammar Template Library.
- pprint - Pretty Printer for Modern C++.
- pspsdk - An open-source SDK for PSP homebrew development.
- Remote Call Framework - Inter-process communication framework for C++.
- repr - repr(value) returns a printable string representation of value.
- rtty - Access your terminal from anywhere via the web.
- Scintilla - A free source code editing component.
- SDS - Simple Dynamic Strings library for C.
- semver.c - A semver parser and render in ANSI C.
- Serial Communication Library - Cross-platform, Serial Port library written in C++.
- sigslot - C++ Signal/Slot Library.
- SimpleSignal - High performance C++11 signals.
- sslscan - sslscan tests SSL/TLS enabled services to discover supported cipher suites.
- Stage - Mobile robot simulator.
- stdman - A tool that parses archived HTML files from cppreference and generates groff-formatted manual pages for Unix-based systems.
- stb - A range of single-file libraries for C/C++.
- StrTk - A C++ library consisting of high performance string processing routines.
- subprocess.h - Simple one header solution to launching processes and interacting with them for C/C++.
- Telize - Telize is a REST API built in C with Kore allowing to get a visitor IP address and to query location information from any IP address. It outputs JSON-encoded IP geolocation data, and supports both JSON and JSONP. Geolocation operations are performed using libmaxminddb which caches the database in RAM. Therefore, Telize has very minimal overhead and should be blazing fast.
- tidy-html5 - The granddaddy of HTML tools, with support for modern standards.
- timers - This library provides an easy way to set timers and timeouts. As initial version all timers run in single runloop at seperate thread.
- tpotce - T-Pot - The All In One Honeypot Platform.
- Tulip Indicators - A C library of over 100 financial technical analysis indicators.
- ub-canaries - A collection of C/C++ programs that try to get compilers to exploit undefined behavior.
- uri_parser - uri_parser is an URI parser. It is a modularized excerpt of node.js’s http-parser source.
- util-linux - util-linux is a random collection of Linux utilities.
- value-category-cheatsheet A PDF cheatsheet for lvalues, rvalues, and the like.
- VarTypes - A feature-rich, object-oriented framework for managing variables in C++ / Qt4.
- [XLSX I/O][https://brechtsanders.github.io/xlsxio/] - Cross-platform library for reading and writing .xlsx
- [xlsx_drone][https://github.com/damian-m-g/xlsx_drone] - Fast Microsoft Excel’s *.xlsx reader.
- yaLanTingLibs - A Collection of C++20 libraries, include struct_pack, struct_json, coro_rpc and async_simple.
- ZBar - A barcode scanner library, which allows to scan photos/images/video streams for barcodes and return their value.
- ZXing - An open-source, multi-format 1D/2D barcode image processing library implemented in Java, with ports to other languages.
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!
- ccache - Compiler cache designed to speed up recompilation.
- Clang - A C compiler for LLVM. Supports C++11/14/1z C11. Developed by LLVM Team.
- GCC - GNU Compiler Collection. Supports C++11/14/1z C11 and OpenMP.
- 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.
- Oracle Solaris Studio - C, C++ and Fortran compiler for SPARC and x86. Supports C++11. Available on Linux and Solaris.
- TCC - Tiny C Compiler.
Online Compiler
List of online C or C++ compilers
- C++ shell - C++ shell
- 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.
- InterviewBit - A simple and easy to use online C++ compiler.
- Online C++ compiler - online compiler and debugger for c/c++.
- paiza.io - An online C/C++ compiler with multiple files supporting feature, Github(gist) integration and collaborative editing.
- repl.it - A powerful yet simple tools and platforms for educators, learners, and developers.
- Programiz - An online compiler for learners and developers.
- Rextester - Online compiler which provides several compilers(Clang, GCC, MSVC) and several editors.
- Rise4Fun - Online Visual C++ compiler.
- 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.
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.
- rr - Lightweight tool for recording, replaying and debugging execution of applications (trees of processes and threads). Debugging extends gdb with very efficient reverse-execution, which in combination with standard gdb/x86 features like hardware data watchpoints, makes debugging much more fun.
- 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.
- 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.
- color_coded - A vim plugin for libclang-based highlighting.
- 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. Website
- Geany - Small, fast, cross-platform IDE.
- IBM VisualAge - A family of computer integrated development environments from IBM.
- ImHex - A Hex Editor for Reverse Engineers.
- Irony-mode - A C/C++ minor mode for Emacs powered by libclang.
- juCi++ - Cross-platform, lightweight C++ IDE with libclang integration.
- KDevelop - A free, open source IDE.
- Microsoft Visual Studio - An IDE from Microsoft.
- NetBeans - An IDE for developing primarily with Java, but also with other languages, in particular PHP, C/C++, and HTML5.
- Qt Creator - A cross-platform C++, JavaScript and QML IDE which is part of the SDK for Qt.
- 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.
- Bear - A tool to generate compilation database for clang tooling.
- 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.
- build2 - cross-platform build, packaging and dependency management toolchain for developing and packaging C/C++ projects.
- clib - Package manager for the C programming language.
- CMake - Cross-platform free and open-source software for managing the build process of software using a compiler-independent method.
- cmake-cookbook - This repository collects sources for the recipes contained in the CMake Cookbook published by Packt.
- C++ Archive Network - Cross-platform C++ Dependency Manager with a lot of packages available.
- Cget - Cmake package retrieval. website
- Conan - C/C++ Package Manager, open sourced.
- CPM - A C++ Package Manager based on CMake and Git.
- CPM.cmake - CPM.cmake is a cross-platform CMake script that adds dependency management capabilities to CMake. It’s built as a thin wrapper around CMake’s FetchContent module that adds version control, caching, a simple API and more.
- FASTBuild - High performance, open-source build system supporting highly scalable compilation, caching and network distribution.
- huje - Source code distribution system, that uses git as its builtin vcs , such as gitea or gogs.
- Hunter - CMake driven cross-platform package manager for C++.
- 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.
- SW - Cross-platform C++ (and other langs) Build System and Package Manager with a lot of packages available.
- 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.
- waf - Python-based framework for configuring, compiling and installing applications.
- XMake - A C/C++ cross-platform build utility based on Lua.
Static Code Analysis
List of tools for improving quality and reducing defects by code analysis
- Clang Static Analyzer - A source code analysis tool that finds bugs in C, C++, and Objective-C programs.
- Control Flag - A system to flag anomalous source code expressions by learning typical expressions from training data.
- 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#.
- Trunk - Toolkit to check, test, merge, and monitor code.
- cpp-dependencies - Tool to check C++ #include dependencies (dependency graphs created in .dot format).
- include-what-you-use - A tool for use with clang to analyze includes in C and C++ source files.
- Infer - A static analyzer for Java, C and Objective-C.
- OCLint - A static source code analysis tool to improve quality and reduce defects for C, C++ and Objective-C.
- OptView2 - Inspect missed Clang optimizations.
- Linticator - Eclipse CDT integration of Pc-/FlexeLint.
- IKOS - Static analyzer for C/C++ based on the theory of Abstract Interpretation.
- List of tools for static code analysis - A list of tools for static code analysis from Wikipedia.
System tools
- Btop++ - A monitor of resources.
- nettrace - nettrace is a eBPF-based tool to trace network packet and diagnose network problem.
- pe-bear - PE-bear is a multiplatform reversing tool for PE files. Its objective is to deliver fast and flexible “first view” for malware analysts, stable and capable to handle malformed PE files.
Testing tools
- apib - A simple, fast HTTP performance-testing tool.
- criterion - Microbenchmarking for Modern C++.
- libtree - ldd as a tree.
- siege - Siege is an http load tester and benchmarking utility.
- sysbench - Scriptable multi-threaded benchmark tool based on LuaJIT. It is most frequently used for database benchmarks.
- wrk - Modern HTTP benchmarking tool.
Coding Style Tools
- 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.
- Prettier - Prettier is an opinionated code formatter. website
- 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.
- CppCon 2020 Presentation Materials - CppCon 2020 Presentation Materials.
- CppCon 2019 Presentation Materials - CppCon 2019 Presentation Materials.
- CppCon 2018 Presentation Materials - CppCon 2018 Presentation Materials.
- CppCon 2017 Presentation Materials - CppCon 2017 Presentation Materials.
- CppCon 2016 Presentation Materials - CppCon 2016 Presentation Materials.
- CppCon 2015 Presentation Materials - CppCon 2015 Presentation Materials.
- CppCon 2014 Presentation Materials - CppCon 2014 Presentation Materials.
- C++Now 2018 Presentations - Presentation materials presented at C++Now 2018.
- C++Now 2017 Presentations - Presentation materials presented at C++Now 2017.
- C++Now 2016 Presentations - Presentation materials presented at C++Now 2016.
- C++Now 2015 Presentations - Presentation materials presented at C++Now 2015.
- C++Now 2014 Presentations - Presentation materials presented at C++Now 2014.
- C++Now 2013 Presentations - Presentation materials presented at C++Now 2013.
- C++Now 2012 Presentations - Presentation materials presented at C++Now 2012.
Beginner resources online
- A tutorial on pointers
- A tutorial on portable Makefiles
- Building C Projects
- C Programming Wikibook
- Introduction to `fun’ C
- Learn C: Free and Open-Source Interactive C Tutorial
- Learning C with GDB
- memcpy vs memmove
- Mini Project Template
- POSIX Threads Programming tutorial
- Qt 6 C++ GUI Development for Beginners - Source Code for the Qt 6 C++ GUI Development for Beginners : The Fundamentals course on udemy
- The GNU C Programming Tutorial
- Templating in C
- What a C programmer should know about memory
- CodeforWin: Learn C Programming, Data Structures Tutorials and Exercises online
Books
Fantastic C or C++ related books.
- List of Free C or C++ Books
- Modern C++ Tutorial: C++11/14/17/20 On the Fly
- Free C Books - vhf/free-programming-books/C.
- Free C++ Books - vhf/free-programming-books/C++.
- cppbestpractices - Collaborative Collection of C++ Best Practices.
- Application Development with Qt Creator – Third Edition
Coding Standards
Coding Style
- C++ Core Guidelines - “Official” set of C++ guidelines, reviewed by the author of C++.
- C++ Dos and Don’ts - The Chromium Projects > For Developers > Coding Style > C++ Dos and Don’ts.
- google-styleguide - Style guides for Google-originated open-source projects.
- Google C++ Style Guide
- GNU Coding Standard
- Linux kernel coding style
- LLVM Coding Standards
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
- CppCon Talks :zap: - The C++ conference.
- Quick game development with C++11/C++14 - CppCon 2014 talk by Vittorio Romeo.
- Presentation on Hana for C++Now 2015
Videos
Fantastic C or C++ related videos.
- List of C or C++ YouTube Videos
- Awesome C Programming Tutorials in Hi Def [HD] - A collection of detailed C Programming Language Tutorials for Beginners and New Programmers.
- C++ - by VoidRealms.
- C++ Qt Programming - by VoidRealms.
- C++ Programming Tutorials Playlist - TheNewBoston Official Buckys C++ Programming Tutorials Playlist.
- C++ Programming Tutorials from thenewboston - These are all of thenewboston’s C++ programming tutorials.
- C++ GUI with Qt Playlist - Official Playlist for thenewboston C++ GUI with Qt tutorials.
- Caleb Curry’s C Programming Tutorials - An all-in-one playlist of tutorials for C programming.
- C Programming Tutorials - All of TheNewBoston’s C programming tutorials are right here.
- Bo Qian’s playlist - Boost Library, C++ Standard Library, Modern C++, Advanced C++, Advanced STL, …
Websites
Useful C or C++ related websites.
- Standard C++ :zap: - News, Status & Discussion about Standard C++.
- Build Bench - Compare C++ Builds
- Quick Bench - Quick C++ Benchmarks
- CppCon - The C++ Conference.
- C++ reference - A complete online reference for the C and C++ languages and standard libraries.
- C++ by Example - Learn C++ by Example.
- cplusplus.com - The C++ Resources Network.
- C FAQ - C frequently asked questions.
- C++ FAQ - C++ frequently asked questions.
- C++ FQA Lite - C++ frequently questioned answers.
- Guru of the Week - A regular series of C++ programming problems created and written by Herb Sutter.
- Meeting C++
- C++ Quiz - A simple online quiz that you can use to test your knowledge of the C++ programming language.
- PVS-Studio’s challenge - PVS-Studio’s C++ quiz in which you’re asked to find errors in code fragments of open source projects.
- Udemy C++ Courses and Tutorials
- C++ Hints - Every business day hints about most often C++ mistakes and ways to solve them from PVS-Studio Team.
- C++ tutorial - A user ranked online tutorial bank site displaying multiple courses to learn C++ from.
- C++ Tutorial for Beginners - A comprenhensive tutorial on C++ curated by trained experts.
- Framework Benchmarks - Source for the TechEmpower Framework Benchmarks project for C/C++
Weblogs
Useful C or C++ related weblogs.
- Coding For Speed - Coding For Speed DOT COM, Less Execution Time.
- Eric Niebler
- Sticky Bits
- Paul Fultz II’s Blog
- ridiculousfish - Will It Optimize?
- Embedded in Academia
- Simplify C++
- Fluent C++
- Bartek’s Coding Blog
- Kenny Kerr
- Sutter’s Mill
- thoughts on cpp
- Vorbrodt’s C++ Blog
- foonathan::blog()
- cppexpert.online - Learn the best C++ practices by improving code snippets with some problems or with bad practices.
Other Awesome Projects
Collection of useful codes, snippets, …
- 30 Seconds of C++
- all algorithms - All algorithms.
- algorithms - Algorithms & Data Structures in C++.
- AMAZON SDE TEST SERIES - The repo contains the amazon interview questions topic wise.
- c-algorithms - C algorithms library.
- C++ Awesome Pack - Contains some awesome c++ codes, packed in one.
- GEEKS FOR GEEKS INTERVIEW PRACTICE - This repo will contain company based questions and answers for various companies.
- CP-Templates - Template codes for Competitive Programming with optimised implementations of various algorithms.
- Data Structures and Algorithms - A repository to help the open-source community with DSA related contributions.
- The-C-20-Masterclass-Source-Code - Source code for the C++ 20 Masterclass on udemy.
Other Awesome Lists
Other amazingly awesome lists
- lists - List of (awesome) lists curated on GitHub.
- awesome-awesomeness - A curated list of awesome awesomeness.
- awesome - A curated list of awesome lists.
- C++ links - A categorized list of C++ resources.
- Awesome C++ - getAwesomeness()’s mirror.
- Awesome C++ - LibHunt’s mirror.
- Awesome C 1
- Awesome C 2
- Awesome Modern C++ - A collection of resources on modern C++.
- AwesomePerfCpp - A curated list of awesome C/C++ performance optimization resources.
- free-programming-books - List of Freely Available Programming Books.
- Inqlude - The Qt library archive.
- papers-we-love - Papers from the computer science community to read and discuss.
- awesome-algorithms - A curated list of awesome places to learn and/or practice algorithms.
- awesome-hpp - A curated list of awesome header-only C++ libraries.
- awesome-talks - A lot of screencasts, recordings of user group gatherings and conference talks.
- Projects - A list of practical projects that anyone can solve in any programming language.
- Awesome interview questions - A list of lists of interview questions for the most popular technologies, including C and C++.
- nothings/single_file_libs - List of single-file C/C++ libraries.
- awesome-billing - Billing & Payments Knowledge for Cloud Platforms.
Interviews
- interview - This repository is a summary of the basic knowledge of recruiting job seekers and beginners in the direction of C/C++ technology, including language, program library, data structure, algorithm, system, network, link loading library, interview experience, recruitment, recommendation.
Описание
A curated list of awesome C++ (or C) frameworks, libraries, resources