A curated list of C good stuff. Contributions are welcome.
An important note: first and foremost linked resources are for C, therefore C++ is an afterthought.
Note: there are several awesome-c lists already, but they are having somewhat different sets of libraries in them. This list tries to incorporate them all, and many more other resources. Consider it my personal cheat sheet and index for easier search instead of github stars. Also, original list categories are a mess.
Note: all licenses after project descriptions are leading to actual license text or declaration, if any provided. Source code with no license attached is considered as automatically copyrighted by law or it is falling under the case of terms of service of provided source code publication and hosting service, so keep this in mind. Also, probably sometimes license can be provided or mentioned, but I've failed to find it.
I am not an attorney btw.
Incorporated lists:
- https://github.com/aleksandar-todorovic/awesome-c (rare updates, too vague and sometimes mismatched categories, not very wide selection of content)
- https://github.com/kozross/awesome-c (updated regularly, but has even less content than one above)
- https://github.com/uhub/awesome-c (regular updates, much more content than previous two, but much more of it doesn't even belong to C list. Also, no structure at all)
- AI
- Algoritm Implementations
- Argument Parsing
- Calculations
- Compression
- Concurrency and Parallelism
- Crypto
- Databases
- Data Structures
- Events
- FFI
- Filetype Targets
- Flow Control and Language Extension
- Game Development
- Geography
- GUI
- Hardware Oriented
- Hashing
- Image Processing and Computer Vision
- Integrated Debugging
- I/O
- Lexing and Parsing
- Memory Management
- Multimedia
- Multiple Purpose Libraries
- Networking
- OpenCL
- OS Specifics
- Procedural Generation
- Processes and IPC
- Regex and Search
- Serialization
- Source Code Collections
- Special Purpose Libraries
- Standard Libraries
- String Manipulation
- Testing
- TUI
Build Systems
^
Build Systems
- aimake - Build tool designed to avoid complex configurations.
GPL 3
- Autoconf - Extensible package of M4 macros that produce shell scripts
to automatically configure software source code packages. Part of the
Autotools.
GPL 2
- Automake - Tool for automatically generating
Makefile.in
files compliant with the GNU Coding Standards. Requires the use of Autoconf. Part of the Autotools.GPL 2
- Bazel - Build system for various operating systems and targets.
Apache 2
- Buck - Build system created and used by Facebook.
Apache 2
- CMake - Cross-platform family of tools designed to build, package and
test software. Written in C++11.
BSD 3-Clause
- GNU Make - Tool which controls the generation of executables and
other non-source files of a program.
GPL 3
- jamplus/jamplus - Jamplus is a generic code and data build system
derived from the original Perforce version of Jam.
License
- Libtool - Generic library support script. Part of the Autotools.
GPL 2
- Meson - Build system based on Ninja and Python.
Apache 2
- ninja-build/ninja - Small, simple build system with a focus on speed.
Apache 2
- Premake - Generates project files for Visual Studio, Xcode and GNU
Make. Targets suppport can be extended via modules.
BSD 3-Clause
- Qbs - Modern build tool for software projects.
Licenses
- qmake - Build system included with the Qt Framework.
Licenses
- SCons/scons - Software construction tool based on Python.
License
- gittup/tup - Tup is a file-based build system.
GPL 2
- xmake-io/xmake - Cross-platform build utility based on Lua.
Apache 2
- zeromq/zproject - Project generator and build system support tool
for ZeroMQ project.
MPL 2
- michaelforney/samurai - ninja-compatible build tool written in C.
Licenses
- matricks/bam - Build system with Lua scripting.
License
Compilers
^
Compilers
- rui314/8cc - A Small C Compiler.
MIT
- rui314/9cc - A Small C Compiler.
MIT
- jserv/amacc - Small C Compiler generating ELF executable for Arm
architecture.
GPL 2
- andrewchambers/c - small self hosting C compiler.
BSD 2-Clause
- cc65/cc65 - cc65 - a freeware C compiler for 6502 based systems.
Zlib
- Clang - Compiler for LLVM. Supports C11.
NCSA
- CompCert - Fully-verified C compiler. Supports almost all of C89.
License
- GCC a C compiler as part of its compiler set. Supports C11.
License
- Intel SPMD - Compiler for a variant of the C language, for single
program, multiple data programming.
License
- PCC - Venerable compiler. Supports C99.
Licenses
- larmel/lacc - A simple, self-hosting C compiler.
MIT
- drh/lcc - The lcc retargetable ANSI C compiler.
License
- TCC - Tiny C Compiler; a small, fast C compiler. Supports C99 (except
complex types).
LGPL 2.1
- alexfru/SmallerC - Simple C compiler.
License
- michaelforney/cproc - C11 compiler for unix-like systems.
License
Debugging and Analysis
^
Debugging and Analysis
- C-Reduce - Tool that takes a large C file with a property of interest
and automatically produces a much smaller C file that has the same property.
Intended to help create minimal bug-demonstrating cases in complex code.
License
- CBMC - C Bounded Model Checker; a tool for verification of array
bounds, pointer safety and user-specified assertions.
License
- cgdb/cgdb - Console front-end to the GNU debugger.
GPL 2
- GNU cflow - Analyzes a collection of source files and prints a graph
charting control flow in the program.
GPL 3
- ClangCheck - Static analysis tool, designed to work with Clang.
NCSA
- GNU Complexity - Tool for measuring the complexity of source code.
GPL 3
- Cppcheck - Static analysis tool. Despite the name, works well with C.
GPL 3
- CScout - Source code analyzer and refactoring browser for C programs.
GPL 3
- agl/ctgrind - Checking that functions are constant time with
Valgrind.
No license
- GNU DDD - Graphical front-end for a range of command-line debuggers.
Licenses
- GDB - GNU Project debugger.
Licenses
- lldb - LLVM debugger.
NCSA
- rr - Debugger that records non-deterministic executions to allow for
deterministic debugging.
License
- SVF-tools/SVF - Pointer Analysis and Program Dependence Analysis for
C and C++ Programs.
License
- Valgrind - Range of dynamic analysis tools, including a leak
checker.
GPL 2
Documentation Generation
^
Documentation Generation
- Cxref - Generates documentation in either LaTeX, HTML, RTF or SGML.
GPL 2
- DocOnce - Modestly tagged markup language that can be used to
generate a range of formats.
BSD 3-Clause
- Doxygen - De-facto standard tool for generating documentation from
annotated sources. Can generate a large range of formats.
GPL 2
- GTK-Doc - Tool for generating C documentation from annotated sources.
Has support for the Autotools.
GPL 2
Editors
^
Editors
- Anjuta DevStudio - GNOME IDE.
GPL 2
- Atom - Hackable text editor for the 21st century.
MIT
- Code::Blocks - Extendable, configurable IDE supporting C.
GPL 3
- CodeLite - Cross-platform IDE.
GPL 2
- Eclipse - IDE written in Java.
EPL 2
- Geany - Small and fast IDE.
GPL 2
- KDevelop - KDE IDE.
GPL 2
- Qt Creator - Cross-platform IDE written with C++ and Qt, part of the
Qt SDK. Supports Clang Code Model.
GPL 3 w/ exceptions
- Visual Studio Code - Code editing, redefined. Visual Studio Code.
MIT
Microsoft Windows Environment
^
Microsoft Windows Environment
- Cygwin - Designed to emulate a POSIX-compatible environment
extensively under Windows.
Licenses
- MinGW-w64 - Minimalist environment for C development on Windows with
64 bit support.
Licenses
- MSYS2 - Minimal SYStem 2; aims to provide support for a POSIX
environment on Windows, with a package manager based on Arch Linux's
pacman. Packages have individual licenses, otherwise, as MinGW and Cygwin.
BSD 3-Clause
- reactos - A free Windows-compatible Operating System.
GPL 2
Profiling
^
Profiling
- gperftools - Collection of utilities for measuring and improving
performance.
BSD 3-Clause
- gprof - Performance analysis tool. Part of GNU binutils.
Licenses
- OProfile - Statistical profiler for Linux. Can profile any code
(including the kernel!) with low overhead and without recompilation.
GPL 2
- perf - Linux kernel-based profiler with a lot of functionality.
GPL 2
Text Editor Extensions
^
Text Editor Extensions
- CCompletion - Notepad++ autocompletion plugin. Works with all
identifiers recognized by Ctags. This is a download link. [
GPL 2
] - CEDET - Collection of Emacs Development Environment Tools; designed
to provide IDE-like features to Emacs. Built-in.
GPL 2
- lvzixun/Clang-Complete - an autocomplete plugin for sublimetext3.
No license
- editorconfig-core-c - EditorConfig core library written in C (for
use by plugins supporting EditorConfig parsing).
License
- Flycheck - Modern syntax checking for Emacs. For C, it can use either
GCC or Clang as a back-end.
GPL 3
- AtomLinter/linter-clang - Lint C code in Atom, using Clang.
No license
- hebaishi/linter-gcc - Lint C code in Atom, using GCC.
MIT
- Neomake - make and linting framework for Neovim/Vim.
MIT
- Syntastic - Syntax checking and linting for Vim.
WTFPL
- YASnippet - Emacs code template system, with C templates for common
snippets.
EPLA
- YouCompleteMe - Code completion engine for Vim.
GPL 3
Utilities
^
Utilities
- Artistic Style - Fast and small automatic source code formatter that
supports C.
MIT
- biicode - Dependency manager.
MIT
- ryanmjacobs/c - Compile and execute C "scripts" in one go on the
command line. Also has shebang support.
MIT
- libav/c99-to-c89 - Tool to convert C99 code to MSVC-compatible C89.
Apache 2
- RhysU/c99sh - Run C files using hash-bang.
BSD 2-Clause
- aquynh/capstone - Dissasembly/disassembler framework.
BSD 3-clause
- ccache - Compiler cache designed to speed up recompilation.
GPL 3
- cdecl - Online service to translate C declarations into English and
vice versa. [
Public domain
] - cinclude2dot - Graphs include dependencies in a project using
Graphviz.
GPL
- jbremer/darm - A light-weight and efficient disassembler written in
C for the ARMv7 instruction set.
BSD 3-Clause
- jacob-carlborg/dstep - A tool for converting C and Objective-C
headers to D modules.
Boost
- anael-seghezzi/CToy - Interactive C coding environment.
License
- distcc - Program that allows builds to be distributed among several
machines.
GPL 3
- GNU Global - Source code tagging tool.
GPL 3
- GPP - General-purpose preprocessor. More versatile than the C
preprocessor, but more flexible than m4.
LGPL 3
- Highlight - Converts source code to formatted text with
highlighting.
GPL 3
- include-what-you-use - Helps find unecessary inclusions and make
suggestions for fixing them. Based on LLVM/Clang (and only works with it).
License
- GNU indent - Formats C source code automatically to make it easier
to read. Also converts from one style of source to another.
GPL 3
- m-schmoock/lcpp - A Lua C PreProcessor.
MIT
- mcpp - Portable C preprocessor.
2-clause BSD
- jimenezrick/patch-AuthenticAMD - Utility for patching binaries
generated by the Intel Compiler to get the maximum performance on AMD CPUs.
GPL 3
- radare2 - unix-like reverse engineering framework and commandline
tools security.
LGPL 3
- buserror/simavr - simavr is a lean, mean and hackable AVR simulator
for linux & OSX.
GPL 3
- SMACK - Modular software verification toolchain and a
self-contained software verifier. Currently only works with programs compiled
using Clang.
License
- sickill/stderred - stderr in red.
License
- ggreer/the_silver_searcher - A code-searching tool similar to ack,
but faster.
Apache 2
- unifdef - Removes #ifdef and #if directives with their delimited
text without touching any other part of the file.
Licenses
Books
^
Books
- C in a Nushell 2E - Concise reference book for C11.
- C Pocket Reference - Concise reference book for C99.
- C: A Reference Manual 5E - Full reference book for C99.
- SEI CERT C Coding Standard - Coding recommendations from CERT.
- The C Programming Language 2E - Original book on C, by its creators.
- C Primer Plus 6E - Complete tutorial on programming in C11.
- C Programming: A Modern Approach - Book to learn the basics of C.
- Head First C - 'Head-first' style book for learning C.
- The GNU C Programming Tutorial - Beware, GNU C is not standard C. (PDF)
- 21st Century C - Programming book on C that touches tooling subject.
- Understanding and Using C Pointers - In-depth book on pointers in C.
- Algorithms in C, Parts 1-4: Fundamentals, Data Structures, Sorting, Searching
- C Interfaces and Implementations: Techniques for Creating Reusable Software
- The Standard C Library
- Let Us C
- C Programming FAQs: Frequently Asked Questions
- OpenGL SuperBible
- OpenGL Insights
- Effective C: An Introduction to Professional C Programming
- Expert C Programming: Deep C Secrets - Interesting, in-depth and entertaining look at the innards of C.
- Pointers on C
- The C Puzzle Book
Benchmarks
^
Benchmarks
- Benchmarks of the Lockless Memory Allocator
- Comparison of C/POSIX standard library implementations for Linux - A bit outdated, but shows overall tendencies
- Finding the best 64-bit simulation PRNG
- rxin/db-benchmarks - Collection of some database benchmarks, along with tools to parallelize the data generation.
Beginner Level
^
Beginner Level
Intermediate Level
^
Intermediate Level
- A comprehensive MPI tutorial resource
- Diving into concurrency: trying out mutexes and atomics
- Generic C reference counting
- How to write portable C without complicating your build
- Scalable C - Writing Large-Scale Distributed C
- 8 gdb tricks you should know
- 10 C99 tricks
- Introduction to OpenMP (video)
- OpenMP tutorial
- memcpy vs memmove
- MPI tutorial
- Some unknown features or tricks in C language
- The lost art of C structure packing
- What a C programmer should know about memory
- What every C programmer should know about undefined behaviour
- arjun024/hide-data-in-ptr - how to hide data inside pointers
- OpenGL Book
- Autotools Tutorial (PDF)
- C FAQ - comp.lang.c Frequently Asked Questions
- Akagi201/learning-cmake - CMake examples
- Let's build a database
- nikhilm/uvbook - An Introduction to libuv
- The ``Clockwise/Spiral Rule''
Advanced Level
^
Advanced Level
- Advanced metaprogramming in C
- Quick tutorial on implementing and debugging malloc, free, calloc, and realloc
- Bit twiddling hacks
- I do not know C
- Implementing smart pointers for the C programming language
- Inline functions in C
- Metaprogramming custom control structures in C
- Some dark corners of C (Presentation)
- Writing efficient C and C code optimization
- What every programmer should know about memory (PDF)
- Learn libuv
- Let's build a compiler
- Write a compiler
Operating Systems
^
Operating Systems
- Plan 9 - OS from Bell Labs.
- ChibiOS - RTOS with development environment.
- EtchedPixels/FUZIX - Superior rehaul of UZI.
- Harvey-OS/harvey - An OS based on Plan 9.
- SilverRainZ/OS67 - An Unix-like toy kernel.
- RIOT-OS/RIOT - OS for IoT.
- arjun024/mkernel - Very basic kernel.
- Stichting-MINIX-Research-Foundation/minix - MINIX3.
- guilleiguaran/xv6 - Mirror for Xv6 operating system.
- raphydaphy/Q-Operating-System - Ambitious and abandoned OS designed for 64-bit CPUs.
- seL4/seL4 - Microkernel aimed to be secure and correct.
- klange/toaruos - Desktop OS with userspace, written from scratch.
- nickbjohnson4224/rhombus - OS with libc and some drivers ready.
- rswier/swieros - Kernel, compiler and userland.
- jbangert/trapcc - Example of using Intel instruction execution gimick.
- mbedmicro/mbed - OS for ARM Cortex-M.
Emulators, VMs
^
Emulators, VMs
- CTurt/Cinoop - Multiplatform Game Boy emulator.
- LIJI32/SameBoy - Game Boy and Game Boy Color emulator written in C.
- MoarVM - A VM with adaptive optimization and JIT compilation, built for Rakudo Perl 6.
- felixangell/mac - Virtual machine in c.
- jakogut/tinyvm - TinyVM is a small, fast, lightweight virtual machine written in pure ANSI C.
- rsms/sol - A sunny little virtual machine.
- mgba - mGBA Game Boy Advance Emulator.
- tekknolagi/carp - Well documented VM written from scratch.
- reicast/reicast-emulator - Multiplatform Sega Dreamcast emulator.
- haldean/x6502 - 6502 emulator that one day dreams of being an Atari 2600.
- n64dev/cen64 - Cycle-Accurate Nintendo 64 Emulator.
- wkoszek/cpu60 - Example of CPU simulation in software.
- swetland/dcpu16 - Virtual Machine and Assembler for Notch's DCPU-16 Architecture.
- AlexAltea/orbital - PS4 emulator.
- superzazu/8080 - Intel 8080 emulator.
UI, Windowing, Graphics
^
UI, Windowing, Graphics
- LemonBoy/bar - A featherweight bar based on xcb.
- HarveyHunt/howm - A lightweight, X11 tiling window manager that behaves like vim.
- chneukirchen/cwm - portable version of OpenBSD's cwm(1) window manager.
- mil/foo-wm - A minimal window manager that organizes windows in a tree data structure, provides a socket to send commands to, and nothing more.
- pyknite/catwm - catwm is a very simple tiling window manager.
- jordansissel/xdotool - fake keyboard/mouse input, window management, and more.
- muennich/sxiv - Simple X Image Viewer.
- island-org/island - Lightweight and low-level creative coding toolkits in C.
- robm/dzen - Dzen is a general purpose messaging, notification and menuing program for X11.
- McNopper/OpenGL - OpenGL 3 and 4 with GLSL.
- superjer/tinyc.games - Tiny C games you can compile and run.
- DanteFalzone0/physics - An simple, interactive physics simulation.
Language Implementations
^
Language Implementations
- Fedjmike/mini-c - Dr Strangehack, or: how to write a self-hosting C compiler in 10 hours.
- HuoLanguage/huo - Interpreted language written in C.
- Wilfred/babyc - A toy C compiler.
- dimkr/szl - A lightweight, embeddable scripting language.
- espruino/Espruino - The Espruino JavaScript interpreter.
- fabianishere/brainfuck - Brainfuck interpreter written in C.
- feeley/gambit - Gambit is an efficient implementation of the Scheme programming language.
- wren-lang/wren - The Wren Programming Language.
- cksystemsteaching/selfie - An educational software system of a tiny self-compiling C compiler, a tiny self-executing RISC-V emulator, and a tiny self-hosting RISC-V hypervisor.
- darius/ichbins - A tiny self-hosting Lisp-to-C compiler.
- fragglet/yoctolisp - Tiny Scheme-like Lisp interpreter written in a weekend.
- marcobambini/gravity - Gravity Programming Language.
- justinmeza/lci - A LOLCODE interpreter written in C.
- mruby/mruby - Lightweight Ruby.
- stevedekorte/io - Io programming language.
- philburk/pforth - Portable Forth in C.
- carld/micro-lisp - A very small Lisp programming language that used to be under 200 lines of C.
- kevinlawler/kona - Open-source implementation of the K programming language.
- ndreynolds/flathead - A toy JavaScript interpreter written in C.
- bl0ckeduser/new-bpf-tools - Subset-of-C compiler targeting 32-bit x86.
- intellectualheaven/ceed - A tiny x86 compiler with ELF and PE target.
- janet-lang/janet - A dynamic language and bytecode vm.
- jnz/q3vm - Q3VM - Embeddable bytecode virtual machine/interpreter for C-language input.
- tj/luna - luna programming language - a small, elegant VM implemented in C.
- rui314/minilisp - A readable lisp in less than 1k lines of C.
- rebol/rebol - Source code for the Rebol interpreter.
- mortdeus/legacy-cc - The earliest versions of the very first c compiler known to exist in the wild written by the late legend himself dmr.
- paladin-t/my_basic - Lightweight BASIC interpreter written in standard C in dual files. Aimed to be embeddable, extendable and portable.
- pikelang/Pike - Pike is a dynamic programming language with a syntax similar to Java and C. It is simple to learn, does not require long compilation passes and has powerful built-in data types allowing simple and really fast data manipulation.
- riolet/rix - Rix language combines the power of C language and the convenience of a high level language.
- lotabout/write-a-C-interpreter - Write a simple interpreter of C. Inspired by c4 and largely based on it.
- nickdesaulniers/bf_interpreter_jit_compiler - Teach myself about interpreters, JITs, and compilers using the Brainfuck language as the toy language.
- skx/simple.vm - Simple virtual machine which inteprets bytecode.
Challenges
^
Challenges
- trailofbits/cb-multios - DARPA Challenges Sets for Linux, Windows, and macOS.
- FreddieV4/DailyProgrammerChallenges - External Repo of Challenges from r/dailyprogrammer.
- Coderbyte challenges
- Project Euler
- HackerRank
- CodeChef
- CodeWars
- Codingame
- /r/DailyProgrammer
- leetcode
- eatnumber1/goal - g()()()()('al') → "gooooal"
Other Examples
^
Other Examples
- MinhasKamal/CreepyCodeCollection - A Nonsense Collection of Disgusting Codes.
- Visgean/Zeus - Zeus trojan horse - leaked in 2011.
- andreafabrizi/prism - PRISM is an user space stealth reverse shell backdoor, written in pure C.
- brenns10/lsh - Simple shell implementation.
- jeff-1amstudios/restful-doom - HTTP+JSON API hosted inside the 1993 DOOM engine!
- chelyaev/ffmpeg-tutorial - A set of tutorials that demonstrates how to write a video player based on FFmpeg.
- rcr/rirc - A terminal IRC client in C.
- xoreaxeaxeax/movfuscator - The single instruction C compiler.
- deadbits/InsecureProgramming - Mirror of insecure programming examples.
- irssi/irssi - The client of the future.
- xorg62/tty-clock - Clock using lib ncurses.
- vanhauser-thc/thc-hydra - Hydra.
- posva/catimg - Fast image printing in your terminal.
- pkieltyka/stash - Steganography application that hides data within a bitmap image.
- regehr/ub-canaries - Collection of C/C++ programs that try to get compilers to exploit undefined behavior.
- tnightingale/DTE - Dumb Terminal Emulator - Data Comm, COMP 3980.
AI
^
AI
Neural nets, machine learning, pattern recognition etc.
- cjac/cmusphinx - CMU Sphinx - Speech Recognition Toolkit.
Licenses
- 100/Cranium - A portable, header-only, artificial neural network
library written in C99.
MIT
- pjreddie/darknet - Convolutional Neural Networks.
License
- TheWeatherChannel/dClass - Device Classification Engine.
Apache 2
- 2hanson/DecisionTree - Decision Tree.
MIT
- yusugomori/DeepLearning - Deep Learning (several languages, C
included).
MIT
- encog/encog-c - C implementation of Encog - machine learning
framework for Java/C#.
No license
- codeplea/genann - simple neural network library in ANSI C.
Zlib
- attractivechaos/kann - Two-file ANN library.
MIT
- Blei-Lab/lda-c - This is a C implementation of variational EM for
latent Dirichlet allocation (LDA), a topic model for text or other discrete
data.
LGPL 2.1
- jppbsi/LibDEEP - Deep learning library.
No license
- H2CO3/libsprec - C library for speech recognition using the Google
Speech API.
License
- robwhess/opensift - Open-Source SIFT Library.
License
- dake/openVP - Voice Print Recognition in C language.
No license
- cmusphinx/pocketsphinx - Lightweight speech recognition engine,
specifically tuned for handheld and mobile devices, though it works equally
well on the desktop.
BSD 2-Clause
- HIPS/Probabilistic-Backpropagation - Implementation in C and Theano
of the method Probabilistic Backpropagation for scalable Bayesian inference in
deep neural networks.
BSD 3-Clause
- GHamrouni/Recommender - A C library for product
recommendations/suggestions using collaborative filtering (CF).
BSD 2-Clause
- ufoym/recursive-bf - A lightweight library for recursive bilateral
filtering.
MIT
- xiph/rnnoise - Recurrent neural network for audio noise reduction.
License
- antirez/shapeme - Evolve images using simulated annealing.
BSD 2-Clause
- symisc/sod - An Embedded Computer Vision & Machine Learning Library
(CPU Optimized & IoT Capable).
GPL 3
- iunderstand/SWE - Learning Semantic Word Embeddings based on
Ordinal Knowledge Constraints.
Apache 2
- glouw/tinn - The tiny neural network library.
MIT
- canyalniz/CNN-Inference-Didactic - A readable CNN Inference
implementation in C.
GPL 3
Algoritm Implementations
^
Algoritm Implementations
Some generic agoritms or ones with no specific attachments.
- dhuertas/AES - AES algorithm implementation in C.
No license
- mischasan/aho-corasick - A-C implementation in "C". Tight-packed
(interleaved) state-transition matrix.
LGPL 3
- davidreynolds/algorithms - A repository of assorted algorithms and
data structures.
No license
- BigZaphod/AStar - C Implementation of the A* Pathfinding Algorithm.
License
- citiususc/BigBWA - Approaching the Burrows-Wheeler Aligner to Big
Data Technologies.
GPL 3
- TheAlgorithms/C - All Algorithms implemented in C
No license
- chaoslawful/ccard-lib - C library for estimating cardinality in
streams for which it is infeasible to store all events in memory.
No license
- agl/curve25519-donna - Implementations of a fast Elliptic-curve
Diffie-Hellman primitive.
License
- aimxhaisse/des - C implementation of DES.
License
- tarequeh/DES - Implementation of Data Encryption Standard in C.
MIT
- blynn/dlx - Implementation of Knuth's Algorithm X, with example
solvers.
GPL 3
- oap/ekf-angles - Extended Kalman Filter for Accelerometer and Gyro
data.
No license
- Cyan4973/FiniteStateEntropy - Finite State Entropy and Huff0.
BSD 2-Clause
- BlackLight/fkmeans - A tiny library in C for managing kmeans
clusterization algorithm over arbitrary data sets, both by manually specifying
the number k of clusters and computing it automatically using Schwarz
criterion.
GPL 3
- kljensen/Gemoda - A generic motif discovery algorithm for
sequential data.
GPL 2
- lacker/ikalman - An iPhone-friendly Kalman filter written in C.
MIT
- tsuraan/Jerasure - C Implementation of Reed-Solomon coding.
License
- jmcejuela/Levenshtein-MySQL-UDF - General Levenshtein algorithm and
k-bounded levenshtein distance in linear time and constant space.
LGPL 3
- CVLearner/Mixture-of-Gaussians - Fit a Gaussian mixture model given
a set of data.
MIT
- richarddurbin/pbwt - Implementation of Positional Burrows-Wheeler
Transform for genetic data.
License
- ntamas/plfit - Fitting power-law distributions to empirical data,
according to the method of Clauset, Shalizi and Newman.
License
- Kevincav/Radix-Sort - Radix Sort with different data types.
MIT
- duckythescientist/obfuscatedLife - Conway's Game of Life in 9 lines
of C.
No license
- kokke/tiny-AES-c - Small portable AES128/192/256 in C.
Unlicense
- kroitor/gjk.c - Gilbert-Johnson-Keerthi (GJK) collision detection
algorithm in 200 lines of clean plain C.
WTFPL
- ai-ku/scode - Sphere embedding (s-code) is a variation of Euclidean
embedding of co-occurence data (code).
MIT
- swenson/sort - Collection of sorting routines, which type-specialize
at compile-time with a user-defined type.
MIT
- msteinbeck/tinyspline - ANSI C library for NURBS, B-Splines, and
Bézier curves with interfaces for C++, C#, D, Java, Lua, Octave, PHP, Python,
R, and Ruby.
MIT
- ferreiradaselva/uastar - Minimal A* implementation.
Zlib
- madler/crcany - CRC calculation library.
Zlib
Argument Parsing
^
Argument Parsing
- cofyc/argparse - Command-line arguments parsing library.
MIT
- clibs/commander - Commander option parser ported to C - simple API,
auto-generated --help.
MIT
- docopt/docopt.c - Implementation of a command-line option parser.
MIT
- clibs/flag - Go-style flag parsing for C.
MIT
- jibsen/parg - A single-file reimplementation of getopt with better
defaults.
License
Calculations and Math
^
Calculations and Math
- b-k/apophenia - Library for statistical and scientific computing.
GPL 2
- fredrik-johansson/arb - Library for arbitrary-precision interval
arithmetic.
LGPL 2.1
- ATLAS - Automatically Tuned Linear Algebra Software.
License
- BLAS - Basic Linear Algebra Subprograms; a set of routines that
provide vector and matrix operations.
License
- Lichtso/CCWT - Complex Continuous Wavelet Transformation.
MIT
- CDFLIB - Library with routines to evaluate cumulative density
functions for a variety of standard probability distributions.
Also can compute one parameter of the CDF given the others.
No license
- ScientificC/cmathl - Pure-C Math library with a great variety of
mathematical functions and CMake build support. Seeks to be close to C89/C90
compliant for portability.
MIT
- Cuba - Library for multidimensional numerical integration.
LGPL
- adis300/fft-c - A high-performance Fourier Transform from netlib's
fftpack; wrapped in a user-friendly format.
MIT
- FFTW - The Fastest Fourier Transform in the West; a
highly-optimized fast Fourier transform routine.
GPL 2
- FLINT - Fast Library for Number Theory; a library supporting
arithmetic with numbers, polynomials, power series and matrices, among others.
LGPL 2.1
- gjrand - Library of random-number generation routines.
GPL 2
- GLPK - GNU Linear Programming Kit; a package designed for solving
large-scale linear programming, mixed integer programming and other related
problems.
GPL 3
- GMP - GNU Multple Precision Arithmetic Library; a library for
arbitrary-precision arithmetic.
Licenses
- GNU MPC - Library for complex number arithmetic.
LGPL 3
- GNU MPFR - Library for arbitrary-precision floating-point
arithmetic.
LGPL 3
- GNU MPRIA - Portable mathematics library for multi-precision
rational interval arithmetic.
GPL 3
- GSL - The GNU Scientific Library; a sophisticated numerical
library.
GPL3
- HdrHistogram/HdrHistogram_c - C port of the HdrHistogram.
License
- igraph- Library for creating and manipulating large graphs.
GPL2
- KISS FFT - Very simple fast Fourier transform library.
BSD
- LAPACKE - C interface to LAPACK.
License
- PARI/GP - Computer algebra system for number theory; includes a
compiler to C.
GLP
- PETSc - Suite of data structures and routines for scalable parallel
solution of scientific applications modelled by partial differential
equations.
License
- PROB - Library that handles various discrete and continuous
probability density functions.
LGPL 3
- PetteriAimonen/libfixmatrix - C library for fixed point matrix,
quaternion and vector calculations.
MIT
- canonizer/libgpuvm - library which simplifies host-GPU data
transfer using userspace pagefault handling.
No license
- libtom/libtommath - LibTomMath is a free open source portable
number theoretic multiple-precision integer library written entirely in C.
Unlicense
- JuliaMath/openlibm - High quality system independent, portable,
open source libm implementation.
License
- imneme/pcg-c - PCG — C Implementation.
Apache 2
- imneme/pcg-c-basic - PCG — Minimal C Implementation.
Apache 2
- libtom/tomsfastmath - TomsFastMath is a fast public domain, open
source, large integer arithmetic library written in portable ISO C.
Licenses
- cvxgrp/scs - C package that solves convex cone problems via
operator splitting.
MIT
- SLEPc - Library for the solution of large, sparse eigenvalue
problems on parallel computers.
BSD 2-Clause
- slim-curve/slim-curve - SLIM Curve: a package for exponential curve
fitting of combined spectral lifetime image data.
GPL 3
- tinyexpr - Tiny recursive-descent parser, compiler and evaluation
engine for simple mathematical expressions.
Zlib
- Yeppp! - Very fast, SIMD-optimized mathematical library.
License
- PetteriAimonen/libfixmath - Cross Platform Fixed Point Maths
Library.
MIT
- datenwolf/linmath.h - Linear math as required for computer graphics.
WTFPL
Compression
^
Compression
- Blosc/bcolz - Fast, multi-threaded, meta-compressor library.
Licenses
- kiyo-masui/bitshuffle - Filter for improving compression of typed
binary data.
License
- google/brotli - Generic lossless compression algorithm based on
LZ77, Huffman coding and 2nd order context modelling.
MIT
- bzip2 - Patent-free, high-quality data compression library.
BSD 4-Clause
- Blosc/c-blosc - A blocking, shuffling and loss-less compression
library that can be faster than memcpy().
Licenses
- clzip - C lzip implementation.
GPL 2
- richox/comprox - An experimental lossless data compression program
with high compression ratio.
BSD 3-Clause
- RoaringBitmap/CRoaring - Roaring bitmaps in C (and C++).
Apache 2
- adnanozsoy/CUDA_Compression - A GPU-based LZSS compression
algorithm, highly tuned for NVIDIA GPGPUs and for streaming data, leveraging
the respective strengths of CPUs and GPUs together.
Apache 2
- centaurean/density - Superfast compression library.
BSD 3-Clause
- gildor2/fast_zlib - Improved zlib, which runs 2 to 10 times faster.
BSD 3-Clause
- Cyan4973/FiniteStateEntropy - Two efficient compression codecs
optimized for modern CPUs.
BSD 2-Clause
- rjsikarwar/gpu_compression - Nine Light weight Schemes to Compress
and Decompress the data of Database Using GPU and also a planer.
No license
- atomicobject/heatshrink - data compression library for
embedded/real-time systems.
ISC
- adamierymenko/huffandpuff - Minimal Huffman encoder and decoder.
Public domain
- libarchive/libarchive - Multi-format archive and compression
library.
Licenses
- nih-at/libzip - A C library for reading, creating, and modifying
zip archives.
BSD 3-Clause
- inikep/lizard - Formerly LZ5. Achieves compression ratios
comparable with zip and zlib at decompression speeds of 1000MB/s and faster.
Licenses
- lz4/lz4 - Extremely Fast Compression algorithm.
Licenses
- lzo - Very fast data compression library.
GPL 2
- richgel999/miniz - Single C source file zlib-replacement library.
License
- moinakg/pcompress - A Parallelized Data Deduplication
and Compression utility.
LGPL 3
- vasi/pixz - Parallel, indexed xz compressor.
BSD 2-Clause
- mist64/pucrunch - pucrunch, an Optimizing Hybrid LZ77 RLE Data
Compression Program for C64/C128/VIC-20/Plus4.
LGPL 2.1
- quicklz - Fast compression library.
Licenses
- Ed-von-Schleck/shoco - Compressor for small text strings.
MIT
- lemire/simdcomp - Simple library for compressing lists of integers
using binary packing. Makes use of SIMD instructions on x86.
BSD 3-Clause
- antirez/smaz - Small strings compression library.
BSD 3-Clause
- andikleen/snappy-c - C port of the snappy compressor.
License
- quixdb/squash - Compression abstraction library, complete with
utilities.
MIT
- powturbo/TurboPFor - Fast integer compression.
GPL 2
- powturbo/TurboRLE - Fastest Run Length Encoding.
GPL 2
- kuba--/zip - A portable, simple zip library written in C.
Unlicense
- madler/zlib - Massively-spiffy yet delicately-unobtrusive
compression library.
Zlib
- zlib-ng/zlib-ng - zlib replacement with optimizations for
"next generation" systems.
Zlib
- facebook/zstd - Fast real-time compression algorithm.
BSD 3-Clause
- jsvennevid/filearchive - File archive library allowing for easy
creation and access to data stored inside a container through a simple API.
MIT
- ariya/FastLZ - Byte-aligned LZ77 compression.
License
Concurrency and Parallelism
^
Concurrency and Parallelism
- yosefk/checkedthreads - A simple library for parallelism, with
built-in checking for race conditions.
BSD 2-Clause
- FCFS RWLock - First-come first-served Readers/Writers lock for POSIX
threads.
Licenses
- sharow/libconcurrent - Concurrent programming library, using
coroutines, for C11.
Zlib
- liburcu - Data synchronization library, which scales linearly with
the number of cores.
LGPL 2.1
- cchan - Small library for channel constructs for inter-thread
communication.
Public Domain
- pmodels/mpich - Another implementation of MPI.
License
- open-mpi/ompi - Message passing interface implementation.
License
- GNU pth - Portable implementation for non-preemptive priority-based
scheduling for multiple threads of execution.
LGPL 2.1
- POSIX threads - The POSIX thread library.
No license
- tinycthread/tinycthread - Portable, small implementation of the C11
threads API.
License
- Pithikos/C-Thread-Pool - A minimal but powerful thread pool in
ANSI C.
MIT
- baruch/libwire - User space threading (aka coroutines) library for
C resembling GoLang and goroutines.
MIT
- bjoernknafla/amp - C portable low-level assemblies for parallelism
and threading.
BSD 3-Clause
- bjoernknafla/peak - Parallelism exploration assembly kit. C toolkit
to experiment with task- and data-parallelism.
BSD 3-Clause
- cloudwu/coroutine - A asymmetric coroutine library for C.
MIT
- concurrencykit/ck - Concurrency primitives, safe memory reclamation
mechanisms and non-blocking (including lock-free) data structures designed to
aid in the research, design and implementation of high performance concurrent
systems developed in C99+.
Licenses
- etmc/lemon - Lemon is an MPI parallel I/O library that is intended
to allow for efficient parallel I/O of both binary and metadata on massively
parallel architectures. Data is stored in the SciDAC Lattice QCD Interchange
Message Encapsulation format, that allows for storing large blocks of binary
data and corresponding metadata in the same file.
GPL 3
- geertj/cgreenlet - Coroutines for C/C++.
MIT
- halayli/lthread - lthread, a multicore enabled coroutine library
written in C.
BSD 2-Clause
- hnes/libaco - A blazing fast and lightweight C asymmetric coroutine
library.
Apache 2
- jtsiomb/c11threads - Trivial C11 threads.h implementation over
POSIX threads.
Public domain
- matianfu/FUNK - a c continuation library inspired by Adam Dunkel's
ProtoThread.
Apache 2
- mbrossard/threadpool - A simple C Thread pool implementation.
BSD 2-Clause
- oneoo/alilua-coevent-module - epoll base coroutine module.
MIT
- ramonza/libcoro - Lightweight C coroutines.
BSD 2-Clause
- sustrik/libdill - Structured concurrency in C.
MIT
- sustrik/libmill - Go-style concurrency in C.
MIT
- stevedekorte/coroutine - C multiplatform coroutine implementation
via ucontext, fibers or setjmp.
No license
- parallella/pal - An optimized C library for math, parallel
processing and data movement.
Apache 2
- danluu/setjmp-longjmp-ucontext-snippets - Implementing coroutines,
channels, message passing, etc.
Apache 2
- Precisamento/cpthreads - Cross Platform (e.g. Windows) support
for C11 threads.
MIT
- shiyanhui/libcsp - Concurrency C library influenced by the CSP
model.
MIT
Cryptography
^
Cryptography
- GNU SASL - Implementation of the Simple Authentication and Security
Layer and few common SASL mechanisms.
Licenses
- aidansteele/sphlib - Set of implementations of various hash
functions, including several cryptographic ones.
MIT
- GnuTLS - Secure communication library, implementing SSL, TLS and
DTLS.
LGPL 2.1
- libgcrypt - General-purpose cryptography library, with a range of
available ciphers.
Licenses
- OpenSSL - Implementation of the SSL and TLS protocols, and also
includes a cryptography library.
Licenses
- jedisct1/libsodium - A modern, portable and easy to use crypto
library.
ISC
- ARMmbed/mbedtls - An open source, portable, easy to use, readable
and flexible SSL library.
License
- B-Con/crypto-algorithms - Basic implementations of standard
cryptography algorithms, like AES and SHA-1.
No license
- WickrInc/wickr-crypto-c - An implementation of the Wickr Secure
Messaging Protocol in C.
License
- ashwinraghav/Parallel_Open_SSL - Use your idle GPU to encrypt your
data. Give your CPU some breathing time!
Licenses
- awslabs/s2n - s2n : an implementation of the TLS/SSL protocols.
Apache 2
- bitcoin-core/secp256k1 - Optimized C library for EC operations on
curve secp256k1.
MIT
- cloudflare/keyless - CloudFlare's Keyless SSL Server Reference
Implementation.
Agreement
- ctz/cifra - A collection of cryptographic primitives targeted at
embedded use.
License
- cyassl/cyassl - Small, fast, portable implementation of TLS/SSL for
embedded devices to the cloud.
GPL 2
- eduardsui/tlse - Single C file TLS 1.2/1.3 implementation, using
tomcrypt as crypto library.
BSD 2-Clause
- h2o/picotls - TLS 1.3 implementation in C (master supports RFC8446
as well as draft-26, -27, -28).
License
- jedisct1/libhydrogen - A lightweight, secure, easy-to-use crypto
library suitable for constrained environments.
ISC
- libressl-portable/openbsd - LibreSSL source code.
Licenses
- libtom/libtomcrypt - LibTomCrypt is a fairly comprehensive, modular
and portable cryptographic toolkit that provides developers with a vast array
of well known published block ciphers, one-way hash functions, chaining modes,
pseudo-random number generators, public key cryptography and a plethora of
other routines.
Licenses
- maciejczyzewski/retter - A collection of hash functions, ciphers,
tools, libraries, and materials related to cryptography.
No license
- mikeryan/crackle - Crack and decrypt BLE encryption.
BSD 2-Clause
- open-quantum-safe/liboqs - C library for quantum-resistant
cryptographic algorithms.
MIT
- tbuktu/libntru - C Implementation of NTRUEncrypt.
Licenses
- trezor/trezor-crypto - Heavily optimized cryptography
algorithms for embedded devices.
MIT
- droe/sslsplit - Transparent SSL/TLS interception.
BSD 2-Clause
- orlp/ed25519 - Portable C implementation of Ed25519, a high-speed
high-security public-key signature system.
Zlib
- wolfSSL/wolfssl - wolfSSL (formerly CyaSSL) is a small, fast,
portable implementation of TLS/SSL for embedded devices to the cloud.
GPL 2
- rg3/bcrypt - bcrypt password hash C library.
License
- LoupVaillant/Monocypher - An easy to use, easy to deploy crypto
library.
Licenses
- tombonner/blowfish-api - Blowfish block cipher implementation.
License
Databases
^
Databases
- priitj/whitedb - Lightweight database library, operating entirely in
main memory.
GPL 3
- mongodb/mongo-c-driver - High-performance client library for
MongoDB.
Apache 2
- SQLite - Self-contained, serverless, zero-configuration,
transactional SQL database engine with a C interface.
Public domain
- symisc/unqlite - Self-contained, serverless, zero-configuration,
transactional NoSQL engine with a C interface.
License
- Akash91/CoSQL - A Co-Relational Key-Value Data Store.
No license
- GNOME/libgda - Libgda is a (relatively small) database access
library.
GPL 2
- Softmotions/ejdb - EJDB — Embeddable JSON Database engine.
MIT
- aerospike/aerospike-client-c - Aerospike C Client.
License
- bcmpinc/dagdb - small database for storing semi-structured data.
GPL 3
- maciejczyzewski/hashbase - A fast, efficient on-disk/in-memory
database with many different kind of data structures.
MIT
- maxmind/libmaxminddb - C library for the MaxMind DB file format.
Apache 2
- pmwkaa/sophia - modern emeddable key-value database.
License
- redis/hiredis - Minimalistic C client for Redis.
BSD 3-Clause
- seppo0010/rlite - self-contained, serverless, zero-configuration,
transactional redis-compatible database engine. rlite is to Redis what SQLite
is to SQL.
BSD 2-Clause
- sqlcipher/sqlcipher - SQLCipher is an SQLite extension that
provides 256 bit AES encryption of database files.
License
- tglman/orientdb-c - The C client of OrientDB.
No license
- spotify/sparkey - Simple constant key/value storage library, for
read-heavy systems with infrequent large bulk inserts.
Apache 2
- vrogier/ocilib - Open source C and C++ library for accessing
Oracle databases.
Apache 2
- symisc/vedis - An Embedded Implementation of Redis.
License
- orca-zhang/influxdb-c - C write client for InfluxDB.
MIT
- t3rm1n4l/lightkv - Key-value data storage.
No license
Data Structures and Types
^
Data Structures and Types
- recp/ds - Common Data Structures and Algorithms.
MIT
- P-p-H-d/mlib - Library for generic, but typesafe C containers.
Implemented as header-only.
BSD 2-Clause
- libsrt - Soft and hard real-time data structures.
BSD 3-Clause
- nbulischeck/list.h - Implementations for single- and double-linked
list functions.
GPL 3
- gpakosz/PackedArray - Random-access array of tightly packed unsigned
integers of any desired width. Has a SIMD-optimized implementation.
WTFPL
- swenson/vector.h - Header library for typed lists.
MIT
- 20centaurifux/datatypes - A collection of various datatypes in C
(linked lists, stack, queue, red-black tree and hash table).
GPL 3
- ClickerMonkey/CDSL - A data structure library written in C.
License
- Incarnation-p-lee/libds - Unified data structure implementation
library of C.
GPL 2
- LPD-EPFL/ASCYLIB - Concurrent-search data-structure library with
over 30 implementantions of linked lists, hash tables, skip lists, and binary
search trees.
GPL 2
- MichaelJWelsh/cdsa - A library of generic intrusive data structures
and algorithms in ANSI C.
ISC
- ZSShen/C-Common-Data-Structures - Uniform C APIs for data structure
manipulation.
No license
- agl/critbit - Critbit trees in C.
No license
- antirez/rax - A radix tree implementation in ANSI C.
BSD 2-Clause
- armon/libart - Adaptive Radix Trees implemented in C.
BSD 3-Clause
- ashinkarov/trie - Simple implementation of trie data structure.
License
- bcopeland/em_misc - External memory data structure playground.
No license
- begeekmyfriend/bplustree - A minimal but extreme fast B+ tree
indexing structure demo for billions of key-value storage.
MIT
- chrismoos/hash-ring - C hash ring library.
Apache 2
- chriso/bitset - A compressed bitset with supporting data structures
and algorithms.
LGPL
- codeprepper/data-structures - Arrays, linked lists, stacks and
queues.
MIT
- dminor/skip-quadtree - Implementation of the skip quadtree and
compressed quadtree data structures.
License
- douglascrockford/DEC64 - Decimal floating point.
No license
- fmela/libdict - C library of key-value data structures with an
object-oriented interface.
BSD 2-Clause
- fragglet/c-algorithms - A library of common data structures and
algorithms written in C.
ISC
- gnudennis/ds_c - Data Structure In C.
No license
- graphitemaster/libintrusive - Intrusive data structures for C.
Unlicense
- grundprinzip/bitcompressedvector - Provide a container for integral
data types that applies light-weight bit compression.
License
- hacatu/haclib - A utility library providing data types C should
have been made with such as vectors and sequences, mostly as macros.
MPL 2
- hyPiRion/c-rrb - RRB-tree implemented as a library in C.
MIT
- hyPiRion/roulette-tree - Data structure for efficient
fitness-proportionate selection.
MIT
- jarun/dslib - A library of handy data structures.
GPL 3
- johnj/llds - Low-Level Data Structure - efficient data structures,
and fast data access in the 2.6/3.0 kernel.
License
- jtsiomb/kdtree - A simple C library for working with KD-Trees.
License
- jvirkki/libbloom - A simple and small bloom filter implementation
in plain C.
BSD 2-Clause
- ksheedlo/kmdata - Data structures for C programmers, by
C programmers.
No license
- louiswins/RB-Tree - An implementation of the Red-Black Tree data
structure.
No license
- livioso/datastructures-in-C - Implementation of a some data
structures in C for educational purposes.
No license
- malbrain/Btree-source-code - A working project for High-concurrency
B-tree source code in C.
License
- michaeltyson/TPCircularBuffer - A simple, fast circular buffer
implementation.
License
- mikedlowis/data-structures - A collection of data structures
implemented in C to be included in multiple projects.
BSD 2-Clause
- naraing/dsLib - An algorithm library with core data-sttructures and
common algortihm implementations on those data structures.
GPL 3
- noporpoise/BitArray - C bit array structs and methods.
License
- orangejulius/cs_fundamentals - simple implementations of common
data structures/algorithms.
GPL 3
- paulasmuth/libsmatrix - thread-safe sparse matrix data structure.
MIT
- pcdavid/data-structures - Sample implementations of classical data
structures in C.
WTFPL
- petewarden/c_hashmap - A simple string hashmap in C.
Public domain
- rxi/map - A type-safe hash map implementation for C.
MIT
- rxi/vec - A type-safe dynamic array implementation for C.
MIT
- siganakis/tny - Tiny data structures that pack a punch!
License
- srdja/Collections-C - A library of generic data structures.
LGPL 3
- steven-schronk/C-Data-Structures - Collection of basic data
structures in C.
GPL 3
- wasabiz/xrope - rope data structure.
No license
- torch/tds - Torch C data structures.
License
- watmough/jwHash - Simple hash table implementation for C.
Apache 2
- zhemao/libds - Simple, memory-safe data-structures in C.
MIT
- willemt/cbuffer - A circular buffer written in C using Posix calls
to create a contiguously mapped memory space.
License
- xant/libhl - Simple and fast C library implementing a thread-safe
API to manage hash-tables, linked lists, lock-free ring buffers and queues.
LGPL 3
- yuyuyu101/C-Buffered-tree - A buffered-tree implemented in
dictionary type and more.
MIT
- MagerValp/AsmHeap - Heap data structure in 6502 assembler.
No license
- Snaipe/libcsptr - Smart pointers in C.
MIT
- C-Macro-Collections - Generate simple and generic data structures
using macros.
MIT
- troydhanson/uthash - C macros for hash tables and more.
License
- begeekmyfriend/CuckooFilter - Substitute for bloom filter.
License
- bitly/dablooms - Scaling, counting, bloom filter library.
MIT
- krglaws/KyleStructs - Simple data structures written for
educational purposes.
No license
- armon/c-minheap-array - Implements a Min-Heap / Priority Queue
in C using a simple array.
BSD 3-Clause
- jstimpfle/rb3ptr - Red-black tree in C.
License
Events
^
Events
- libev - Yet another event loop.
BSD 2-Clause
- libevent - Event loop replacement for network servers.
BSD 3-Clause
- Lupus/libevfibers - Small C fiber library that uses libev based event loop and libcoro based coroutine context switching.
Apache 2
- facebook/libphenom - An eventing framework for building high performance and high scalability systems in C.
Apache 2
- libuv/libuv - Cross-platform asychronous I/O.
Licenses
- ithewei/libhv - Event-loop with non-blocking IO and timer.
BSD 3-Clause
Foreign Function Interfaces
^
Foreign Function Interfaces
- GNU Libffcall - Collection of libraries for building foreign
function interfaces.
GPL 3
- dyncall - Another foreign function interface library.
License
- atgreen/libffi - A portable foreign-function interface library.
License
- dyu/ffi-overhead - comparing the c ffi overhead on various
programming languages.
Apache 2
- jmckaskill/luaffi - Standalone FFI library for calling C functions
from lua. Compatible with the luajit FFI interface.
License
- taviso/ctypes.sh - A foreign function interface for bash.
MIT
Libraries for working with specific filetypes or classes of filetypes.
╠════ Binaries
^
Binaries
- bfd - Library for manipulating binary object files. Part of GNU
binutils.
Licenses
- 0intro/libelf - Simple library for parsing ELF files.
MIT
- fuzxxl/memf - Portable scanf/printf-like functions to marshal
binary data.
BSD 2-Clause
- nicklockwood/FastCoding - A faster and more flexible binary file
format replacement for NSCoding, Property Lists and JSON.
License
- abiggerhammer/hammer - Parser combinators for binary formats.
GPL 2
╠════ CSV
^
CSV
- rgamble/libcsv - Simple, streaming CSV parser.
LGPL 2.1
- tadasv/csv_parser - Callback based (SAX like) CSV Parser for C.
MIT
╠════ HTML
^
HTML
- lexborisov/Modest - Modest is a fast HTML renderer implemented as a
pure C99 library with no outside dependencies.
LGPL 2.1
- lexborisov/myhtml - Fast C/C++ HTML 5 Parser. Using threads.
LGPL 2.1
- htacg/tidy-html5 - The granddaddy of HTML tools, with support for
modern standards.
License
- google/gumbo-parser - HTML5 parsing library in C99.
Apache 2
╠════ JSON
^
JSON
- NeonMercury/jfes - JSON For Embedded Systems; simple JSON engine
without any dependencies.
MIT
- zserge/jsmn - Minimalistic JSON parser.
MIT
- netmail-open/wjelement - Advanced JSON manipulation library, with
support for JSON Schema.
Licenses
- DaveGamble/cJSON - Ultralightweight JSON parser in ANSI C.
MIT
- akheron/jansson - C library for encoding, decoding and manipulating
JSON data.
MIT
- armink/struct2json - A fast convert library between the JSON and C
structure. Implement structure serialization and deserialization for C.
MIT
- cesanta/frozen - JSON parser and generator for C/C++ with
scanf/printf like interface. Targeting embedded systems.
Apache 2
- cloudflare/lua-resty-json - JSON library for Lua and C.
BSD 2-Clause
- json-c/json-c - Official code repository for json-c.
License
- keenerd/jshon - JSON parser designed for maximum convenience within
the shell.
MIT
- kgabis/parson - Lightweight JSON library written in C.
MIT
- kevinbirch/kanabo - Query JSON/YAML data with JSONPath.
License
- lloyd/yajl - A fast streaming JSON parsing library in C.
ISC
- orangeduck/json2c - Convert JSON to C data literals.
BSD 3-Clause
- quartzjer/js0n - Flexible Zero-Footprint JSON Parser in C.
Unlicense
- sheredom/json.h - JSON parser for C and C++.
Unlicense
- vincenthz/libjson - JSON parser and printer library in C. Easy to
integrate with any model.
License
- udp/json-parser - Very low footprint JSON parser written in
portable ANSI.
License
- garnetius/jsong - Faster than light streaming JSON & USON parser
and writer with rich and trivial to use API plus SSE optimizations.
BSD 2-Clause
- recp/json - Parses JSON files into DOM-like data structures.
MIT
- mjansson/json - Single header JSON/SJSON parser.
Unlicense
╠════ INI
^
INI
- ndevilla/iniparser - Parser for .ini files.
MIT
- madmurphy/libconfini - Yet another INI parser.
GPL 3
- benhoyt/inih - Simple .INI file parser in C, good for embedded
systems.
License
- LloydLabs/librini - Tiny, non-libc dependant, .ini file parser
programmed from scratch in C99.
MIT
- compuphase/minIni - A small and portable INI file library with
read/write support.
Apache 2
╠════ Markdown
^
Markdown
- hoedown/hoedown - Fully standards-compliant, extension-supporting,
UTF-8 aware, fast Markdown parser.
ISC
- commonmark/cmark - Library for parsing the CommonMark dialect of
Markdown.
License
- Orc/discount- My C implementation of John Gruber's Markdown markup
language.
License
- commonsguy/cwac-anddown - CWAC AndDown: Markdown Utility Library.
Apache 2
- fletcher/MultiMarkdown-6 - Lightweight markup processor to produce
HTML, LaTeX, and more.
License
- jgm/peg-markdown - An implementation of markdown in C, using a
PEG grammar.
Licenses
- vmg/sundown - Standards compliant, fast, secure markdown processing
library in C.
License
╠════ XML
^
XML
- libexpat/libexpat - Stream-oriented XML parser.
License
- libxml2 - Standards-compliant, portable XML parser.
MIT
- michaelrsweet/mxml - Small XML reading and writing library.
No dependencies aside from C standard library.
Apache 2
- ooxi/xml.c - Simple XML subset parser comparable to glib's Markup
parser.
License
- bakulf/libmrss - C library for parsing, writing and creating RSS
files or streams.
LGPL 2.1
- mmuszkow/librss - RSS and ATOM parsing library.
No license
- bakulf/libnxml - Library for parsing, writing and creating XML 1.0
and 1.1 documents.
LGPL 2.1
- anton/rss_aggregator - Feed reader lib written in C with use of
libxml2 and utlist.
No license
╚════ Other Filetypes
^
Other Filetypes
- yaml/libyaml - Canonical source repository for LibYAML.
MIT
- mongodb/libbson - BSON utility library.
Apache 2
- martinh/libconfuse - Small configuration file parser library.
ISC
- vstakhov/libucl - Universal configuration library parser.
BSD 2-Clause
- Juniper/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.
BSD 2-Clause
- brechtsanders/xlsxio - Cross-platform library for reading and
writing .xlsx files.
MIT
- arrbee/diff-match-patch-c - C language port of
google-diff-match-patch library.
License
- hyperrealm/libconfig - C/C++ library for processing configuration
files.
LGPL 2.1
- jedwing/CHMLib - Library for reading Microsoft ITSS/CHM format
files.
LGPL 2.1
- jmcnamara/libxlsxwriter - A C library for creating
Excel XLSX files.
License
- libharu/libharu - Free PDF library.
Zlib
- samtools/htslib - C library for high-throughput sequencing data
formats.
License
- vmg/houdini - API for escaping text for the web.
MIT
- trumpowen/MegaMimes - A C mime type library
MIT
Flow Control and Language Extension
^
Flow Control and Language Extension
- orangeduck/Cello - Library introducing higher-level
programming to C.
BSD 2-Clause
- Ragel - DSL for state machines that compiles to C.
License
- kitsune-dsu/kitsune-core - Efficient, general-purpose framework for
dynamic software updating.
License
- P99 - Suite of macros to implement advanced features like default
function arguments, scope-bound resources, etc.
License
- CObjectSystem/COS - C Object System.
Apache 2
- H2CO3/Sparkling - Lightweight extension language.
BSD 2-Clause
- lua/lua - Embeddable scripting programming language.
License
- Zeex/subhook - Simple hooking library for C/C++
(x86 only, 32/64-bit, no dependencies).
BSD 2-Clause
- arnaudbrejeon/cspec - Behavior driven development in C.
GPL 3
- comex/substitute - A free runtime modification library.
License
- elua/elua - Highly portable version of Lua.
License
- eudoxia0/magma - Extending C with cmacro.
License
- graphitemaster/lambdapp - Anonymous functions in C.
Unlicense
- guillermocalvo/exceptions4c - Exception handling framework for C.
LGPL 3
- orangeduck/LuaAutoC - Automagically use C Functions and Structs
with the Lua API.
License
- pfultz2/Cloak - A mini-preprocessor library to demostrate the
recursive capabilites of the preprocessor.
Boost
- skeeto/interactive-c-demo - Demonstration of interactive
C programming.
Unlicense
- symisc/PH7 - An Embedded Implementation of PHP (C Library).
License
- yasm/yasm - Provides libyasm - embeddable YASM engine.
License
- zserge/partcl - Micro Tcl implementation.
MIT
- cesanta/mjs - Embedded JavaScript engine for C/C++.
License
- graphitemaster/incbin - Include binary files in C/C++.
Unlicense
- pkrumins/bithacks.h - bithacks.h is a C header file containing
useful bit manipulation macros.
MIT
- breckinloggins/ngtemplate - A template engine written in C designed
to be syntax-compatible with Google CTemplate.
MIT
- ccxvii/mujs - An embeddable Javascript interpreter in C.
ISC
- Microsoft/checkedc - Extension to C that adds checking to detect or
prevent common programming errors such as buffer overruns and out-of-bounds
memory accesses.
MIT
- hexspeakerg/ONLY_ONCE - ONLY_ONCE macro makes it so that the block
of code is only run once across threads.
MIT
- SanderMertens/flecs - An Entity Component System with a dashboard.
MIT
- akeep/scheme-to-c - A small nanopass compiler from a subset of
Scheme to C.
MIT
- takanuva/ANSI-ISO-C-Exception-Handling - Exceptions in C.
LGPL 3
- small-c/obj.h - A single-header support for OOP in pure C.
MIT
- Hirrolot/poica - Features of modern programming languages in plain
C11 implemented via macro system.
MIT
Engines, libraries and other helpful things specifically for making games.
╠════ Game Engines
^
Game Engines
- xonotic/darkplaces - Modified version of the Quake2 engine.
GPL 2
- ioquake/ioq3 - The Quake3 engine, freed at last.
GPL 2
- orx/orx - Portable, lightweight, plugin-based, data-driven,
2D-oriented game engine.
License
- zturtleman/spearmint - Engine designed for FPS games.
GPL 3
- Gigoteur/UnicornConsole - Unicorn Console: create quick game!
MIT
- MarilynDafa/Bulllord-Engine - lightspeed lightweight elegant game
engine in pure c.
MIT
- HerculesWS/Hercules - Creation of a robust massively multiplayer
online role playing game (MMORPG) server package.
GPL 3
- Olde-Skuul/doom3do - The complete archive for DOOM for the 3DO.
MIT
- RandyGaul/AsciiEngine - Game engine written in C to create Ascii
art games within the Windows console.
MIT
- littlewolf - The tiny software graphics and game engine.
MIT
- eduard-permyakov/permafrost-engine - An OpenGL 3.3 RTS game engine
written in C.
GPL 3
- ejoy/ejoy2d - A 2D Graphics Engine for Mobile Game.
MIT
- etlegacy/etlegacy - ET: Legacy is based on the source code of the
Wolfenstein: Enemy Territory which was released under the GPLv3 license.
GPL 3
- fabiensanglard/chocolate_duke3D - chocolate Duke Nukem 3D.
License
- a-nikolaev/curseofwar - A Real Time Strategy game for Linux.
GPL 3
- chocolate-doom/chocolate-doom - Chocolate Doom is a Doom source
port that is minimalist and historically accurate.
GPL 2
- cxong/cdogs-sdl - Classic overhead run-and-gun game.
GPL 2
- fogleman/Craft - A simple Minecraft clone written in C using modern
OpenGL (shaders).
MIT
- id-Software/DOOM - DOOM Open Source Release.
License
- id-Software/Quake-2 - Quake 2 GPL Source Release.
GPL 2
- id-Software/Quake-III-Arena - Quake III Arena GPL Source Release.
GPL 2
- id-Software/Quake - Quake GPL Source Release.
GPL 2
- keendreams/keen - Keen Dreams on Greenlight!
GPL 2
- linleyh/liberation-circuit - Trapped in a hostile computer system,
you must make a way out - RTS/coding game.
GPL 3
- martincohen/Punity - A tiny game engine in C.
MIT
- orangeduck/Corange - Pure C Game Engine.
License
- naev/naev - Naev is a 2d action/rpg space game that combines
elements from the action, rpg and simulation genres.
GPL 3
- nikki93/cgame - some ideas involving games and C.
No license
- scottcgi/Mojoc - A cross-platform, open-source, pure C game engine
for mobile game.
MIT
- septag/darkhammer - darkHAMMER is a lightweight, open-source,
multiplatform game engine. written in C (C99) language, supports python
and C# bindings and lua scripts.
License
- taylor001/crown - The flexible game engine.
MIT
- theunamedguy/market-sim - A retro stock-trading game utilizing
live market data.
GPL 2
- tpoindex/crobots - CROBOTS is a programming game, for programmers
(or aspiring programmers).
GPL 2
- andwn/cave-story-md - A fan port of Cave Story for the
Sega Mega Drive.
License
- angband/angband - A free, single-player roguelike dungeon
exploration game.
License
- nesbox/tic.computer - Public TIC-80 issues tracker.
MIT
- cschied/q2vkpt - Real-time path tracer VKPT integrated into q2pro
Quake 2 client.
GPL 2
- ec-/Quake3e - Improved Quake III Arena engine.
GPL 2
- skullernet/q2pro - Enhanced Quake 2 client and server focused on
multiplayer.
GPL 2
- jdolan/quake2 - Classic Quake II for Mac and Linux.
GPL 2
- nothings/obbg - Block/voxel-based game.
Public domain
- bvschaik/julius - An open source re-implementation of Caesar III.
AGPL 3
- simple2d/simple2d - Simple, open-source 2D graphics for everyone.
MIT
- exezin/exengine - A C99 3D game engine.
MIT
- NightDiveStudios/shockmac - System Shock (PowerMac version Official
GPL Release).
GPL 3
- blinry/gish - Open Source version of the award-winning physics
platformer.
Licenses
- ambethia/aposelene - Experimental 2D Engine in C.
MIT
- klaussilveira/qengine - Retro game engine for developers that enjoy
creating games like it's 1997.
GPL 2
- sebbekarlsson/coelum - Game engine for 2d and 3d written in C.
GPL 3
- bjornbytes/lovr - Virtual Reality Engine.
MIT
- EvilPudding/candle - Game engine based on GLEW and SDL.
MIT
- zauonlok/renderer - Shader-based software renderer in C89 with
minimal dependencies.
MIT
- cdev-tux/q3lite - Quake 3 engine rendered in OpenGL ES.
GPL 3
- kondrak/vkQuake2 - Vulkan Quake 2 implementation.
LGPL 2
╠════ Graphics Rendering
^
Graphics Rendering
Everything related to video rendering only. Also visit awesome-opengl and awesome-vulkan.
- grimfang4/sdl-gpu - Library for high-performance, modern 2D
graphics. Based on SDL.
MIT
- dcnieho/FreeGLUT - Alternative to the OpenGL Utility Toolkit. Allows
the creation and management of windows with OpenGL contexts.
License
- MauriceGit/Cloth_Simulation - Cloth-Visualization via
particle-simulation.
ISC
- MauriceGit/Partikel_accelleration_on_GPU - Particle accelleration
with OpenGL 4.3, using the compute shader to calculate particle movement on
graphics hardware.
ISC
- ands/lightmapper - A C/C++ single-file library for drop-in lightmap
baking. Just use your existing OpenGL renderer to bounce light!
Public domain
- ands/seamoptimizer - A C/C++ single-file library that minimizes the
hard transition errors of disjoint edges in lightmaps.
Public domain
- ebassi/graphene - A thin layer of graphic data types.
MIT
- cacalabs/libcaca - ASCII renderer for terminal-based interfaces.
WTFPL
- OpenGL - Industry adopted 2D and 3D graphics API.
Graphics API
- OpenGL ES - Industry adopted 2D and 3D graphics API for mobile and
embedded devices.
Graphics API
- OpenGL SC - Graphic and compute standard for industry requiring
system safety certification.
Graphics API
- Vulkan - Explicit graphic and compute API for modern cross-platform
development.
Graphics API
- Cairo -2D graphics library.
Licenses
- Cogl - GPU graphics and utilities API.
License
- glfw/glfw - A multi-platform library for OpenGL, OpenGL ES, Vulkan,
window and input.
Zlib
- nigels-com/glew - The OpenGL Extension Wrangler Library.
License
- anoek/ex-sdl-cairo-freetype-harfbuzz - Example code which uses SDL,
cairo, freetype, and harfbuzz to do ttf/otf text layout and rendering.
No license
- ashima/webgl-noise - Procedural Noise Shader Routines compatible
with WebGL.
MIT
- grz0zrg/fbg - Lightweight C 2D graphics API agnostic library with
parallelism support.
BSD 3-Clause
- ileben/ShivaVG - OpenGL based ANSI C implementation of the OpenVG
standard.
LGPL 2.1
- jpbruyere/vkvg - Vulkan vector drawing, try to stay close to
cairo api.
MIT
- memononen/nanovg - Antialiased 2D vector drawing library on top of
OpenGL for UI and visualizations.
Zlib
- micahpearlman/MonkVG - OpenVG 1.1 like vector graphics API
implementation optimized for game use currently using an OpenGL ES backend
that should be compatible with any HW that supports OpenGL ES 2.0 which
includes most iOS and Android devices.
License
- minusinf/opengl_dataviewer - A simple OpenGL xyzw dataviewer.
GPL 3
- rougier/freetype-gl - OpenGL text using one vertex buffer, one
texture and FreeType.
License
- simple2d/simple2d - Simple, open-source 2D graphics for everyone.
MIT
- jakogut/tinyflock - A simple, high-performance, threaded, and
interactive flocking demo written in C with GLFW.
No license
- anholt/libepoxy - Library for handling OpenGL function pointer
management.
License
- felselva/gfw - Pure C Minimal Graphics Framework (OpenGL).
Zlib
- karimnaaji/voxelizer - Header only mesh voxelizer in c99.
MIT
- kbernholm/leloup - All the C functions needed for drawing
solid 3D vector graphics.
MIT
- dr-soft/glbind - Single file OpenGL API loader.
Licenses
- dr-soft/vkbind - Single file Vulkan API loader.
Licenses
- dr-soft/minidraw - Single file 2D graphics library written in C.
Licenses
- glouw/gel - N64-like software renderer.
MIT
╚════ Gamedev Helping Libraries
^
Gamedev Helping Libraries
- sigil - Sound, Input and Graphics Integration Library; a simple
alternative to other libraries for doing all those things. Various licenses,
all open source.
Licenses
- SFML/CSFML - Binding for SFML in C.
License
- SDL - Cross-platform development library designed to provide
low-level access to audio, keyboard, mouse, joystick and graphics hardware via
OpenGL. SDL2 is the most current version.
Zlib
- HBehrens/obj2opengl - script to convert 3D models of OBJ files to
C/C++ float arrays (vertices, faces, texture) compatible with OpenGL ES
glDrawArrays compatible with iPhone/iPad.
GPL 3
- Kazade/kazmath - A C math library targeted at games.
BSD 2-Clause
- R4stl1n/cAudio - 3D Audio Engine Based on Openal.
Zlib
- Tangent128/luasdl2 - A pure C binding of SDL 2.0 for Lua 5.1,
Lua 5.2, and LuaJIT.
ISC
- ccore/ccore_rewrite - A cross platform low level game development
library.
BSD 3-Clause
- cloudwu/skynet - A lightweight online game framework.
MIT
- felselva/mathc - Pure C math library for 2D and 3D programming.
Zlib
- gabomdq/SDL_GameControllerDB - A community sourced database of game
controller mappings to be used with SDL2 Game Controller functionality.
License
- geon/gloss - A bidirectional path tracer written in C.
MIT
- jarikomppa/soloud - Free, easy, portable audio engine for games.
License
- liballeg/allegro5 - The official Allegro 5 git repository.
License
- recp/cglm - Highly Optimized Graphics Math (glm) for C.
MIT
- raysan5/raylib - A simple and easy-to-use library to enjoy
videogames programming.
Zlib
- rxi/lovedos - A framework for making 2D DOS games in Lua.
MIT
- slembcke/Chipmunk2D - A fast and lightweight 2D game physics
library.
MIT
- shaunlebron/blinky - Exploring peripheral vision in games
(using Quake).
MIT
- nem0/OpenFBX - Lightweight open source FBX importer.
MIT
- librg/librg - Library for building simple and elegant
cross-platform mmo client-server solutions.
Apache 2
- Srekel/phyxed-2d - 2d physics engine with fixed-point support.
Licenses
- recp/AssetKit - 3D asset importer/exporter/util library based on
COLLADA/glTF specs.
MIT
- olofson/audiality2 - A realtime scripted modular audio engine for
video games and musical applications.
Zlib
- dr-soft/miniobj - Simple library for loading OBJ mesh files.
Public Domain
- dr-soft/mintaro - Framework for making simple, retro style games.
Public Domain
- SasLuca/rayfork - raylib fork introducing some changes.
No license
- jkuhlmann/cgltf - Single-file glTF 2.0 loader/writer in C99.
MIT
Geography
^
Geography
Geodata, street maps, navigation and so on
- Unidata/gempak - Analysis, display, and product generation package
for meteorological data.
BSD 3-Clause
- evanmiller/ProjCL - Crazy-fast map projections and geodesic
calculations.
License
- olofsj/GLMap - An OpenGL ES 2.0 renderer for Openstreetmap data.
LGPL 3
- olofsj/Whichway - C library for flexible (bike, foot, car) routing
in road networks from Openstreetmap data.
No license
- maxmind/geoip-api-c - GeoIP Legacy C API.
License
- navit-gps/navit - The open source (GPL v2) turn-by-turn navigation
software for many OS.
License
- lionsoul2014/ip2region - Offline IP location library with accuracy
rate of 99.9% and 0.0x millseconds searching performance. DB file is less then
5Mb with all ip address stored. binding for Java, PHP, C, Python, Nodejs,
Golang, C#, lua. Binary, B-tree, Memory searching algorithm.
Apache 2
- openvenues/libpostal - A C library for parsing/normalizing street
addresses around the world. Powered by statistical NLP and open geo data.
MIT
- propublica/simple-tiles - Simple tile generation for maps.
MIT
- simplegeo/libgeohash - A pure C implementation of the Geohash
algorithm.
BSD 3-Clause
- kosma/minmea - Lightweight GPS NMEA 0183 parser library in pure C.
WTFPL
- geocommons/geocoder - Modular Street Address Geocoder.
LGPL 3
- bauerca/gridfloat - Slice and dice USGS elevation data from the
command line.
MIT
GUI
^
GUI
- tinyfiledialogs - Single-file library for simple dialogs. Compatible
with many other toolkits and OSes.
Zlib
- vurtun/nuklear - A single-header ANSI C gui library.
Licenses
- andlabs/libui - Simple and portable (but not inflexible) GUI library
in C that uses the native GUI technologies of each platform it supports.
License
- lc-soft/LCUI - A small C library for building user interfaces with
C, XML and CSS.
MIT
- littlevgl/lvgl - Graphics library to create an embedded GUI with
easy-to-use graphical elements, beautiful visual effects and low memory
footprint. It offers anti-aliasing, opacity, and animations using only one
frame buffer.
MIT
- ocornut/imgui_club - Nice things to use along dear imgui.
No license
- GTK+ - Cross-platform widget toolkit.
License
- IUP - Another cross-platform widget toolkit.
License
- Tk - Basic widget toolkit. Part of Tcl/Tk.
License
- XForms Toolkit - Widget toolkit designed for the XWindow system.
LGPL 2.1
- Clutter - UI library based on OpenGL.
LGPL 2.1
- randrew/layout - Single-file library for calculating 2D UI layouts
using stacking boxes. Compiles as C99 or C++.
License
- cimgui/cimgui - c-api for imgui.
MIT
- elvismt/slope - A library to create charts from raw data using
cairo. Can be shown in GtkDrawingArea
LGPL 3
- DeXP/nuklear_cross - Nuklear+ (read as "Nuklear cross") is a
front-end overlay for Nuklear GUI library.
Licenses
- xkbcommon/libxkbcommon - Keymap handling library for toolkits and
window systems.
License
- raysan5/raygui - Immediate GUI library from raylib author.
Zlib
- rxi/microui - Immediate-mode UI ANSI C library.
MIT
- VincentWei/minigui - Crossplatform windowing and GUI library
targeted for embed usage.
GPL 3
- achimdoebler/UGUI - Graphic library for embedded systems.
License
Hardware Oriented
^
Hardware Oriented
- obgm/libcoap - Implementation of the Constrained Application
Protocol.
License
- Genymobile/scrcpy - Display and control your Android device.
Apache 2
- Azure/azure-iot-sdk-c - A C99 SDK for connecting devices to
Microsoft Azure IoT services.
MIT
- FoxelSA/libfastcal - Fast calibration data access.
AGPL 3
- Stephane-D/SGDK - SGDK: A small, open and free development kit for
the Sega Megadrive.
MIT
- andygock/avr-uart - AVR UART C Library.
License
- anrieff/libcpuid - a small C library for x86 CPU detection and
feature extraction.
BSD 2-Clause
- coocox/cox - CoX is an peripherals library with a unified standard
interface specially for ARM Cortex M.
BSD 3-Clause
- edorfaus/TEMPered - C library and program for reading the TEMPer
family of thermometer and hygrometer devices.
BSD 2-Clause
- google/cpu_features - A cross platform C99 library to get cpu
features at runtime.
Apache 2
- jackmitch/libsoc - C library for interfacing with common SoC
peripherals through generic kernel interfaces.
LGPL 2.1
- joan2937/pigpio - C library for the Raspberry which allows control
of the General Purpose Input Outputs (GPIO).
Unlicense
- libimobiledevice/libimobiledevice - A cross-platform protocol
library to communicate with iOS devices.
LGPL 2.1
- libopencm3/libopencm3 - Open Source ARM cortex m microcontroller
library.
GPL 3
- libusb/libusb - A cross-platform library to access USB devices.
LGPL 2.1
- micronucleus/micronucleus - ATTiny usb bootloader with a strong
emphasis on bootloader compactness.
License
- nfc-tools/libnfc - Platform independent Near Field Communication
library.
LGPL 3
- signal11/hidapi - A Simple library for communicating with USB and
Bluetooth HID devices on Linux, Mac, and Windows.
Licenses
- wiiudev/libwiiu - Build system and examples for running C code
on the Wii U.
No license
- floooh/chips - 8-bit chip and system emulators in standalone
C headers.
Zlib
- rofl0r/endianness.h - Endianness detection and conversion.
Licenses
Hashing
^
Hashing
Hash function implementations for non-cryptographic purposes.
- centaurean/spookyhash - Fast hash function.
BSD 3-Clause
- leo-yuriev/t1ha - Fast Positive Hash - a portable, fast hash
function.
BSD 3-Clause
- Cyan4973/xxHash - Extremely fast non-cryptographic hash algorithm.
BSD 2-Clause
- PeterScott/murmur3 - Murmur3 hash in C.
Public domain
- RJ/ketama - C library for consistent hashing, and langauge bindings.
BSD 2-Clause
- cr-marcstevens/sha1collisiondetection - Library and command line
tool to detect SHA-1 collision in a file.
MIT
- clibs/hash - C hash implementation based on khash.
MIT
- lemire/clhash - C library implementing fast CLHash function.
Apache 2
- mattsta/crcspeed - This make CRC be fast. Included implementations:
CRC-64-Jones and CRC-16-CCITT.
BSD 3-Clause
- plashchynski/str2hex - Data formats convertion utility.
Apache 2
- tzvetkoff/hashids.c - Port of the Hashids library.
MIT
Image Processing and Computer Vision
^
Image Processing and Computer Vision
- libgd/libgd - Library for the dynamic creation of images by
programmers.
License
- giflib - Library for reading and writing gif images.
License
- libjpeg-turbo/libjpeg-turbo - Faster library for reading and
writing JPEG files.
Licenses
- libpng - The official PNG reference library.
License
- liuliu/ccv - C-based/Cached/Core Computer Vision Library, A Modern
Computer Vision Library.
License
- Phildo/pixQL - SQL for image processing.
No license
- XadillaX/byakuren - A theme color extracting library.
MIT
- ansilove/ansilove - ANSi / ASCII art to PNG converter.
BSD 2-Clause
- bluesmoon/pngtocss - Read in a gradient from a png file and spit
out CSS for it.
BSD
- brendangregg/Dump2PNG - Visualize file data as a PNG.
License
- buaazp/zimg - A lightweight and high performance image storage and
processing system.
BSD 3-Clause
- dbohdan/s2png - Store data of any kind inside PNG images.
GPL 2
- ginsweater/gif-h - Simple C++ one-header library for the creation
of animated GIFs from image data.
Unlicense
- libvips/libvips - A fast image processing library with low memory
needs.
LGPL 2.1
- mozilla/mozjpeg - Improved JPEG encoder.
Licenses
- openslide/openslide - C library for reading virtual slide images.
License
- pornel/giflossy - Lossy GIF compressor.
GPL 2
- pornel/pngquant - Lossy PNG compressor.
License
- rflynn/imgmin - Lossy image optimization.
MIT
- uclouvain/openjpeg - Official repository of the OpenJPEG project.
BSD 2-Clause
- vlfeat/vlfeat - An open library of computer vision algorithms.
BSD 2-Clause
- libspng - Secure PNG reading/writing.
BSD 2-Clause
- ImageMagick/ImageMagick - Image processing suite with C interface.
License
- saitoha/libsixel - Library implementing the SIXEL protocol,
allowing beautiful graphics in your terminal.
License
- jedisct1/libpuzzle - A library to quickly find visually similar
images.
ISC
- mattes/epeg - Fast JPEG/ JPG thumbnail scaling with the minimum
fuss and CPU overhead. It makes use of libjpeg features of being able to load
an image by only decoding the DCT coefficients needed to reconstruct an image
of the size desired.
License
- dr-soft/dr_pcx - Single file PCX image loader.
Public Domain
- cbraudo/qdbmp - Cross-platform C library for handling BMP files.
MIT
- lecram/gifdec - GIF decoder.
Public Domain
- gfxprim/gfxprim - Library for processing and drawing images in
variety of formats.
LGPL 2.1
Integrated Debugging and Logging
^
Integrated Debugging and Logging
- gpakosz/whereami - One-file library for locating the current
executable on the file system.
MIT
- HardySimpson/zlog - Reliable, pure C logging library.
LGPL 2.1
- esneider/debug - One-header library for easier 'printf debugging'.
MIT
- ThrowTheSwitch/CException - Implementation of exceptions.
License
- google/pblog - Small, low overhead, structured logging library
intended for logging formware events.
Apache 2
- 0xmalloc/c-log - a fast ,stable and thread-safe log lib(logger)
for C/C++ language.
Apache 2
- Celtoys/Remotery - Single C file, Realtime CPU/GPU Profiler with
Remote Web Viewer.
Apache 2
- armink/EasyLogger - A ultra-lightweight(ROM<1.6K, RAM<0.3k),
high-performance C/C++ log library.
MIT
- cyrus-and/prof - Self-contained C/C++ profiler library for Linux.
License
- facebook/liblogfaf - A library that logs messages using
non-blocking UDP datagrams.
BSD 3-Clause
- kmcallister/embedded-breakpoints - Embed GDB breakpoints in C
source code.
BSD 3-Clause
- ntpeters/SimpleLogger - Basic logger for C and C++ projects.
MIT
- openjudge/sandbox - Open-source suite of software components for
C/C++ and Python developers to create automated profiling tools and watchdog
programs.
BSD 3-Clause
- rxi/log.c - A simple logging library implemented in C99.
MIT
- yosefk/checkedthreads - checkedthreads: no race condition goes
unnoticed! Simple API, automatic load balancing, Valgrind-based checking.
BSD 2-Clause
- libFirm - Library that provides a graph-based intermediate
representation, optimizations and assembly code generation suitable for use in
compilers. Comes with an example C front-end under the same license.
GPL 2
- daddinuz/watchdog - Memory tracer, leaks hunter.
MIT
- okuvshynov/b63 - Lightweight benchmarking tool for C.
Apache 2
- stephenrkell/trap-syscalls - Monitor, rewrite and/or otherwise trap
system calls.
Licenses
- immunityinc/libptrace - An event driven multi-core process
debugging, tracing, and manipulation framework.
LGPL 2.1
I/O
^
I/O
- Lajnold/falloc - falloc creates files of a user-specified size. It
uses the posix_fallocate syscall for allocating the right size directly,
instead of copying data like the commonly used dd tool does.
GPL 3
- cgaebel/pipe - A simple thread-safe FIFO in C.
MIT
- cxong/tinydir - Lightweight, portable and easy to integrate C
directory and file reader.
License
- reverbrain/eblob - Eblob is an append-only low-level IO library,
which saves data in blob files. Created as low-level backend for elliptics.
LGPL 3
- tronkko/dirent - C/C++ library for retrieving information on files
and directories.
MIT
- jwerle/fs.c - File system API much like Node's fs module.
MIT
- zevv/duc - Library and suite of tools for inspecting disk usage.
LGPL 3
- kwhat/libuiohook - A multi-platform C library to provide global
keyboard and mouse hooks from userland.
GPL 3
- dr-soft/dr_fs - Single file libraries for working with file
system.
Public Domain
- mpaland/printf - Standalone printf, sprintf and (v)snprintf
implementation.
MIT
Lexing and Parsing
^
Lexing and Parsing
- GNU Bison - General-purpose parser generator that converts an
annotated context-free grammar into a range of parsers.
GPL 3
- bbu/simple-interpreter - A hackable and extensible lexer, parser
and interpreter for a minimalistic, imperative, C-like language.
No license
- dcreager/libpush - An arrow-based parser combinator library for C.
BSD 3-Clause
- kmussel/Moment - Natural Language Date Parser Using Lex/Yacc/C.
MIT
- skvadrik/re2c - lexer generator for C/C++.
License
- westes/flex - The Fast Lexical Analyzer - scanner generator for
lexing in C and C++.
License
- orangeduck/mpc - Parser combinator library.
BSD 2-Clause
- transceptor-technology/libcleri - Libcleri is a powerful tool to
build languages. From a built language, libcleri can automatically create
parse trees, which are data structures representing how a grammar matches
input. It also provides feedback in case the input does not match the
language. This can be useful for auto-completion, suggestions or error
handling.
MIT
- dr-soft/url - URL parsing in C.
BSD 2-Clause
Memory Management
^
Memory Management
- Boehm GC - Garbage collection for C. Various licenses, all open
source.
License
- Lockless Memory Allocator - Efficient memory allocator.
GPL 3
- talloc - Hierarchical, reference-counted memory pool system with
destructors.
LGPL 3
- mattconte/tlsf - Two-Level Segregated Fit allocator; a
general-purpose, dynamic memory allocator designed to meet real-time
requirements.
BSD 3-Clause
- jemalloc/jemalloc - General purpose malloc(3) implementation that
emphasizes fragmentation avoidance and scalable concurrency support, commonly
used in production systems.
License
- dlmalloc - Doug Lea's malloc(3) implementation, useful for academic
and research purposes.
Public domain
- CCareaga/heap_allocator - A simple heap memory allocator in
~200 lines.
MIT
- ivmai/bdwgc - The Boehm-Demers-Weiser conservative C/C++ Garbage
Collector (libgc, bdwgc, boehm-gc).
License
- mulle-nat/mulle-allocator - Flexible C memory allocation scheme
with leak checking.
BSD 3-Clause
- munificent/mark-sweep - A simple mark-sweep garbage collector in C.
MIT
- ned14/nedmalloc - Fast portable thread caching malloc
implementation written in C for multiple threads without lock contention based
on dlmalloc. Optimised for x86 and x64. Compatible with C++. Can patch itself
into existing binaries on Windows.
Boost
- orangeduck/tgc - A Tiny Garbage Collector for C.
BSD 2-Clause
- rampantpixels/rpmalloc - Public domain cross platform lock free
thread caching 32-byte aligned memory allocator implemented in C.
License
- stevedekorte/garbagecollector - Incrementall garbage collector
library in C for use by high level language implementions.
BSD 3-Clause
- Simon-Swenson-8351/tralloc - A binary tree based memory allocator.
BSD 3-Clause
- Qqwy/raii_with - A simple library to provide RAII in
standard-compliant C99.
MIT
- emeryberger/Malloc-Implementations - A collection of memory
allocators.
No license
- microsoft/mimalloc - Compact general purpose allocator by Microsoft.
MIT
- mjansson/rpmalloc - Cross platform lock free thread caching 16-byte
aligned memory allocator.
License
- yvan-sraka/malloc - malloc implementation with reduced dependencies.
GPL 3
- AlxHnr/CRegion - Region-based memory management library.
License
Multimedia
^
Multimedia
Audio and video processing.
- jeremyevans/ape_tag_libs - Library for working with APEv2 tags.
MIT
- lieff/minimp3 - Lightweight MP3 decoder single header library.
License
- FFMPEG - Complete, cross-platform solution to record, convert and
stream audio and video.
LGPL 2.1
- GStreamer - Framework for audio and visual media.
LGPL 2
- mpv-player/mpv - Media player MPV with provided library libmpv.
Compile with
./waf configure --disable-cplayer --enable-libmpv-shared
to not have the music player.License
- andrewrk/libsoundio - Library for cross-platform, real-time audio
input and output. Has a range of back-ends.
MIT
- AVbin/AVbin - Thin, cross-platform wrapper around Libav’s
video- and audio-decoding functionality, providing long-term binary
compatibility for applications and languages that need it.
LGPL 3
- PaulBatchelor/Soundpipe - A lightweight music DSP library.
MIT
- Themaister/libfmsynth - A C library which implements an FM
synthesizer.
MIT
- UniversalPrimer/flv-analyzer - Loads an FLV file into sane C data
structures and outputs fields as human readable.
GPL 3
- Vidvox/hap-qt-codec - A QuickTime codec for Hap video.
License
- acrisci/playerctl - mpris command-line controller and library for
spotify, vlc, audacious, bmp, cmus, and others.
LGPL 3
- aubio/aubio - a library for audio and music analysis.
GPL 3
- cmatsuoka/libxmp - Libxmp is a library that renders module files to
PCM data.
License
- cnlohr/colorchord - Chromatic Sound to Light Conversion System.
BSD 3-Clause
- csound/csound - A sound and music computing system.
LGPL 2.1
- dxjia/ffmpeg-commands-executor-library - execute ffmpeg commands
through a jni shared library.
Apache 2
- erikd/libsndfile - A C library for reading and writing sound files
containing sampled audio data.
LGPL 2.1
- kfish/libfishsound - A simple programming interface for decoding
and encoding audio data using Xiph.org codecs (FLAC, Speex and Vorbis).
BSD 3-Clause
- libass/libass - libass is a portable subtitle renderer for the
ASS/SSA (Advanced Substation Alpha/Substation Alpha) subtitle format.
ISC
- libav/libav - Collection of libraries and tools to process
multimedia content such as audio, video, subtitles and related metadata.
License
- mltframework/mlt - MLT Multimedia Framework.
LGPL 2.1
- sahib/glyr - Glyr is a music related metadata searchengine, both
with commandline interface and C API.
LGPL 3
- simonyiszk/csdr - A simple DSP library and command-line tool for
Software Defined Radio.
License
- xiph/flac - Free Lossless Audio Codec.
License
- xiph/opus - Modern audio compression for the internet.
License
- mhroth/tinyosc - A minimal Open Sound Control (OSC) library written
in vanilla C.
ISC
- libao - Cross-platform audio library with a wide variety of
outputs.
GPL 2
- libvlc - VLC player library.
Licenses
- raysan5/raudio - A simple and easy-to-use audio library based on
miniaudio.
Zlib
- dr-soft/miniaudio - Single file audio playback and capture
library written in C.
Licenses
Multiple Purpose Libraries
^
Multiple Purpose Libraries
- parallella/pal - Optimized library for maths, parallel processing
and data movement.
Apache 2
- APR - Apache Portable Runtime; another library of cross-platform
utility functions.
Apache 2
- GLib - Library of utility functions and structures, designed to be
portable, efficient and powerful.
LGPL 2.1
- keybuk/libnih - Lightweight library of C functions and structures.
GPL 2
- wolkykim/qlibc - Simple and powerful C library, designed as a
replacement for GLib while focusing on being small and light.
License
- chutsu/cog - C common library containing common data structures,
sorting algorithms and utility functions.
MIT
- cs50/libcs50 - CS50 Library for C.
MIT
- dcreager/libcork - A simple, easily embeddable cross-platform C
library.
BSD 3-Clause
- faragon/libsrt - C library for writing fast and safe C code,
faster. It provides string, vector, bit set, set, map, hash set, and hash map
handling. Suitable for soft and hard real-time. Allows both heap and stack
allocation.
BSD 3-Clause
- koanlogic/libu - LibU is a multiplatform utility library written in
C, with APIs for handling memory allocation, networking and URI parsing,
string manipulation, debugging, and logging in a very compact way, plus many
other miscellaneous tasks.
License
- letoram/arcan - Display Server, Multimedia Framework,
Game Engine-> "Desktop Engine".
Licenses
- saprykin/plibsys - Highly portable C system library: threads and
synchronization primitives, sockets (TCP, UDP, SCTP), IPv4 and IPv6, IPC,
hash functions (MD5, SHA-1, SHA-2, SHA-3, GOST), binary trees (RB, AVL) and
more. Native code performance.
MIT
- tboox/tbox - A glib-like multi-platform c library.
Apache 2
- zpl-c/zpl - Your C99 Powerkit.
Licenses
- dmw/caffeine - C Application Framework.
LGPL 2.1
- breckinloggins/libuseful - A collection of useful data structures,
algorithms, and utilities for C programming.
MIT
- erimatnor/libckit - A kit of C-based utilities and data structures.
Apache 2
- pforemski/libpjf - A C library of data structures with tools
(based on libasn).
GPL 3
- stevedekorte/basekit - C based OO portable data structure library.
BSD 3-Clause
- mjansson/foundation_lib - Cross-platform foundation library in
C providing basic support data types and functions to write applications and
games in a platform-independent fashion.
Unlicense
- happyfish100/libfastcommon - Functions including: string, logger,
chain, hash, socket, ini file reader, base64 encode / decode,
url encode / decode, fast timer, skiplist, object pool etc. detail info please
see the c header files.
LGPL
- sabit/libcprops - C prototyping tools.
LGPL 2.1
╠════ DNS
^
DNS
- GNU adns - Advanced, easy-to-use, asynch-capable DNS client library
and utilities.
GPL 3
- ldns - Library to simplify DNS programming.
BSD 3-Clause
- bagder/c-ares - Library for asynchronous DNS requests.
License
- farsightsec/dnstable - encoding format, library, and utilities for
passive DNS data.
Apache 2
- wahern/dns - Single file non-blocking DNS C library without
callbacks or external dependencies.
MIT
- libidn - Implementation of the Stringprep, Punycode and IDNA
specifications.
Licenses
- mjansson/mdns - mDNS/DNS-SD library.
Unlicense
╠════ HTTP
^
HTTP
- nodejs/http-parser - HTTP request/response parser for c.
MIT
- h2o/picohttpparser - Tiny HTTP parser.
MIT
- iafonov/multipart-parser-c - Http multipart parser implemented in C.
MIT
- solusipse/ureq - Micro C library for handling HTTP requests on low
resource systems.
MIT
- nghttp2/nghttp2 - HTTP/2 C Library.
MIT
- wg/wrk - Modern HTTP benchmarking tool.
License
^
Mail
- 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.
GPL 3
- dinhviethoa/libetpan - Mail Framework for C Language.
License
- dertuxmalwieder/libvldmail - Your friendly e-mail address validation
library.
WTFPL
╠════ Messaging and Brokers
^
Messaging and Brokers
- nanomsg/nng - Lightweight brokerless messaging.
MIT
- alanxz/rabbitmq-c - Client library for RabbitMQ.
License
- antirez/disque - Disque is a distributed message broker.
BSD 3-Clause
- circonus-labs/fq - F@#$*&%Q (Message queue that is fast, brokered,
in C and gets out of your way).
MIT
- zeromq/czmq - High-level C binding for ØMQ.
License
- nanomsg/nanomsg - C-based implementation of ZeroMQ.
License
- LiamBindle/MQTT-C - MQTT protocol implementation.
MIT
╠════ Remote Desktops
^
Remote Desktops
- FreeRDP/FreeRDP - FreeRDP is a free remote desktop protocol library
and clients.
Apache 2
- LibVNC/libvncserver - LibVNCServer/LibVNCClient are cross-platform
C libraries that allow you to easily implement VNC server or client
functionality in your program.
GPL 2
╠════ RPC
^
RPC
- hmng/jsonrpc-c - JSON-RPC in C.
MIT
- lopter/lightsd - A daemon with a JSON-RPC API to control your
light bulbs.
GPL 3
- laruence/yar - RPC for C and PHP.
License
- protobuf-c/protobuf-c-rpc - Using protobuf-c for RPC.
License
╠════ TCP, UDP, Sockets
^
TCP, UDP, Sockets
- bovine/datapipe - Network TCP port forwarding.
Public domain
- sch3m4/libntoh - User-friendly C Library to perform TCP streams
reassembly and IPv4/6 defragmentation.
License
- tass-belgium/picotcp - PicoTCP is a free TCP/IP stack
implementation.
Licenses
- opendp/dpdk-odp - Open data plane on dpdk, TCP/IP stack for dpdk.
BSD
- lsalzman/enet - ENet reliable UDP networking library.
MIT
- hoxnox/rawsock_recv_example - SOCK_RAW IPPROTO_UDP socket data
transmission example.
BSD 3-Clause
- silentbicycle/socket99 - C99 wrapper for the BSD sockets API.
ISC
- fastos/fastsocket - Fastsocket is a highly scalable socket and its
underlying networking implementation of Linux kernel.
GPL 2
- sustrik/msg_control - Helper functions for dealing with socket
ancillary data.
MIT
╠════ Web Servers
^
Web Servers
- taf2/libebb - Lightweight high-performance HTTP server library
for C.
MIT
- libhttpd - Library to add basic web server capabilities to an
application or embedded device.
LGPL
- libmicrohttpd - Small C library that makes it easy to run an HTTP
server as part of another application.
Licenses
- risoflora/libsagui - Cross-platform C library which helps to develop
web servers or frameworks.
LGPL 3
- h2o/h2o - Optimized HTTP/1, HTTP/2 high performance server/library.
MIT
- mongrel2/mongrel2 - The Mongrel2 Web Server Project.
BSD 3-Clause
- shenfeng/tiny-web-server - a tiny web server in C, for daily use.
MIT
- zyearn/zaver - Yet another fast and efficient HTTP server.
MIT
- libsoup - GNOME HTTP client/server library. Uses GObject.
LGPL 2
- criticalstack/libevhtp - Create extremely-fast and secure embedded
HTTP servers with ease.
BSD 3-Clause
- civetweb/civetweb - Embedded C/C++ web server.
Licenses
- lpereira/lwan - Experimental, scalable, high-performance HTTP
server.
GPL 2
- cesanta/mongoose - Embedded web server for C/C++.
License
- oneoo/alilua - epoll/kqueue+lua based web server.
MIT
- haywire/haywire - Haywire is an asynchronous HTTP server framework
written in C that's built using the event loop based libuv platform layer that
node.js is built on top of.
Apache 2
- davidmoreno/onion - C library to create simple HTTP servers and Web
Applications.
Licenses
- wolkykim/libasyncd - Embeddable Event-based Asynchronous
Message/HTTP Server library for C/C++.
BSD 2-Clause
- balde/balde - Microframework for C based on GLib.
LGPL 2.1
- bitly/simplehttp - A family of libraries and daemons for building
scalable web infrastructure.
MIT
- boazsegev/facil.io - Your high performance web application C
framework.
MIT
- iafonov/cosmonaut - Fast web server & micro framework implemented
in C. Just for fun.
MIT
- riolet/WAFer - WAFer is a C language-based software platform for
scalable server-side and networking applications. Think node.js for C
programmers.
GPL 2
- jeremycw/httpserver.h - Single header library for writing
non-blocking HTTP servers in C.
MIT
- lammertb/libhttp - Crossplatform HTTP and HTTPS library.
MIT
- zhaojh329/libuhttpd - Fully asynchronous HTTP server library based
on libev and http-parser for embedded Linux.
MIT
- silgy/silgy - Multipurpose asynchronous web application backend
engine.
MIT
╠════ Web Service APIs
^
Web Service APIs
- sinemetu1/twitc - Mini library for interacting with the Twitter
OAuth API.
MIT
- dajobe/flickcurl - Flickr C API library.
GPL 2
- Cotix/cReddit - CLI Reddit client written in C. Includes separated
library.
License
- HalosGhost/shaman - A small, native C library and utility to fetch
weather.
GPL 2
- PromyLOPh/pianobar - Console-based pandora.com player.
License
- Yubico/yubico-c-client - Yubico C client library.
BSD 2-Clause
- adobkin/libcapn - A simple C Library for interact with the Apple
Push Notification Service (APNs).
MIT
- aws/aws-iot-device-sdk-embedded-C - SDK for connecting to AWS IoT
from a device using embedded C.
Apache 2
- domsson/libtwirc - Twitch IRC library for Linux.
License
╠════ Websockets
^
Websockets
- tatsuhiro-t/wslay - WebSocket library. Implements version 13 of the
WebSocket protocol, as described in RFC 6455.
MIT
- JonnyWhatshisface/libwebsock - Easy-to-use and powerful web socket
library.
LGPL 3
- m8rge/cwebsocket - Lightweight websocket server library.
MIT
- zhaojh329/libuwsc - A Lightweight and fully asynchronous WebSocket
client C library based on libubox for Embedded Linux.
LGPL 2.1
- warmcat/libwebsockets - Canonical websocket library. `License
- wbudd/RingSocket - Lockless multi-threaded C11 Linux WebSocket
server.
MIT
- clemenskresser/ezwebsocket - Websocket server library in C.
MIT
╚════ Uncategorized Networking
^
Uncategorized Networking
- libcurl - Client-side URL transfer library, supporting a wide range
of formats.
License
- oSip - SIP implementation in C without additional dependencies.
LGPL
- rxi/dyad - Asynchronous networking library.
MIT
- 51Degrees/Device-Detection - Device detection for
C / PHP / Perl / Python and Node.js - professionally maintained device data.
License
- uriparser/uriparser - Strictly RFC 3986-compliant URI parsing and
handling library.
BSD 3-Clause
- c9s/r3 - High-performance path dispatching library. It compiles
your route paths into a prefix tree (trie). By using the constructed prefix
trie in the start-up time, you may dispatch your routes with efficiency.
MIT
- versatica/OverSIP- OverSIP: the SIP framework you dreamed about.
MIT
- libssh2/libssh2 - the SSH library.
BSD 3-Clause
- rockdaboot/mget - Multithreaded metalink/file/website downloader
(like Wget) and C library.
LGPL 3
- seanmiddleditch/libtelnet - Simple RFC-complient TELNET
implementation as a C library.
Public domain
- shadeslayer/libnice - Implementation of the IETF's Interactive
Connectivity Establishment (ICE) standard (RFC 5245) and the Session Traversal
Utilities for NAT (STUN) standard (RFC 5389).
Licenses
- udp/lacewing - Cross-platform network I/O library for C/C++.
License
- verse/verse - Network protocol for real-time sharing between
graphical applications.
Licenses
- the-tcpdump-group/libpcap - the LIBpcap interface to various kernel
packet capture mechanism.
BSD 3-Clause
- the-tcpdump-group/tcpdump - the TCPdump network dissector.
BSD 3-Clause
- luohaha/CSpider - A scalable and convenient crawler framework.
MIT
- nitrogenlogic/cliserver - A sample libevent-based network socket
server that presents a simple command line interface to multiple connecting
clients.
BSD 2-Clause
- babelouest/ulfius - Web Framework to build REST APIs, Webservices
or any HTTP endpoint in C language. Can stream large amount of data, integrate
JSON data with Jansson, and create websocket services.
LGPL 2.1
- haiwen/ccnet - Ccnet is a framework for writing networked
applications in C.
GPL 2
- it4e/CHL - C Hypertext Library - A library for writing web
applications in C.
LGPL 3
- jorisvink/kore - An easy to use, scalable and secure web
application framework for writing web APIs in C.
License
- monkey/duda - Duda I/O is an event-driven and high performant web
services framework which exposes a friendly C API.
Apache 2
- zeromq/zyre - Framework for proximity-based peer-to-peer
applications.
License
- Maxime2/dataparksearch - Open source, feature rich search engine.
License
- kristapsdz/kcgi - Minimal CGI and FastCGI library for C/C++.
ISC
OpenCL
^
OpenCL
OpenCL, CUDA, OpenMP and other similar APIs.
- cf4ocl - The C Framework for OpenCL.
LGPL 3
- clMathLibraries/clRNG - an OpenCL based software library containing
random number generation functions.
License
- tuxfan/ocl-mla - OpenCL Mid-Level Abstractions.
License
- matze/oclkit - Two-file OpenCL wrapper.
GPL 3
- emrainey/OpenCL-Environment - A series of utilities aimed at making
OpenCL easier to use.
Apache 2
OS Specifics
^
OS Specifics
- symisc/libcox - Library which permits cross-platform system calls
and standard utilities across different operating systems.
BSD 2-Clause
- checkpoint-restore/criu - Checkpoint/Restore In Userspace; a
software tool (with a C API) for 'freezing' a running application to disk,
then restoring it. Targeted for Linux.
Licenses
- alsa-lib - Userspace library to interact with ALSA.
LGPL 2.1
- Leandros/WindowsHModular - A modular Windows.h Header.
License
- a0rtega/pafish - Pafish is a demonstration tool that employs several
techniques to detect sandboxes and analysis environments in the same way as
malware families do.
GPL 3
- antirez/linenoise - A small self-contained alternative to readline
and libedit.
BSD 2-Clause
- fancycode/MemoryModule - Library to load a DLL from memory.
License
- jimon/osx_app_in_plain_c - A simple showcase how to create a simple
OS X app in plain C without any Objective-C.
No license
- rvoicilas/inotify-tools - Library and a set of command-line
programs for Linux providing a simple interface to inotify.
GPL 2
- tinyalsa/tinyalsa - Tiny library to interface with ALSA in the
Linux kernel.
BSD 3-Clause
- wengkai/ACLLib - A bunch of C functions covers Win32API and
provides simpler API to beginners for programming Windows GUI applications.
GPL 3
- zardus/preeny - Some helpful preload libraries for pwning stuff.
BSD 2-Clause
Procedural Generation
^
Procedural Generation
- prideout/heman - Tiny library of image utilities dealing with
height maps, normal maps, distance fields and the like.
MIT
- JCash/voronoi - A C implementation for creating 2D voronoi diagrams.
MIT
- Srekel/the-worldinator - Procedural world generation experiment.
Licenses
- saxbophone/libsxbp - Experimental generation of 2D spiralling lines
based on input binary data.
License
- ajxs/pbp - Procedural Block Painter. Experiments in procedural art
generation.
MIT
- Tastyep/ProceduralNoise - Useful functions for procedural
generation.
No license
Processes and IPC
^
Processes and IPC
- D-Bus - Interprocess communications bus.
Licenses
- bus1/dbus-broker - Linux D-Bus Message Broker.
Apache 2
- signalapp/libsignal-protocol-c - Signal Protocol C Library.
GPL 3
- sharvil/flingfd - A tiny library to send file descriptors across
processes.
Apache 2
- sheredom/process.h - A simple one header solution to launching
processes and interacting with them for C and C++.
Unlicense
- troydhanson/kvspool - A library to support streaming data
applications.
MIT
- xroche/coffeecatch - Tiny native POSIX signal catcher (especially
useful for JNI code on Android/Dalvik).
BSD 2-Clause
- samuellab/InterProcess - A compact C library to share data between processes on Windows.
GPL 3
Regex and Search
^
Regex and Search
- kkos/oniguruma - Regex library supporting a wide range of encodings,
and incorporating many security-oriented fixes.
BSD 2-Clause
- PCRE - Implementation of regexes identical to that of Perl 5.
License
- nasciiboy/RecursiveRegexpRaptor-4 - Simple and complete
implementation of regular expressions with its own sintax.
GPL 3
- laurikari/tre - POSIX-compliant, feature-full regex library.
License
- cesanta/slre - Super Light Regexp engine for C/C++.
License
- k-takata/Onigmo - Regular expressions library forked from
Oniguruma.
License
- openresty/sregex - A non-backtracking NFA/DFA-based Perl-compatible
regex engine matching on large data streams.
BSD 3-Clause
Serialization
^
Serialization
- dvidelabs/flatcc - FlatBuffers compiler and library.
Apache 2
- liteserver/binn - Binary serialization format meant to be compact,
fast and easy-to-use.
Apache 2
- jmckaskill/c-capnproto - Implementation of the Cap'n Proto
serialization protocol.
MIT
- apache/avro - Avro data serialization system for several languages,
including C.
Apache 2
- liteserver/netstring-c - Netstring encoder and decoder.
Public domain
- protobuf-c - Implementation of Google Protocol Buffer in C.
License
- ErikDubbelboer/c-pack - Simple data packing/unpacking in C.
No license
- acg/lwpb - Lightweight Protocol Buffers for C and Python.
Apache 2
- camgunz/cmp - An implementation of the MessagePack serialization
format in C.
MIT
- cloudwu/pbc - A protocol buffers library for C.
MIT
- cloudwu/sproto - Yet another protocol library like google protocol
buffers ,but simple and fast.
MIT
- dryman/opic - Fast serialization framework for C.
LGPL 3
- google/upb - Small protobuf implementation in C.
BSD 3-Clause
- greghaynes/Afproto - Serial data framing protocol.
License
- ludocode/mpack - Encoder/decoder for the MessagePack serialization
format.
MIT
- nanopb/nanopb - Protocol Buffers with small code size.
Zlib
- troydhanson/tpl - Small binary serialization library for C.
License
- clibs/dumpasn1 - Display the contents of ASN.1 encoded data.
License
- vlm/asn1c - The ASN.1 Compiler.
BSD 2-Clause
- eerimoq/pbtools - Google protobuf tools.
MIT
Source Code Collections
^
Source Code Collections
- DanielGibson/Snippets - Useful code snippets and header-only
libraries.
Public domain
- CCAN - Modelled after Perl's CPAN, this is a big collection of C
code.
No license
- libdjb - Collection of libraries doing various things.
License
- BurntSushi/clibs - A smattering of miscellaneous C libraries.
Includes sane argument parsing, a thread-safe multi-producer/multi-consumer
queue, and implementation of common data structures (hashmaps, vectors and
linked lists).
WTFPL
- RandyGaul/cute_headers - Collection of cross-platform one-file C/C++
libraries with no dependencies, primarily used for games.
Licenses
- chadjoan/C-Survival-Kit - A set of useful functions, data
structures, and macros aimed at allowing more expressive and reliable C code.
Portability targets are OpenVMS and Linux.
Boost
- floooh/sokol - Minimal cross-platform standalone C headers.
Zlib
- gingerBill/gb - Single-file public domain libraries for C & C++.
Public domain
- gozfree/libraries - Basic libraries all written in c by gozfree,
including network, event, config, log, hash, ipc, rpc, mem, and so on.
MIT
- mackron/dr_libs - A collection of public domain single-file
libraries for C/C++.
Public domain
- mattiasgustavsson/libs - Single-file public domain libraries for
C/C++.
Public domain
- matteobertozzi/carthage - Pure C Data Structure and Utils.
BSD
- napsy/libhelper - General functions and data structures for C.
BSD 3-Clause
- niklasfrykholm/nflibs - A collection of interoperable minimalistic C libraries. `Public domain
- nothings/stb - Single-file public domain libraries for C/C++.
Licenses
- prideout/par - Single-file C libraries from Philip Allan Rideout.
MIT
- rmitton/rjm - Various single-file C libraries.
Public domain
- vurtun/mmx - single header libraries for C/C++.
No license
- yl790/algorithms-and-data-structures - Different algorithms & data
structures.
No license
- rofl0r/libulz - a collection of useful functions and data
structures to create C apps faster. focus on simplicity, ability to statically
link and minimal binary size.
LGPL 2.1
- sdroege/snippets - Some algorithms and data structures.
LGPL 3
- lbrito1/cstuff - Algorithms & data structures in C.
GPL 2
- angelortega/mpdm - Minimum Profit Data Manager.
Public domain
- attractivechaos/klib - Small and lightweight implementations of
common algorithms and data structures.
MIT
- f1nalspace/final_game_tech - Game related libraries.
MIT
- QwertyQaz414/anv - Collection of header-only utility libraries.
MIT
Scientific
^
Scientific
Math mostly located in Calculations category
- GuillaumeHolley/BloomFilterTrie - A data structure for pan-genome
storage.
MIT
- noporpoise/seq_file - Library for Reading Bioinformatic Sequence
Data in C.
Public domain
- r0nk/corvus - Genetic BF programming.
No license
- XenonofArcticus/DynamicTrack - Access sources of dynamically-updated
data about discrete entities like GPSes, INSes, ADS-B sources.
MIT
- ericmandel/funtools - A "minimal buy-in" FITS library and utility
package for astronomical data analysis.
LGPL 2.1
Special Purpose
^
Special Purpose
Libraries with very narrow non-generic purpose.
- TulipCharts/tulipindicators - Library of functions for technical
analysis of financial data.
LGPL 3
- MatthewLM/cbitcoin - Low-level bitcoin library written in C.
MIT
- RhysU/ESIO - Provides simple, high throughput input and output of
structured data sets using parallel HDF5. ESIO is designed to support reading
and writing turbulence simulation restart files within C, C++, and modern
Fortran applications.
LGPL 2.1
- Unidata/netcdf-c - Official GitHub repository for netCDF-C libraries
and utilities.
BSD 3-Clause
- jgarzik/picocoin - A bitcoin library in C, SPV wallet & more.
License
- libtrading/libtrading - Ultra low-latency trading connectivity
library for C and C++.
BSD 2-Clause
- nayuki/QR-Code-generator - High-quality QR Code generator library
in Java, JavaScript, Python, C++, C.
MIT
- qiq/Czech-morphology - Czech morphology library, using data files
compatible with PDT 2.0
License
- sleuthkit/sleuthkit - The Sleuth Kit® (TSK) is a library and
collection of command line digital forensics tools that allow you to
investigate volume and file system data. The library can be incorporated into
larger digital forensics tools and the command line tools can be directly used
to find evidence.
Licenses
- hroptatyr/uterus - universal tick encoder library to efficiently
transport huge amounts of tick data.
BSD 3-Clause
- luke-jr/bfgminer - Modular ASIC/FPGA miner written in C, featuring
overclocking, monitoring, fan speed control and remote interface capabilities.
GPL 3
Standard Libraries
^
Standard Libraries
Implementations of the C standards
- PDCLib - The Public Domain C Library. Implements most of C99 and
some of C11.
License
- uClibc-ng - Small C library for developing embedded systems.
LGPL 2.1
- dietlibc - C standard library designed for the smallest possible
binaries.
GPL 2
- glibc - The GNU C Library; an implementation of the C standard
library.
Licenses
- musl - Standard C library, compatible with POSIX 2008 and C11.
Designed for static linking.
MIT
- NuxiNL/cloudlibc - CloudABI's standard C library.
BSD 2-Clause
- marssaxman/startc - Minimal freestanding C library for bare-metal
i386 development.
License
- olibc/olibc - Another C Library optimized for Embedded Linux.
BSD
- lpsantil/rt0 - A minimal C runtime for Linux i386 & x86_64.
BSD 2-Clause
- keith-packard/picolibc - Standard C library APIs that targets
small embedded systems with limited RAM.
Licenses
String Manipulation
^
String Manipulation
- wooorm/levenstein.c - Levenstein distance algorithm implementation.
MIT
- wooorm/stmr.c - Porter Stemmer algorithm implementation.
MIT
- websnarf/bstrlib- The Better String Library.
BSD 3-Clause
- ICU - International Components for Unicode; a library for Unicode
support.
License
- libunistring - Library for manipulating Unicode strings in C.
Licenses
- libgiconv - Text conversion library.
LGPL
- JuliaStrings/utf8proc - Small, clean library for processing UTF-8
Unicode data.
License
- antirez/sds - Simple Dynamic Strings library for C.
BSD 2-Clause
- boyerjohn/rapidstring - Maybe the fastest string library ever.
MIT
- clibs/buffer - Tiny C string library.
MIT
- chrisjmccormick/word2vec_commented - Commented (but unaltered)
version of original word2vec C implementation.
Apache 2
- fontforge/libuninameslist - A library with a large (sparse) array
mapping each unicode code point to the annotation data for it.
BSD 3-Clause
- jasonmaclafferty/String - Dynamic string data type implementation.
MIT
- josephg/librope - UTF-8 rope library for C.
MIT
- sheredom/utf8.h - Single header utf8 string functions for C
and C++.
Unlicense
- branchless-utf8 - Branchless UTF-8 decoder.
Unlicense
- g-berthiaume/strsepf - Single header string parsing function with
memory safety of strsep and the convenience of a sscanf-like interface.
MIT
- karlmcguire/sing - String ring buffer library.
MIT
Testing
^
Testing
- yhfudev/cpp-ci-unit-test - A modern minimal hassle unit test
framework.
MIT
- codeplea/minctest - Unit testing microlibrary.
Zlib
- evolutional/utest - Single-header unit testing library.
Unlicense
- Tuplanolla/cheat - Very simple unit testing framework.
BSD 2-Clause
- libcheck/check - Unit testing framework for C.
LGPL 2.1
- ThrowTheSwitch/CMock - Mock/stub generator for C.
MIT
- cmocka - Unit testing framework with support for mock objects.
Apache 2
- rafael-santiago/cutest - Library for unit testing with memory leak
detection (Linux, FreeBSD and Windows).
GPL 2
- nemequ/munit - Small but full-featured unit testing framework for C
with no dependencies.
MIT
- zorgnax/libtap - Write tests in C.
LGPL 3
- Snaipe/Criterion - A cross-platform C and C++ unit testing
framework for the 21th century.
MIT
- ThrowTheSwitch/Unity - Simple Unit Testing for C.
MIT
- bvdberg/ctest - Unit test framework for software written in C.
Apache 2
- clear-code/cutter - An easy to write and debug unit testing
framework for C and C++.
Licenses
- compiler-dept/speck - A small unit testing framework for C.
MIT
- joewalnes/tinytest - A tiny unit-testing framework for C.
No license
- lpabon/cmockery2 - Reviving cmockery unit test framework from
Google.
Apache 2
- mcandre/qc - C port of the QuickCheck unit test framework.
BSD 2-Clause
- mchochlov/Gnucash - Data model unit testing - GSoC 2011.
Licenses
- mortie/snow - A testing library for C.
MIT
- orangeduck/ptest - DRY Microtesting Framework for C.
BSD 3-Clause
- silentbicycle/greatest - A C testing library in 1 file. No
dependencies, no dynamic allocation.
ISC
- silentbicycle/theft - property-based testing for C: generate input
to find obscure bugs, then reduce to minimal failing input.
ISC
- siu/minunit - Minimal unit testing framework for C.
MIT
- stephenmathieson/describe.h - Simple BDD describe test.
MIT
- vmg/clar - What tests are made of.
ISC
- CuTest - C Unit Testing Framework.
Licenses
- eerimoq/nala - Test framework for C projects. Based on narwhal and
narmock.
MIT
- vberlier/narwhal - Framework for writing readable and maintainable
tests for C programs and libraries.
MIT
- vberlier/narmock - Finds the functions mocked in your tests and
generates mocks.
MIT
- sheredom/utest.h - Single header unit testing framework. [
Unlicense
][80-61] - Koldar/crashc - Automatic C source code testing framework.
MIT
- christophercrouzet/rexo - Unit testing framework for C and C++.
Unlicense
TUI
^
TUI
Textual User Interface
- sabotage-linux/netbsd-curses - Simplified and small version of
curses, with the same interface.
Licenses
- ncurses - Coloured terminal UI library.
Licenses
- doches/progressbar - An easy-to-use C library for displaying text
progress bars.
BSD 3-Clause
- jwerle/progress.c - Progress display lib for c.
MIT
- nsf/termbox - Library for writing text-based user interfaces.
MIT
- alandekok/recli - A re-imagined CLI. Customizable syntax, help,
permissions, data types.
BSD 2-Clause
- matthiasbock/ucurses - Very small and simple text-based user
interface (TUI) library for microcontrollers.
GPL 3
- serameo/TUI - Text User Interface using curses for UNIX.
GPL 3
- jakubfi/emui - Text user interface toolkit.
License
- nejohnson/stui - Simple Text User Interface.
BSD 3-Clause
- tboox/ltui - A cross-platform terminal ui library based on Lua.
Apache 2
- okbob/ncurses-st-menu - ncurses based library for CUA look menu.
BSD 2-Clause
- LionyxML/nocurses - A terminal screen manipulation library.
GPL 2
- seleznevae/libfort - Crossplatform library for formatted
text tables creation.
MIT
- LiquidityC/termesc - ANSI escape TUI library.
No license
- tryggth/newt - TUI library made by RedHat.
License
- serameo/TUI2 - TUI fox Unix.
No license
Uncategorized
^
Uncategorized
- recp/tm - Timer and Timeline Utils for C.
MIT
- libgit2/libgit2 - Pure C implementation of Git.
License
- ThomasHabets/monotonic_clock - Portable C library for getting
monotonic time.
BSD 3-Clause
- graphviz - Graph Visualization Tools.
License
- h2non/semver.c - semantic version parser and serializer written in
ANSI C.
MIT
- libical/libical - Libical is an Open Source implementation of the
iCalendar protocols and protocol data units.
Licenses
- jonpe960/ufsm - UML Statechart library in C and XMI importer.
BSD 3-Clause
- locasto/libdisorder - A simple C library for entropy measurement
of byte streams and other data.
GPL 2
- lucasb-eyer/heatmap - High performance C heatmap generation
library. Supposed to be wrapped by higher-level languages.
MIT
- tailhook/objpath - A library that allows to traverse data
structures by path.
MIT
- pornin/CTTK - Constant-Time Toolkit.
MIT
- juliettef/IconFontCppHeaders - C, C++ headers and C# classes for
icon fonts: Font Awesome, Fork Awesome, Material Design, Material Design
icons, Kenney game icons and Ionicons.
Zlib
- eam/libcrange - Range parsing library for managing sets of
ostnames, ips, clusters, roles and other operational data.
BSD 3-Clause