awesome-cpp
A curated list of awesome C++ (or C) frameworks, libraries, resources, and shiny things. Inspired by awesome-... stuff.
https://github.com/fffaraz/awesome-cpp
Last synced: 5 days ago
JSON representation
-
Reflection
- simple_enum - An Fast, Intuitive and Type-Safe C++ Enumeration Support Library. [BSL-1.0] [website](https://arturbac.github.io/simple_enum/)
- TSMP - An intrusion and macro-free C++20 library for static reflection. It uses libclang to extract reflection data from your source code and makes it usable via template specialization. [MIT]
- visit_struct - A miniature library for struct-field reflection in C++. [Boost]
- Refureku - A C++17 runtime reflection and code generation library. [MIT]
- Enchantum - modern C++17 header-only library for compile-time enum reflection. [MIT]
-
Regular Expression
- SRELL - Unicode-aware regular expression template library for C++. [BSD]
- CppVerbalExpressions - C++ regular expressions made easy. [MIT]
- CTRE - A Compile time PCRE (almost) compatible regular expression matcher. [MIT]
- Hyperscan - Hyperscan is a high-performance multiple regex matching library by Intel. Provides simultaneous matching of large numbers of regexps (up to tens of thousands). Typically used in a DPI library stack. [BSD]
- Oniguruma - A modern and flexible regular expressions library that supports a variety of character encodings. [BSD]
- PIRE - Perl Incompatible Regular Expressions library by Yandex. Can be really fast (more than 400 MB/s). [LPGL v3.0]
- RE2 - A software library for regular expressions via a finite-state machine using automata theory. [BSD-3-Clause]
- SLRE - Super Light Regexp engine for C/C++. [GPLv2/Proprietary]
- sregex - A non-backtracking NFA/DFA-based Perl-compatible regex engine library for matching on large data streams. [BSD]
- TRE - The approximate regex matching library and agrep command line tool. [BSD-2-Clause]
- Vectorscan - A portable fork of the high-performance regular expression matching library. [BSD-3-Clause] [website](https://www.vectorcamp.gr/project/vectorscan/)
- Pawn.Regex - A Pawn plugin that provides support for regular expressions using C++11 std::regex. [MIT]
- PCRE2 - a set of C functions that implement
- BSD
-
Robotics
- MOOS-IvP - A set of open source C++ modules for providing autonomy on robotic platforms, in particular autonomous marine vehicles.
- MRPT - Mobile Robot Programming Toolkit. [BSD]
- Robotics Library (RL) - A self-contained C++ library for robot kinematics, motion planning and control. [BSD]
- PCL - Point Cloud Library is a standalone, large scale, open project for 2D/3D image and point cloud processing. [BSD] [website](http://www.pointclouds.org/)
- RobWork - A collection of C++ libraries for simulation and control of robot systems. [Apache2] [website](http://www.robwork.dk/)
- Ruckig - Real-time motion generation for robots and machines. [MIT] [website](https://ruckig.com)
- YARP (Yet Another Robot Platform) - Library and toolkit for communication and device interfaces. [BSD-3-Clause] [website](http://www.yarp.it/)
- SPICE Toolkit - Library and toolkit for computing geometric information used in planning and analyzing science observations obtained from robotic spacecraft. [MIT] [website](https://naif.jpl.nasa.gov/naif/toolkit.html)
- MOOS-IvP - A set of open source C++ modules for providing autonomy on robotic platforms, in particular autonomous marine vehicles.
- ROS - Robot Operating System provides libraries and tools to help software developers create robot applications. [BSD]
-
Scientific Computing
- FFTW - A C library for computing the DFT in one or more dimensions. [GPL]
- GSL - GNU scientific library. [GPL]
- AMGCL - a header-only C++ library for solving large sparse linear systems with algebraic multigrid. [MIT]
- Au - A C++14-compatible physical units library with no dependencies and a single-file delivery option. Emphasis on safety, accessibility, performance, and developer experience. [Apache 2.0] [website](https://aurora-opensource.github.io/au/main/)
- preCICE - Coupling library for partitioned multi-physics simulations (FSI, CHT, and more). [LGPL] [website](https://precice.org/)
- Trilinos - High performance PDE solvers. [BSD]
- Torch - A scientific computing framework with wide support for machine learning algorithms that puts GPUs first. [BSD-3-Clause] [website](http://torch.ch/)
- volesti - High dimensional sampling from truncated distributions, convex optimization and volume computation.
-
Scripting
- AngelScript - AngelScript is a game-oriented interpreted/compiled scripting language. [zlib]
- djinni - A tool for generating cross-language type declarations and interface bindings. [Apache2]
- Lua - A minimal and fast scripting engine for configuration files and basic application scripting. [MIT]
- QuickJS - a small and embeddable Javascript engine. [MIT]
- V8 - A fast JavaScript engine by Google that can be embedded into any C++ application. [BSD]
- MiniScript - scripting language modern, elegant, easy to learn, and easy to embed in your own C# or C++ projects. [MIT]
- SIP - C or C++ Bindings Generator for Python v2 and v3. [GPL]
- Boost.Python - A C++ library which enables seamless interoperability between C++ and the Python programming language. [Boost] [website](https://boost.org/libs/python)
- cppimport - Import C++ files directly from Python! [MIT]
- CppSharp - Tools and libraries to glue C/C++ APIs to high-level languages. [MIT]
- ctypes.sh - A foreign function interface for bash. [MIT]
- Cython - Cython is an optimising static compiler for both the Python programming language and the extended Cython programming language (based on Pyrex). It makes writing C extensions for Python as easy as Python itself. [Apache] [website](http://cython.org/)
- Duktape - An embeddable JavaScript engine with compact footprint. [MIT] [website](http://duktape.org)
- JavaCpp - The missing bridge between Java and native C++. [Apache2]
- JerryScript - Ultra-lightweight JavaScript engine for the Internet of Things. [Apache-2.0] [website](https://jerryscript.net/)
- libffi - A portable foreign-function interface library. [MIT] [website](https://sourceware.org/libffi/)
- LuaBridge - A lightweight, dependency-free library for binding Lua to C++. [MIT]
- LuaBridge3 - A lightweight, dependency-free library for binding Lua, LuaJIT, Luau and Ravi to C++. [MIT]
- luacxx - C++11 API for creating Lua bindings. [MIT]
- Luau - A fast, small, safe, gradually typed embeddable scripting language derived from Lua. [MIT] [website](https://luau.org/)
- nanobind - tiny and efficient C++/Python bindings. [BSD-3-Clause]
- nbind - Magical headers that make your C++ library accessible from JavaScript. [MIT]
- PHP-CPP - A library to build PHP extensions with C++. [Apache2] [website](http://www.php-cpp.com/)
- pybind11 - Seamless operability between C++11 and Python. [BSD]
- sol2 - A C++ <-> Lua API wrapper with advanced features and top notch performance. [MIT]
- SWIG - A wrapper/interface Generator that let you link your c++ code to JavaScript, Perl, PHP, Python, Tcl and Ruby. [GPL/Output not licensed] [website](http://www.swig.org/)
- txiki.js - A tiny JavaScript runtime. [MIT]
- V7 - An embedded JavaScript engine. [GPL2]
- v8pp - Header-only library to expose C++ classes and functions into V8 to use them in JavaScript code. [BOOST] [website](https://pmed.github.io/v8pp/)
- ChakraCore - A JavaScript engine by Microsoft that can be embedded into nodejs. [MIT]
- MicroQuickJS - MicroQuickJS (aka. MQuickJS) is a JavaScript engine targeted at embedded systems. [MIT]
- ChaiScript - An easy to use embedded scripting language for C++. [BSD] [website](http://chaiscript.com/)
- MuJS - An embeddable Javascript interpreter in C. [ISC] [website](http://mujs.com)
- hobbes - A language and an embedded JIT compiler from Morgan Stanley. [Apache-2.0]
- djinni - A tool for generating cross-language type declarations and interface bindings. [Apache2]
- Lua - A minimal and fast scripting engine for configuration files and basic application scripting. [MIT]
- V8 - A fast JavaScript engine by Google that can be embedded into any C++ application. [BSD]
-
Serialization
- BitSerializer - Multi-format serialization library (JSON, XML, YAML, CSV, MsgPack) [MIT]
- Bitsery - Header only C++ binary serialization library. [MIT]
- Bond - An open source, cross-platform framework for working with schematized data. [MIT]
- Boost.Serialization - Boost Serialization Library. [Boost] [website](https://boost.org/libs/serialization)
- cereal - A C++11 library for serialization. [BSD]
- cista - A C++17 library for zero-copy high-performance (de-)serialization. [MIT]
- cppcodec - Header-only C++11 library to encode/decode base64, base32 and hex with consistent, flexible API. [MIT]
- FastBinaryEncoding - Fast Binary Encoding is ultra fast and universal serialization solution for C++, C#, Go, Java, JavaScript, Kotlin, Python, Ruby, Swift. [MIT]
- FlatBuffers - A Memory efficient serialization library. [Apache2]
- iguana - a modern, universal and easy-to-use serialization engine developed in C++20 and C++17. [Apache2]
- MessagePack - Efficient binary serialization format "like JSON" for C and C++. [Apache2] [website](http://msgpack.org/)
- nanopb - Small code-size Protocol Buffers implementation in ANSI C. [Zlib]
- protobuf - Protocol Buffers - Google's data interchange format. [BSD]
- protobuf-c - Protocol Buffers implementation in C. [BSD]
- Protocol Puffers - A little, highly templated, and protobuf-compatible serialization/deserialization header-only library written in C++20. [Apache-2.0]
- upb - A small protobuf implementation in C. [BSD]
- Wirehair - O(N) Fountain Code for Large Data. [BSD-3-Clause]
- YAS - Very fast **Y**et **A**nother **S**erialization library supports the binary/text/json formats. [Boost]
- zpp_bits - Actually, the fastest modern **S**erialization library. Just check [this video](https://www.youtube.com/watch?v=G7-GQhCw8eE&ab_channel=CppCon).
- SimpleBinaryEncoding - encoding and decoding application messages in binary format for low-latency applications. [Apache2]
- fbthrift - Facebook's branch of Apache Thrift, including a serialization library and RPC framework. [Apache-2.0]
-
Serial Port
- CSerialPort - lightweight cross-platform serial port library. [LGPL3]
- Libserial - Serial Port Programming in C++. [BSD-3-Clause]
- Serial Communication Library - Cross-platform, Serial Port library written in C++. [MIT] [website](http://wjwwood.io/serial/)
-
Sorting
- cpp-sort - Sorting algorithms & related tools for C++14. [MIT]
- pdqsort - Pattern-defeating quicksort. [zlib]
- Indiesort - A sort wrapper which enables the use of std::sort (& other random-access sort functions) with non-random-access containers, and also improves sort performance for large/non-trivially-copyable types in random-access containers and arrays. [zLib] [website](https://plflib.org/indiesort.htm)
- x86-simd-sort - C++ template library for high performance SIMD based sorting algorithms. [BSD-3-Clause]
-
Standard Libraries
- 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.
- ISO C++ Standards Committee - ISO/IEC JTC1/SC22/WG21 - The C++ Standards Committee. [website](http://www.open-std.org/JTC1/SC22/WG21/)
- The GNU C Library - The purpose of this manual is to tell you how to use the facilities of the GNU C Library.
- The GNU C Library - The purpose of this manual is to tell you how to use the facilities of the GNU C Library.
-
Static Code Analysis
- Cppcheck - A tool for static C/C++ code analysis. - [source](https://github.com/danmar/cppcheck)
- 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.
- Infer - A static analyzer for Java, C and Objective-C. [BSD]
- OCLint - A static source code analysis tool to improve quality and reduce defects for C, C++ and Objective-C. - [source](https://github.com/oclint/oclint)
- Clang Static Analyzer - A source code analysis tool that finds bugs in C, C++, and Objective-C programs.
- Linticator - Eclipse CDT integration of Pc-/FlexeLint.
- List of tools for static code analysis - A list of tools for static code analysis from Wikipedia.
- Trunk - Toolkit to check, test, merge, and monitor code.
- cpplint - A C++ style checker following Google's C++ style guide.
- cpp-dependencies - Tool to check C++ #include dependencies (dependency graphs created in .dot format). [Apache]
- include-what-you-use - A tool for use with clang to analyze includes in C and C++ source files. [website](https://include-what-you-use.org/)
- IKOS - Static analyzer for C/C++ based on the theory of Abstract Interpretation. [NOSA 1.3]
- OptView2 - Inspect missed Clang optimizations.
- Cppcheck - A tool for static C/C++ code analysis. - [source](https://github.com/danmar/cppcheck)
- CodeCompass - An open-source code comprehension tool for large C/C++ projects. [GPL-3.0]
- CodeChecker - An analyzer tooling, defect database and viewer extension for the Clang Static Analyzer and Clang-Tidy. [Apache-2.0]
- Linticator - Eclipse CDT integration of Pc-/FlexeLint.
-
Talks
- CppCon Talks - The C++ conference.
- Meeting Cpp - Meeting C++ Youtube Channel
- C++ Conferences - Catalog of C++ conferences
- Quick game development with C++11/C++14 - CppCon 2014 talk by Vittorio Romeo.
- Presentation on Hana for C++Now 2015
-
Video
- libvpx - VP8/VP9 Codec SDK. [BSD]
- FFmpeg - A complete, cross-platform solution to record, convert and stream audio and video. [LGPL2/GPL2]
- x265 - Open h.265 video codec implementation. [GPL2] [website](https://x265.readthedocs.io/en/master/)
- Theora - A free and open video compression format. [BSD]
- avcpp - Modern C++ wrapper around FFmpeg. [MIT]
- libde265 - Open h.265 video codec implementation. [LGPL] [website](http://www.libde265.org/)
- OpenH264 - Open Source H.264 Codec. [BSD] [website](http://www.openh264.org/)
- libuvc - A cross-platform library for USB video devices. [BSD]
- Theora - A free and open video compression format. [BSD]
-
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, ...
- The Cherno's C++ Playlist - Extensive C++ tutorial series by The Cherno.
- Caleb Curry's C Programming Tutorials - An all-in-one playlist of tutorials for C programming.
- Code for Yourself C++ Playlist - A complete C++ course covering everything from fundamentals to software design.
- C++ Qt Programming - by VoidRealms.
-
Virtual Machines
- CarpVM - "interesting" VM in C. Let's see how this goes. [GPLv3]
- MicroPython - Aims to put an implementation of Python 3.x on a microcontroller. [MIT]
- TinyVM - A small, fast, lightweight virtual machine written in pure ANSI C. [MIT]
-
Web Application Framework
- CppCMS - A Free High Performance Web Development Framework (not a CMS). [LGPLv3]
- Kore - ultra fast and flexible web server / framework for web applications developed in C. [ISC]
- Pistache - Pistache is a C++ REST framework written in pure C++11 with no external dependency. [Apache2]
- Wt - A C++ library for developing web applications. [GPL/Proprietary]
- Pistache - Pistache is a C++ REST framework written in pure C++11 with no external dependency. [Apache2]
- Civetweb - Provides easy to use, powerful, C/C++ embeddable web server with optional CGI, SSL and Lua support. [MIT]
- Crow - Crow is a C++ microframework for running web services. It uses routing similar to Python's Flask. [BSD] [website](https://crowcpp.org)
- Cutelyst - A C++ Web Framework built on top of Qt, using the simple approach of Catalyst (Perl) framework. [BSD-3-Clause] [website](https://cutelyst.org/)
- C++ wfrest - C++ Web Framework REST API. [Apache2]
- facil.io - Evented, high performance C web framework supporting HTTP, WebSockets, SSE and more. [MIT] [website](http://facil.io)
- lwan - Experimental, scalable, high performance HTTP server. [GPL2]
- oat++ - Light, zero-dependency framework to create high-performance web-services. [Apache-2.0] [website](https://oatpp.io/)
- Pistache - Pistache is a C++ REST framework written in pure C++11 with no external dependency. [Apache2]
- QDjango - A web framework written in C++ and built on top of the Qt library. Where possible it tries to follow django's API, hence its name. [LGPL]
- TreeFrog Framework - High-speed and full-stack web application framework based on C++ and Qt, which supports HTTP and WebSocket protocol (with O/R mapping). [BSD] [website](http://www.treefrogframework.org/)
- userver - Asynchronous C++17 framework with a rich set of abstractions and database drivers for fast and comfortable creation of efficient microservices, services and utilities. [Apache-2.0] [website](https://userver.tech/)
- Drogon - A C++17/20 based, high-performance HTTP application framework. [MIT]
- aeronet - High-performance, modular C++ HTTP/1.1, HTTP/2 and WebSocket microservices framework focused on performance and scalability. [MIT]
- httpserver.h - A single-header HTTP server library for C. [MIT]
- libhttp - A cross-platform HTTP and HTTPS library in C/C++. [MIT]
-
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
- Sutter’s Mill
- Vorbrodt's C++ Blog
- foonathan::blog()
- C++ Team Blog - Dev blog from the Microsoft Visual C++ team
- ridiculousfish - Will It Optimize?
- Embedded in Academia
-
Websites
- Standard C++ - News, Status & Discussion about Standard C++.
- Build Bench - Compare C++ Builds.
- Quick Bench - Quick C++ Benchmarks.
- CppCon - The C++ Conference.
- C++ by Example - Learn C++ by Example.
- cplusplus.com - The C++ Resources Network.
- C FAQ - C frequently asked questions.
- C++ FAQ - C++ frequently asked questions.
- C++ FQA Lite - C++ frequently questioned answers.
- C++ Quiz - A simple online quiz that you can use to test your knowledge of the C++ programming language.
Programming Languages
Categories
Miscellaneous
108
Networking
70
Websites
63
Math
63
Frameworks
53
Debug
51
Concurrency
47
Database
47
JSON
43
Image Processing
42
Compression
37
Scripting
37
GUI
36
CLI
35
Graphics
32
Cryptography
31
Articles
31
Audio
29
Build Systems
29
Containers
28
Game Engine
28
Machine Learning
26
Other Awesome Projects
25
Logging
23
Integrated Development Environment
21
Serialization
21
Web Application Framework
20
Inter-process communication
19
Reflection
19
Artificial Intelligence
18
Online Compiler
17
Static Code Analysis
17
Physics
17
XML
16
Memory Allocation
15
Weblogs
15
PDF
14
Regular Expression
14
Compiler
14
Videos
13
Configuration
12
Multimedia
12
Robotics
10
CSV
10
Asynchronous Event Loop
10
Video
9
Biology
8
Coding Style
8
Scientific Computing
8
Internationalization
7
Yaml
7
Office Open XML
7
Documentation
7
Chemistry
7
Font
6
Debugger
6
Standard Libraries
6
DSP
6
Coding Style Tools
6
Coding Standards
5
Talks
5
Data visualization
5
Podcasts
4
BitTorrent
4
Sorting
4
Serial Port
3
Virtual Machines
3
Books
3
API Design
2
Graph
2
Sub Categories
Keywords
cpp
194
c-plus-plus
109
c
90
cpp17
64
header-only
63
cross-platform
42
cpp11
38
json
37
cplusplus
36
cpp20
35
library
35
python
31
cpp14
30
linux
24
windows
23
serialization
22
machine-learning
22
simd
21
opengl
20
cmake
20
game-engine
18
http
18
cpp-library
18
modern-cpp
17
gamedev
17
game-development
17
parser
17
reflection
16
embedded
14
deep-learning
14
http-server
14
audio
13
graphics
13
clang
12
javascript
12
java
12
cuda
11
logging
11
neural-network
11
scientific-computing
11
data-structures
11
c-plus-plus-11
11
high-performance
11
performance
11
database
11
no-dependencies
11
android
10
macos
10
cli
10
compression
10