awesome-cpp
A curated list of awesome C++ (or C) frameworks, libraries, resources, and shiny things.
https://github.com/DanylovskyiAM/awesome-cpp
Last synced: 20 days ago
JSON representation
API Design
Articles
- 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.
Artificial Intelligence
- ANNetGPGPU - A GPU (CUDA) based Artificial Neural Network library. [LGPL]
- btsk - Game Behavior Tree Starter Kit. [zlib]
- frugally-deep - Header-only library for using Keras models in C++. [MIT]
- Genann - Simple neural network library in C. [zlib]
- Recast/Detour - (3D) Navigation mesh generator and pathfinder, mostly for games. [zlib]
- TensorFlow - An open source software library for numerical computation using data flow graphs [Apache]
- CNTK - Microsoft Cognitive Toolkit (CNTK), an open source deep-learning toolkit. [Boost]
- tiny-dnn - A header only, dependency-free deep learning framework in C++11. [BSD]
- Veles - Distributed platform for rapid Deep learning application development. [Apache]
- Kaldi - Toolkit for speech recognition. [Apache]
- Evolving Objects - A template-based, ANSI-C++ evolutionary computation library which helps you to write your own stochastic optimization algorithms insanely fast. [LGPL]
Asynchronous Event Loop
- Asio - A cross-platform C++ library for network and low-level I/O programming that provides developers with a consistent asynchronous model using a modern C++ approach. [Boost] website
- C++ Actor Framework - An Open Source Implementation of the Actor Model in C++. [BSD-3-Clause] website
- libuv - Cross-platform asychronous I/O. [BSD]
- uvw - C++ wrapper for libuv. [MIT]
Audio
- KFR - Fast, modern C++ DSP framework, FFT, FIR/IIR filters, Sample Rate Conversion. [GPL/Commercial]
- Maximilian - C++ Audio and Music DSP Library. [MIT]
- SELA - SimplE Lossless Audio. [MIT]
- SoLoud - Easy, portable audio engine for games. [zlib]
- Tonic - Easy and efficient audio synthesis in C++. [Unlicense]
- minimp3 - Public domain, header-only MP3 decoder with clean-room implementation. [CC0]
- Speex - A free codec for free speech. Obsoleted by Opus. [BSD]
- Opus - A totally open, royalty-free, highly versatile audio codec. [BSD]
- Vorbis - Ogg Vorbis is a fully open, non-proprietary, patent-and-royalty-free, general-purpose compressed audio format. [BSD]
Biology
- Chaste - An open source C++ library for the computational simulation of mathematical models developed for physiology and biology. [BSD]
- libsequence - A C++ library for representing and analyzing population genetics data. [GPL]
- Vcflib - A C++ library for parsing and manipulating VCF files. [MIT]
- Wham - Structural variants (SVs) in Genomes by directly applying association tests to BAM files. [MIT]
- BioC++ - C++ Computational Libraries for Bioinformatics. [BSD]
BitTorrent
- jech/dht - BitTorrent DHT library in C. [MIT]
- libtorrent - rasterbar) - An efficient feature complete C++ bittorrent implementation. [BSD]
- LibTorrent - rakshasa) - BitTorrent library. [GPL]
- libutp - uTorrent Transport Protocol library. [MIT]
Books
- List of Free C or C++ Books
- Free C++ Books - vhf/free-programming-books/C++.
- cppbestpractices - Collaborative Collection of C++ Best Practices.
Build Systems
- CMake - Cross-platform free and open-source software for managing the build process of software using a compiler-independent method. [BSD]
- C++ Archive Network - Cross-platform C++ Dependency Manager with a lot of packages available.
- Conan - C/C++ Package Manager, open sourced. [MIT]
- Ninja - A small build system with a focus on speed.
- Sconsolidator - Scons build system integration for Eclipse CDT.
- Spack - A flexible package manager that supports multiple versions, configurations, platforms, and compilers. [Apache-2.0/MIT]
- waf - Python-based framework for configuring, compiling and installing applications. [BSD] website
- XMake - A C/C++ cross-platform build utility based on Lua. [Apache]
- C++ Archive Network - Cross-platform C++ Dependency Manager with a lot of packages available.
- C++ Archive Network - Cross-platform C++ Dependency Manager with a lot of packages available.
- C++ Archive Network - Cross-platform C++ Dependency Manager with a lot of packages available.
- C++ Archive Network - Cross-platform C++ Dependency Manager with a lot of packages available.
- C++ Archive Network - Cross-platform C++ Dependency Manager with a lot of packages available.
- C++ Archive Network - Cross-platform C++ Dependency Manager with a lot of packages available.
- C++ Archive Network - Cross-platform C++ Dependency Manager with a lot of packages available.
- C++ Archive Network - Cross-platform C++ Dependency Manager with a lot of packages available.
- C++ Archive Network - Cross-platform C++ Dependency Manager with a lot of packages available.
- C++ Archive Network - Cross-platform C++ Dependency Manager with a lot of packages available.
- C++ Archive Network - Cross-platform C++ Dependency Manager with a lot of packages available.
- C++ Archive Network - Cross-platform C++ Dependency Manager with a lot of packages available.
- C++ Archive Network - Cross-platform C++ Dependency Manager with a lot of packages available.
- C++ Archive Network - Cross-platform C++ Dependency Manager with a lot of packages available.
- C++ Archive Network - Cross-platform C++ Dependency Manager with a lot of packages available.
- C++ Archive Network - Cross-platform C++ Dependency Manager with a lot of packages available.
- C++ Archive Network - Cross-platform C++ Dependency Manager with a lot of packages available.
- C++ Archive Network - Cross-platform C++ Dependency Manager with a lot of packages available.
- C++ Archive Network - Cross-platform C++ Dependency Manager with a lot of packages available.
- C++ Archive Network - Cross-platform C++ Dependency Manager with a lot of packages available.
- C++ Archive Network - Cross-platform C++ Dependency Manager with a lot of packages available.
- Bazel - A multi-language, fast and scalable build system from Google. [Apache]
- Bear - A tool to generate compilation database for clang tooling. [GPLv3]
- clib - Package manager for the C programming language. [MIT]
- C++ Archive Network - Cross-platform C++ Dependency Manager with a lot of packages available.
- Cget - Cmake package retrieval. [Boost] website
- CPM - A C++ Package Manager based on CMake and Git.
- tundra - High-performance code build system designed to give the best possible incremental build times even for very large software projects.
- Vcpkg - VC++ Packaging Tool for Windows.
- Scons - A software construction tool configured with a Python script.
CLI
- Argh! - A minimalist, frustration-free, header-only argument handler. [BSD]
- Taywee/args - A simple header-only C++ argument parser library. [MIT]
- CLI11 - Header only single or multi-file C++11 library for simple and advanced CLI parsing. [BSD]
- jarro2783/cxxopts - Lightweight C++ command line option parser. [MIT]
- docopt.cpp - A library to generate option parser from docstring. [MIT/Boost]
- gflags - Commandline flags module for C++. [BSD]
- linenoise - A small self-contained alternative to readline and libedit. [BSD-2-Clause]
- linenoise-ng - A small, portable GNU readline replacement for Linux, Windows and MacOS which is capable of handling UTF-8 characters. [BSD]
- PDCurses - Public domain curses library with both source code and pre-compiled library available. [PublicDomain]
- replxx - A readline and libedit replacement that supports UTF-8, syntax highlighting, hints, works on Unix and Windows. [BSD]
- TCLAP - A mature, stable and feature-rich library for defining and accessing command line arguments in ANSI C++. [MIT]
- termbox - A C library for writing text-based user interfaces. [MIT]
- Ncurses - A terminal user interfaces. [MIT]
Coding Style
- Google C++ Style Guide
- GNU Coding Standard
- Linux kernel coding style
- C++ Core Guidelines - "Official" set of C++ guidelines, reviewed by the author of C++.
- google-styleguide - Style guides for Google-originated open-source projects.
Coding Style Tools
- Uncrustify - Code beautifier.
- Artistic Style - A tool to format C/C++/C#/Obj-C/Java code. Also known as astyle.
Compiler
- GCC - GNU Compiler Collection. Supports C++11/14/1z C11 and OpenMP. [GNU GPL3]
- PCC - A very old C compiler. Supports C99.
- Open WatCom - Watcom C, C++, and Fortran cross compilers and tools. [Sybase Open Watcom Public License]
- Oracle Solaris Studio - C, C++ and Fortran compiler for SPARC and x86. Supports C++11. Available on Linux and Solaris. [OTN Developer License]
- 8cc - A Small C Compiler.
- c - Compile and execute C "scripts" in one go! [MIT]
- Microsoft Visual C++ - MSVC, developed by Microsoft.
- Intel C++ Compiler - Developed by Intel.
Compression
- bzip2 - A freely available, patent free, high-quality data compressor. [BSD]
- PhysicsFS - A library to provide abstract access to various archives. It is intended for use in video games, and the design was somewhat inspired by Quake 3's file subsystem. [zlib]
- KArchive - A library for creating, reading, writing and manipulating file archives like zip and tar. It also provides transparent compression and decompression of data, using formats like gzip, via a subclass of QIODevice. [LGPL]
- ZLib - A very compact compression library for data streams. [zlib]
- LZMAT - An extremely fast real-time lossless data compression library. [GPL]
- Brotli - Brotli compression format. Developed by Google. [MIT]
- bzip2 - A freely available, patent free, high-quality data compressor. [BSD]
- FiniteStateEntropy - New generation entropy codecs : Finite State Entropy and Huff0.
- libarchive - Multi-format archive and compression library. [New BSD] website
- LZFSE - LZFSE compression library and command line tool. Developed by Apple.
- smaz - Small strings compression library. [BSD]
- Snappy - A fast compressor/decompressor. [BSD]
- zlib-ng - zlib for the "next generation" systems. Drop-In replacement with some serious optimizations. [zlib]
- zstd - Zstandard - Fast real-time compression algorithm. Developed by Facebook. [BSD]
- ZZIPlib - Provides read access on ZIP-archives. [MPL/LGPL]
- LZHAM - Lossless data compression library with a compression ratio similar to LZMA but with much faster decompression. [BSD]
- miniz - Single C source file Deflate/Inflate compression library with zlib-compatible API, ZIP archive reading/writing, PNG writing. [Unlicense]
- LZMA - The default and general compression method of 7z format. [PublicDomain]
- Minizip - Zlib with latest bug fixes that supports PKWARE disk spanning, AES encryption, and IO buffering. [zlib]
Concurrency
- OpenCL - The open standard for parallel programming of heterogeneous systems.
- alpaka - Abstraction library for parallel kernel acceleration. [LGPLv3+]
- ArrayFire - A general purpose GPU library. [BSD]
- Async++ - A lightweight concurrency framework for C++11, inspired by the Microsoft PPL library and the N3428 C++ standard proposal. [MIT]
- Boost.Compute - A C++ GPU Computing Library for OpenCL. [Boost]
- Bolt - A C++ template library optimized for GPUs. [Apache2]
- ck - Concurrency primitives, safe memory reclamation mechanisms and non-blocking data structures. [BSD]
- concurrentqueue - A fast multi-producer, multi-consumer lock-free concurrent queue for C++11. [BSD,Boost]
- CUB - CUB provides state-of-the-art, reusable software components for every layer of the CUDA programming mode. [New BSD]
- cupla - C++ API to run CUDA/C++ on OpenMP, Threads, TBB, ... through Alpaka. [LGPLv3+]
- C++React - A reactive programming library for C++11. [Boost]
- junction - A library of concurrent data structures in C++. [BSD]
- libcds - A C++ library of Concurrent Data Structures. [BSD]
- Libclsph - An OpenCL based GPU accelerated SPH fluid simulation library. [MIT]
- moderngpu - moderngpu is a productivity library for general-purpose computing on GPUs. It is a header-only C++ library written for CUDA. The unique value of the library is in its accelerated primitives for solving irregularly parallel problems. [FreeBSD & Copyright, Sean Baxter]
- NCCL - Optimized primitives for collective multi-GPU communication. [BSD]
- readerwriterqueue - A fast single-producer, single-consumer lock-free queue for C++. [BSD]
- transwarp - A header-only C++ library for task concurrency. [MIT]
- VexCL - A C++ vector expression template library for OpenCL/CUDA. [MIT]
- Cpp-Taskflow - Fast C++ Parallel Programming with Task Dependencies. [MIT]
- Intel Parallel STL - Intel® implementation of C++17 STL for C++11 and above. [Apache2]
- libdill - Introduces structured concurrency in C. [MIT]
- libdispatch - Grand Central Dispatch (GCD), developed by Apple Inc., is a task parallelism technology based on the thread pool pattern. libdispatch is a library that provides the implementation of GCD's services. [Apache-2.0] website
Containers
- Colony - An unordered "bag"-type container which outperforms std containers in high-modification scenarios while maintaining permanent pointers to non-erased elements regardless of insertion/erasure. [zLib] website
- Hashmaps - Implementation of open addressing hash table algorithms in C++. [MIT]
- Hopscotch map - A fast header-only hash map which uses hopscotch hashing for collisions resolution. [MIT]
- LSHBOX - A c++ toolbox of locality-sensitive hashing (LSH), provides several popular LSH algorithms, also support Python and MATLAB. [GPL]
- plf::list - A std::list implementation which removes range splicing in order to enable cache-friendlier structure, yielding significant performance gains. [zLib] website
- plf::stack - A replacement container for the std::stack container adaptor, with better performance than any std container in a stack context. [zLib] website
- sparsepp - A fast, memory efficient hash map for C++. [BSD 3-clause]
- C++ B-tree - A template library that implements ordered in-memory containers based on a B-tree data structure. [Apache2]
- ring_span lite - A simplified implementation of Arthur O'Dwyer's ring_span implementation ie. a circular buffer view. [MIT]
Cryptography
- GnuPG - A complete and free implementation of the OpenPGP standard. [GPL]
- Libgcrypt - A general purpose cryptographic library originally based on code from GnuPG. [LGPLv2.1+]
- LibreSSL - A free version of the SSL/TLS protocol forked from OpenSSL in 2014. [?]
- Nettle - A low-level cryptographic library. [LGPL]
- Themis - crypto library for painless data security, providing symmetric and asymmetric encryption, secure sockets with forward secrecy, for mobile and server platforms. [Apache2]
- Bcrypt - A cross platform file encryption utility. Encrypted files are portable across all supported operating systems and processors. [BSD]
- BeeCrypt - A portable and fast cryptography library. [LGPLv2.1+]
- Crypto++ - A free C++ class library of cryptographic schemes. [Boost] website
- digestpp - C++11 header-only message digest (hash) library. [PublicDomain]
- Libgcrypt - A general purpose cryptographic library originally based on code from GnuPG. [LGPLv2.1+]
- libhydrogen - A lightweight, secure, easy-to-use crypto library for constrained environments. [ISC]
- libsodium - P(ortable|ackageable) NaCl-based crypto library, opinionated and easy to use. [ISC]
- LibTomCrypt - A fairly comprehensive, modular and portable cryptographic toolkit. [WTFPL]
- mbedTLS - An open source, portable, easy to use, readable and flexible SSL library, previously known as PolarSSL. [Apache2] website
- Nettle - A low-level cryptographic library. [LGPL]
- OpenSSL - A robust, commercial-grade, full-featured, and Open Source cryptography library. [Apache] website
- retter - A collection of hash functions, ciphers, tools, libraries, and materials related to cryptography.
- sha1collisiondetection - Library and command line tool to detect SHA-1 collision in a file. [MIT]
- Tink - A multi-language, cross-platform library that provides cryptographic APIs that are secure, easy to use correctly, and hard(er) to misuse. [Apache-2.0]
- Tiny AES in C - Small portable AES128/192/256 in C. [PublicDomain]
- s2n - An implementation of the TLS/SSL protocols. [Apache]
- GnuTLS - A secure communications library implementing the SSL, TLS and DTLS protocols. [LGPL2.1]
Database
- LMDB - Very fast embedded key/value store with full ACID semantics. [OpenLDAP]
- ODB - An open-source, cross-platform, and cross-database object-relational mapping (ORM) system for C++. [GPLv2]
- hiberlite - C++ Object-relational mapping for sqlite3. [BSD]
- Hiredis - A minimalistic C client library for the Redis database. [BSD]
- LevelDB - A fast key-value storage library written at Google that provides an ordered mapping from string keys to string values. [BSD]
- LMDB++ - C++11 wrapper for the LMDB embedded database library. [PublicDomain]
- MongoDB C Driver - MongoDB client library for C. [Apache2]
- MongoDB C++ Driver - C++ driver for MongoDB. [Apache2]
- MongoDB Libbson - A BSON utility library. [Apache2]
- MySQL++ - A C++ wrapper for MySQL's C API. [LGPL]
- nanodbc - A small C++ wrapper for the native C ODBC API. [MIT]
- redis3m - Wrapper of hiredis with clean C++ interface, supporting sentinel and ready to use patterns. [Apache2]