What is the KISS Collection?

  • Alternative to boost and poco for small projects
  • Simple and clean functions, classes and libraries for specific task
  • Cross platform/os: needs to run on Linux, Mac and Windows
  • Each of them can be used by simply copiing them to your code.
  • Liberal licence, commercial friendly: only zlib / bsd / mit or public domain licence.
  • Allow multple implementations for same taks: nobody is perfect.
  • Usually only stl as dependency. in special cases 3rd party dependencies are needed / allowed.
  • Missing functionality should be implemented by the community
  • Alternatively search here: Awesome C++ or here cppreference
Scripting Bindings/Reflection
pybind11
Seamless operability between C++11 and Python
cpgf
free C++ open source library for reflection, serialization, script binding, callbacks
Logging
spdlog
Super fast C++ logging library
Networking / Messaging
nanomsg
nanomsg is a socket library that provides several common communication patterns. It aims to make the networking layer fast, scalable, and easy to use. Implemented in C, it works on a wide range of operating systems with no further dependencies.
msgpack
MessagePack is an efficient binary serialization format.
protocol-bufffers
Protocol buffers are Google's language-neutral, platform-neutral, extensible mechanism for serializing structured data – think XML, but smaller, faster, and simpler.
enet
ENet's purpose is to provide a relatively thin, simple and robust network communication layer on top of UDP (User Datagram Protocol).The primary feature it provides is optional reliable, in-order delivery of packets.
libevent
The libevent API provides a mechanism to execute a callback function when a specific event occurs on a file descriptor or after a timeout has been reached. Furthermore, libevent also support callbacks due to signals or regular timeouts.
libuv
libuv is a multi-platform support library with a focus on asynchronous I/O.
Cap’n Proto
Insanely fast data interchange format and capability-based RPC system
Random Numbers
mtrand
C++ port of the famous Mersenne Twister pseudo-random number generator
mersenne-twister
This Mersenne Twister is a fast pseudo-random number generator (PRNG) in C++. C rand replacement
Datatypes
SafeInt
SafeInt is a C++ header containing the SafeInt class, non-throwing functions to check common operations, and the associated internal mechanisms.
utf8-cpp
UTF-8 with C++ in a Portable Way
STL Replacements / General purpose
ustl
The C++ standard template library (STL) is a collection of common containers and algorithms in template form
stb
stb single-file public domain libraries for C/C++
String Parsing
strtk
robust, optimized and portable generic string processing algorithms and procedures for the C++ language
Threading / Concurrent
zthread
Clean and feature complete threading library. Although it is not maintained anymore it is stable and very useful.
tinythread
C++0x compatible basic threading api
Threading Building Blocks
Intel® Threading Building Blocks (Intel® TBB) lets you easily write parallel C++ programs that take full advantage of multicore performance, that are portable and composable, and that have future-proof scalability.
Theron
lightweight C++ concurrency library based on the Actor Model.
Compression
zlib
THE compression library
fastlz
faster than zlib, but not as good compression ratio. Very easy to embed.
snappy
fastest, but not as good compression ratio
blocs
an extremely fast, multi-threaded, meta-compressor library
Zstandard
real-time compression algorithm, providing high compression ratios
zstream-cpp
iostream wrappers for the zlib library
Mathematical Expression Library
exprtk
simple to use, easy to integrate and extremely efficient run-time mathematical expression parsing and evaluation engine
muparser
Fast Math Parser Library
XML/JSON/Serialization
cereal
A C++11 library for serialization
pugixml
pugixml is a light-weight C++ XML processing library.
rapidxml
in-situ parser written in modern C++
asmxml
XML parser and decoder for x86 platforms
SimpleJSON
SimpleJSON is a simple JSON library written in C++. It is designed to be simple to use and be cross platform.
SuperEasyJSON
A super easy to use, platform-independent C++ JSON library with no dependencies beyond the standard libraries, no annoying make files, no installation of any other software needed.
Signal / Event
sigslot
C++ Signal/Slot Library
CppEvent
Event/delegate (signal/slot) mechanism implementation for C++
FastDelegate
Member Function Pointers and the Fastest Possible C++ Delegates
Hash Functions and Hash Tables
MurmurHash
extremely well performing hash function
smallsha1
very small sha1 library
google-sparsehash
optimized hash maps for speed or size
TommyDS
TommyDS is a C library of hashtables and tries designed to store and find objects with high performance.
Smart Pointer
yasper
Yet Another Smart Pointer Library
Command Line Parser / Terminal
CLI11
Command line parser for C++11
cola
A single header only Command Line Argument parser.
optparse
Python style parsing
TCLAP
small, flexible library that provides a simple interface for defining and accessing command line arguments
optionparser
The Lean Mean C++ Option Parser
anyoption
C/C++ Command line and resource file option parsing
gflags
The gflags package contains a library that implements commandline flags processing. As such it's a replacement for getopt(). It has increased flexibility, including built-in support for C++ types like string, and the ability to define flags in the source file in which they're used.
rang
A Minimal, Header only Modern c++ library for terminal goodies
Text Search
clucene
CLucene is a high-performance, scalable, cross platform, full-featured, open-source indexing and searching API.
Spatial Partitioning/Geometry
libspatialindex
Complex spatial index library
RTree
Straight forward RTRee implementation
nanoflann
a C++ header-only library for Nearest Neighbor (NN) search wih KD-trees
marching cube
marching cube implementation
OpenMesh
A generic and efficient polygon mesh data structure
Math
lmfit
A self-contained C library for Levenberg-Marquardt least-squares minimization and curve fitting.
ssemath
Simple SSE and SSE2 (and now NEON) optimized sin, cos, log and exp
ffts
The Fastest Fourier Transform in the South http://anthonix.com/ffts
Machine Learning
tiny-cnn
A header-only, dependency-free deep learning framework for C++11
Unit Testing
picotest
Single-header unit testing framework, subset of googletest
doctest
The fastest feature-rich C++98/C++11 single-header testing framework for unit tests and TDD
Comliler/ASM/JIT
asmjit
complete JIT and remote assembler for C++ language
lexertk
simple to use, easy to integrate and extremely fast lexicographical generator
Elkhound and Elsa
Elkhound: A GLR Parser Generator and Elsa: An Elkhound-based C++ Parser
Template Engines
inja
A Template Engine for Modern C++
Jinja2CppLight
(very) lightweight version of Jinja2 for C++
NLTemplate
Simple HTML template library for C++
REST/Micro Frameworks/Web Development
crow
Crow is very fast and easy to use C++ micro web framework (inspired by Python Flask)
Pistache
An elegant C++ REST framework.
NLTemplate
Simple HTML template library for C++
inja
A Template Engine for Modern C++
Game Development
tweeny
Tweeny is an inbetweening library designed for the creation of complex animations for games and other beautiful interactive software.
EntityX
A fast, type-safe C++ Entity-Component system
EnTT
Gaming meets modern C++ - a fast and reliable entity-component system (ECS) and much more
Scripting Languages
ChaiScript
an easy to use embedded scripting language for C++.
Squirrel
a high level imperative, object-oriented programming language, designed to be a light-weight scripting language that fits in the size, memory bandwidth, and real-time requirements of applications like video games.
LuaJit
a Just-In-Time Compiler (JIT) for the Lua programming language. Lua is a powerful, dynamic and light-weight programming language. It may be embedded or used as a general-purpose, stand-alone language.
Duktape
an embeddable Javascript engine, with a focus on portability and compact footprint.