awesome-c

C dev toolkit

A curated collection of C libraries and tools for various aspects of software development

A curated list of awesome C frameworks, libraries, resources and other shiny things. Inspired by all the other awesome-... projects out there.

GitHub

10k stars
285 watching
837 forks
last commit: 6 months ago
Linked from 5 awesome lists

awesomeawesome-listclist

Awesome C / AI

ccv C-based/Cached/Core Computer Vision library; modern computer vision
Cranium Portable, header-only ANN library in C99
FANN 1,601 9 months ago Fast Artifical Neural Network library; an implementation of neural networks
Genann Simple ANN in C89, without additional dependencies
KANN 689 about 3 years ago Two-file ANN library
LibDEEP 23 over 5 years ago Deep learning library
m2cgen 2,826 6 months ago A CLI tool to transpile trained classic ML models into a native C code with zero dependencies
sod An Embedded Computer Vision & Machine Learning Library

Awesome C / Benchmarking

b63 57 almost 2 years ago Light-weight micro-benchmarking tool for C

Awesome C / Build Systems

Autotools Also known as the GNU build system (automake, autoconf, libtool...) is one of the most widely used build systems (configure && make)
Autotools project skeleton 22 6 months ago A simple autotools skeleton (template) to quickly bootstrap new projects
CMake Cross-platform family of tools designed to build, package and test software
GNU Make Tool which controls the generation of executables and other non-source files of a program
Meson Extremely fast, user-friendly build system. Based on Ninja
Premake Command-line utility which reads a scripted definition of a software project and uses it to generate project files for Visual Studio and GNU Make. Other targets are also being worked on
SCons Software construction tool using Python
xmake Cross-platform build utility
zproject 148 about 2 months ago Project generator and build system support tool

Awesome C / Compilers

ccache Compiler cache designed to speed up recompilation
Clang Compiler for LLVM. Supports C11
cproc A C11 compiler using QBE as a backend
distcc 2,091 3 months ago Program that allows builds to be distributed among several machines
Firm 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
GCC Provides a C compiler as part of its compiler set. Supports C11
PCC Venerable compiler. Supports C99. , all open source

Awesome C / Compression

blosc Extremely fast, multi-threaded, meta-compressor library. Various licenses, all open source
Brotli 13,639 about 1 month ago General-purpose lossless compression algorithm library. Has speeds comparable to DEFLATE, but much higher compression ratios.
clzip C version of the high-quality data compressor (LZMA implementation)
CRoaring 1,582 about 2 months ago C implementation of
FiniteStateEntropy 1,344 10 months ago Two highly efficient compression codecs optimized for modern CPUs
DENSITY 1,019 2 months ago Super-fast compression library
heatshrink 1,334 8 months ago Data compression/decompression library for embedded and real-time systems
fast_zlib 132 over 2 years ago Improved zlib, which runs 2 to 10 times faster
fastLZ 447 6 months ago Lightning-fast lossless compression library (LZ77 type). Embbedable on small target like ARM Cortex-M families. Source code directly embbedable on your project ( a pair of h/c files), no dynamic memory allocation
huffandpuff 99 over 11 years ago Minimal Huffman encoder and decoder. Public domain
libzip 312 3 months ago C library for reading, creating and modifying zip archives
libbzip2 Patent-free, high-quality data compression library
Lizard 653 almost 4 years ago Formerly LZ5; an efficient compressor with fast decompression. Achieves compression ratios comparable with zip and zlib at decompression speeds of 1000MB/s and faster
lz4 Library for an extremely fast compression algorithm
lzo Fast data compression library
pixz 714 about 2 months ago Parallel, indexed xz compressor
shoco Compressor for small text strings
SIMDComp 490 over 1 year ago Simple library for compressing lists of integers using binary packing. Makes use of SIMD instructions on x86
smaz 1,174 about 5 years ago Efficient string compression library
squash 409 almost 5 years ago Compression abstraction library, complete with some utilities
TurboPFor 776 11 months ago Fastest integer compression
TurboRLE 285 almost 2 years ago Most efficient run-length encoding
zip 1,441 about 2 months ago Really really small zip archive processing library
Zlib Massively spiffy yet delicately unobtrusive compression library
libarchive 3,066 about 1 month ago libarchive is a portable, efficient C library that can read and write streaming archives in a variety of formats
zlib-ng 15 over 3 years ago Zlib replacement with optimizations for 'next-generation' systems
Zstandard Fast, lossless compression algorithm, targeting real-time compression scenarios at zlib-level or better compression ratios

Awesome C / Concurrency and Parallelism

cchan Small library for channel constructs for inter-thread communication. Public domain
checkedthreads 290 over 11 years ago A simple library for parallelism, with built-in checking for race conditions
ck Concurrency primitives, safe memory reclamation mechanisms and non-blocking data structures
FCFS RWLock First-come first-served Readers/Writers lock for POSIX threads
Libaco 3,525 over 2 years ago A blazing fast and lightweight C asymmetric coroutine library
libconcurrent 360 over 3 years ago Concurrent programming library, using coroutines, for C11
libcsp 1,312 over 1 year ago High performance concurrency C library influenced by the CSP model
libdill Library which makes structured concurrent programming easy
libhl 427 5 months ago Library implementing a thread-safe API to manage a range of data structures. Also provides some supporting functions and structures for concurrent and lockfree programming
liburcu Data synchronization library, which scales linearly with the number of cores
mill Go-style concurrency
oclkit 16 over 7 years ago Two-file OpenCL wrapper
OCL-MLA OpenCL Mid-Level Abstractions
OpenMP Set of pragmas designed to allow for easy parallelization of code. Standard (licensing not applicable)
Open MPI 2,200 about 1 month ago Message passing interface implementation
pal 301 over 4 years ago Optimized library for maths, parallel processing and data movement
pth Portable implementation for non-preemptive priority-based scheduling for multiple threads of execution
pthreads POSIX thread library. Standard (no license applicable)
TinyCThread Portable, small implementation of the C11 threads API

Awesome C / Crypto

GNU SASL Implementation of the Simple Authentication and Security Layer and a few common SASL mechanism
GnuTLS Secure communication library, implementing SSL, TLS and DTLS
libgcrypt General-purpose cryptography library, with a range of available ciphers
OpenSSL Implementation of the SSL and TLS protocols. Also includes a cryptography library.
liboqs Library for quantum-resistant cryptographicl algorithms
libsodium Modern and easy-to-use crypto library
libtomcrypt Fairly comprehensive, modular and portable cryptographic toolkit. Public domain
mbed TLS Another crypto implementation
MIRACL 655 over 3 years ago Multiprecision Integer and Rational Arithmetic Cryptographic Library; an SDK for elliptic curve cryptography
retter Collection of hash functions, ciphers, tools, libraries and materials related to cryptography and security. Public domain
s2n 4,544 about 1 month ago C99 implementation of the TLS/SSL protocols, designed to be simple, fast and with security as a priority
sphlib Set of implementations of various hash functions, including several cryptographic ones
trezor-crypto 501 over 4 years ago Heavily optimized crypto algorithms for embedded devices
bfish 3 about 1 year ago A single include ANSI-C Blowfish ECB crypto library. Public domain

Awesome C / Database

BerkeleyDB Library for a high-performance embedded database for key-value data
DuckDB Fast in-process analytical database, with C API
EJDB2 Embeddable JSON Database engine
Groonga 803 about 1 month ago Columnar store with full-text search
Hiredis 6,283 2 months ago Minimalistic client library for Redis
libmongoc High-performance client library for
LMDB Ultra-fast, ultra-compact key-value embedded data store
MySQL 10,964 3 months ago The world's most popular open source database
PostgreSQL Powerful object-relational database system
Redis Advanced key-value store
sophia Modern, embeddable key-value database
sparkey 1,178 over 1 year ago Simple constant key/value storage library. Designed for read-heavy loads with infrequent, large bulk inserts
SQLite Self-contained, serverless, zero-configuration, transactional SQL database engine. Public domain
UnQLite Self-contained, serverless, zero-configuration, transactional NoSQL engine
WhiteDB 605 about 2 years ago Lightweight database library, operating entirely in main memory
FlashDB 1,948 3 months ago An ultra-lightweight database that supports key-value and time series data
TDengine 23,479 about 1 month ago High-performance, cloud native time-series database

Awesome C / Data Structures

C-Macro-Collections 536 7 months ago Generate simple and generic data structures using macros
CLIST 56 almost 3 years ago Simple and lightweight implementation
Collections-C 2,842 8 months ago Library of generic data structures
ds 51 over 1 year ago Common Data Structures and Algorithms
igraph A graph processing library
kdtree 396 over 3 years ago Simple library for working with KD-trees
libavl Library containing a range of self-balancing binary trees
libcdada A small, portable, MACRO-less library for basic data structures (list, set, map, queue...) in C (C++ backend)
liblfds Portable lock-free data structure library. Public domain (more exactly, whatever license you want)
libsrt Soft and hard real-time data structures.
list.h 49 11 months ago Implementations for singly linked and doubly linked list functions
M*LIB 919 about 1 month ago Library for generic, but typesafe C containers. Implemented as header-only
offbrand 81 about 9 years ago Collection of generic, reference-counted data structures
PackedArray 160 over 2 years ago Random-access array of tightly packed unsigned integers of any desired width. Has a SIMD-optimized implementation
rb3ptr Red-Black tree. Exposes almost all implementation primitives, so can be used for scenarios like augmentation, multiple compatible ordering functions, and more
uthash Single-file hash table implementation
vector.h 44 over 10 years ago Header library for typed lists

Awesome C / Debugging

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
CBMC C Bounded Model Checker; a tool for verification of array bounds, pointer safety and user-specified assertions
cflow Analyzes a collection of source files and prints a graph charting control flow in the program
Complexity Tool for measuring the complexity of source code
CScout Source code analyzer and refactoring browser for C programs
DDD Graphical front-end for a range of command-line debuggers
debug 279 almost 10 years ago One-header library for easier 'printf debugging'
ESBMC Efficient SMT-based Bounded Model Checker; a tool for verification of single and multithread programs, user assertions, overflow, and pointer/memory safety
GDB GNU Project debugger
lldb LLVM debugger
rr Debugger that records non-deterministic executions to allow for deterministic debugging
Valgrind Range of dynamic analysis tools, including a leak checker

Awesome C / Documentation Generation

Cxref Generates documentation in either LaTeX, HTML, RTF or SGML
DocOnce Modestly tagged markup language that can be used to generate a range of formats
Doxygen De-facto standard tool for generating documentation from annotated sources. Can generate a large range of formats

Awesome C / Editors

Anjuta DevStudio GNOME IDE
Code::Blocks Extendable, configurable IDE supporting C
CodeLite Cross-platform IDE
Geany Small and fast IDE
KDevelop KDE IDE
zinjaI Simple, lightweight and feature-rich IDE

Awesome C / Embeddable Scripting Engines

Duktape Embeddable Javascript engine with a focus on portability and compact footprint
MetaCall 1,590 about 1 month ago Cross-platform Polyglot Runtime which supports NodeJS, JavaScript, TypeScript, Python, Ruby, C#, Wasm, Java, Cobol and more

Awesome C / Frameworks

APR Apache Portable Runtime; another library of cross-platform utility functions
C Algorithms Collection of common algorithms and data structures
CPL The Common Pipeline Library; a set of libraries designed to be a comprehensive, efficient and robust software toolkit
EFL Large collection of useful data structures and functions. Various licenses, all open source
GLib Library of utility functions and structures, designed to be portable, efficient and powerful
klib Small and lightweight implementations of common algorithms and data structures
libcork Utility functions and structures, designed for resource-constrained systems. Can be embedded
libnih 89 about 3 years ago Lightweight library of functions and structures
libU Small library of basic utilities, including memory allocation, string manipulation and logging
PBL Large library of utilities, featuring data structures, among other things
plibsys 695 about 2 months ago Cross-platform system C library. Zero third-party dependencies, uses only native system calls
qlibc Simple and powerful library, designed as a replacement for GLib while focusing on being small and light
sc 2,284 4 months ago Common libraries and data structures for C
TBOX 4,906 about 1 month ago Multi-platform library with a large number of capabilities
pspsdk 887 about 1 month ago An open-source SDK for PSP homebrew development.

Awesome C / Game Programming

Allegro Cross-platform, video game development and multimedia library
AssetKit 189 5 months ago 🎨 3D asset importer/exporter/util library based on COLLADA/glTF specs
astera 292 6 months ago C99 Cross Platform 2D Game Library
cglm 2,364 about 2 months ago 📽 Optimized OpenGL/Graphics Math (glm) for C
Chipmunk2D Fast and lightweight 2D game physics library
cmt 177 about 1 year ago 🎮 C Bindings/Wrappers for Apple's METAL Graphics Framework
Corange 1,838 8 months ago Game engine in pure C
CSFML Binding for
Darkplaces Modified version of the Quake2 engine
Epoxy 680 2 months ago Library for handling OpenGL function pointer management
exengine 562 9 months ago 3D game engine in C99 with a starting template
Flecs 6,556 about 1 month ago A Multithreaded Entity Component System written for C89 & C99
Freecell Solver 60 about 1 month ago Set of libraries and command-line programs for automatically solving FreeCell and some similar variants of card Solitaire
FreeGLUT Alternative to the OpenGL Utility Toolkit. Allows the creation and management of windows with OpenGL contexts
GLFW Multi-platform library for creating windows with OpenGL contexts
ioquake3 Quake3 engine, freed at last
kazmath 528 about 4 years ago Maths library for games
libao Cross-platform audio library with a wide variety of outputs
librg 1,287 9 months ago Pure C99 game networking library for building simple and elegant cross-platform multiplayer client-server solutions
MATHC 722 11 months ago Math library for 2D and 3D programming
Orx Portable, lightweight, plugin-based, data-driven, 2D-oriented game engine
Quake 4,959 7 months ago Quake engine
Quake2 2,844 about 1 year ago Quake2 engine
raylib Simple and easy-to-use library to learn video game programming
RetroArch 10,438 about 1 month ago Reference frontend for
SDL2 Cross-platform library designed to provide low-level access to audio, keyboard, mouse, joystick and graphics hardware via OpenGL
sdl-gpu 1,199 over 2 years ago Library for high-performance, modern 2D graphics. Based on SDL
SIGIL Sound, Input and Graphics Integration Library; a simple alternative to other libraries for doing all those things. Various licenses, all open source
uastar 127 9 months ago Minimal A* implementation

Awesome C / Graphics

AssetKit 189 5 months ago 🎨 3D asset importer/exporter/util library based on COLLADA/glTF specs
Cairo 2D graphics library. or
cmt 177 about 1 year ago 🎮 C Bindings/Wrappers for Apple's METAL Graphics Framework
giflib Library for reading and writing gif images
graphene Thin layer of graphical data types
heman 470 over 3 years ago Tiny library of image utilities dealing with height maps, normal maps, distance fields and the like
libcaca 550 6 months ago ASCII renderer for terminal-based interfaces
libgd 906 3 months ago Library for the dynamic creation of images by programmers
libimagequant Small, portable library for high-quality conversion of RGBA images to 8-bit indexed colour images
libjpeg-turbo Faster library for reading and writing JPEG files.
libpng Official PNG reference library
libRSVG Library to render SVG files using Cairo
libsixel 2,523 over 1 year ago Library implementing the SIXEL protocol, allowing beautiful graphics in your terminal
libspng A simpler interface for reading and writing PNG files
libvips Image processing library
libxmi Function library for rasterizing 2D vector graphics
lightmapper 1,452 almost 2 years ago Single-file library for lightmap baking, using an existing OpenGL renderer. Public domain
little CMS A Color Management System. It provides fast transforms between ICC profiles
mozjpeg 5,484 6 months ago Improved JPEG encoder
nanovg 5,214 10 months ago Anti-aliased 2D vector drawing library on top of OpenGL, for UI and visualizations
OpenGL Industry standard for high-performance graphics, with a native C binding.
PlutoVG 350 about 1 month ago A standalone 2D vector graphics library in C
SAIL 311 3 months ago ⛵ The missing small and fast image decoding library for humans (not for machines)

Awesome C / Graphical User Interface

GTK+ Cross-platform widget toolkit
IUP Another cross-platform widget toolkit
microui 3,568 5 months ago Tiny immediate-mode UI library written in portable ANSI C
nappgui Professional SDK to build cross-platform desktop applications using C
nuklear 9,406 about 1 month ago Small, C89, single-header widget toolkit. Public domain
tinyfiledialogs Single-file library for simple dialogs. Compatible with many other toolkits and OSes
Tk Basic widget toolkit. Part of Tcl/Tk
XForms Toolkit Widget toolkit designed for the XWindow system
LVGL embedded GUI with easy-to-use graphical elements, beautiful visuals and a low memory footprint
luigi 406 7 months ago A barebones single-header GUI library for Win32, X11 and Essence

Awesome C / Hashing

CLHash 268 10 months ago Library implementing the ridiculously fast CLHash hashing function. Only works on Intel Haswell or newer
HighwayHash 1,549 9 months ago Fast, strong, SIMD-using hash function. Also contains an implementation of SipHash (although this is slower)
SpookyHash 67 almost 4 years ago Extremely fast hash function
t1ha 345 almost 3 years ago Fast Positive Hash - a portable, fast hash function
xxHash Extremely fast hashing algorithm. Comes in 32 and 64-bit varieties

Awesome C / Learning, Reference and Tutorials / Reference resources online

Benchmarks of the Lockless Memory Allocator
C FAQ - comp.lang.c Frequently Asked Questions
Comparison of C/POSIX standard library implementations for Linux
Draft C89 standard
Draft C99 standard
Draft C11 standard
Finding the best 64-bit simulation PRNG
SEI CERT C Coding Standard
tinyc.game 341 about 1 month ago Tiny C games you can compile and run RIGHT NOW

Awesome C / Learning, Reference and Tutorials / Beginner resources online

A tutorial on pointers
A tutorial on portable Makefiles
Building C Projects
C Programming Wikibook
Introduction to `fun' C
Learning C with GDB
memcpy vs memmove
POSIX Threads Programming tutorial (a little dated, but most of it is still valid and useful)
The GNU C Programming Tutorial (online PDF)
Templating in C
What a C programmer should know about memory
CodeforWin: Learn C Programming, Data Structures Tutorials and Exercises online
Learn C: Free and Open-Source Interactive C Tutorial
How to program a text adventure in C 67 over 1 year ago

Awesome C / Learning, Reference and Tutorials / Intermediate resources online

8 gdb tricks you should know
10 C99 tricks
A comprehensive MPI tutorial resource
Build Your Own Text Editor
Diving into concurrency: trying out mutexes and atomics
Generic C reference counting
How to write portable C without complicating your build
Introduction to OpenMP (video)
OpenMP tutorial (for the OpenMP3 standard)
MPI tutorial
Scalable C - Writing Large-Scale Distributed C
Some unknown features or tricks in C language
What every C programmer should know about undefined behaviour

Awesome C / Learning, Reference and Tutorials / Advanced resources online

Advanced metaprogramming in C
A quick tutorial on implementing and debugging malloc, free, calloc, and realloc
Bit twiddling hacks
Implementing smart pointers for the C programming language
Inline functions in C
Metaprogramming custom control structures in C
Solving the temporary storage problem of C macros
Some dark corners of C
Writing efficient C and C code optimization
Compiling Algebraic Data Types in Pure C99

Awesome C / Learning, Reference and Tutorials / Reference books

C: A Reference Manual 5E Full reference book for C99
C in a Nutshell 2E Concise reference book for C11
C Pocket Reference Concise reference book for C99
The C Programming Language 2E Original book on C, by its creators

Awesome C / Learning, Reference and Tutorials / Beginner books

C Primer Plus 6E Complete tutorial on programming in C11
C Programming: A Modern Approach Excellent book to learn the basics of C
Head First C 'Head-first' style book for learning C

Awesome C / Learning, Reference and Tutorials / Intermediate books

21st Century C Good programming book on C
Understanding and Using C Pointers In-depth resource on pointers in C
ZeroMQ Book for using ZeroMQ with C

Awesome C / Learning, Reference and Tutorials / Advanced books

Expert C Programming: Deep C Secrets Interesting, in-depth and entertaining look at the innards of C
Modern C, Third Edition: Covers the C23 standard In Modern C, Third Edition you’ll learn to harness C’s full potential using the latest tools and techniques

Awesome C / Lexing and Parsing

flex 3,659 about 1 month ago Fast lexical analyzer generator
GNU Bison General-purpose parser generator that converts an annotated context-free grammar into a range of parsers
hammer 285 over 4 years ago Parser combinators for binary formats
mpc 2,691 8 months ago Parser combinator library
owl 748 about 1 month ago A parser generator for visibly pushdown languages
re2c Lexer generator, producing fast lexers, with access to its internals. Public domain

Awesome C / Memory Management

Boehm GC Garbage collection for C. Various licenses, all open source
jemalloc Malloc implementation that emphasizes avoidance of fragmentation and scalable concurrency support
Lockless Memory Allocator Efficient memory allocator
libcsptr 1,608 about 2 years ago Smart pointers for C
rpmalloc 2,186 7 months ago Thread-caching, fast memory allocator, naturally aligned on 32-byte boundaries. Public domain
talloc Hierarchical, reference-counted memory pool system with destructors
tlsf Two-Level Segregated Fit allocator; a general-purpose, dynamic memory allocator designed to meet real-time requirements.

Awesome C / Multimedia

aubio 3,336 6 months ago Library for audio and music analysis
FFMPEG Complete, cross-platform solution to record, convert and stream audio and video
GStreamer Framework for audio and visual media
libmpv Music-playing library
libsndfile Library for reading and writing sound files. Supports many formats. or
libsoundio Library for cross-platform, real-time audio input and output. Has a range of back-ends
libVLC Complete multimedia library for audio and video encoding, decoding, playing and streaming
lodepng Simple PNG image decoder and encoder, requiring no other dependencies
minimp3 1,621 5 months ago Lightweight MP3 decoder single header library
Soundpipe Lightweight music DSP library

Awesome C / Networking and Internet

asnlc Compiler of ASN.1 specifications into C source code
CHL 269 almost 3 years ago C Hypertext Library - A library for writing web applications in C
czmq High-level binding for ZeroMQ
Dyad.c 1,442 over 4 years ago Lightweight, easy, asynchronous networking library
GNU adns Advanced, easy-to-use, asynch-capable DNS client library and utilities
gumbo-parser 5,166 almost 2 years ago HTML5 parsing library in C99
H20 A new-generation HTTP server
llhttp HTTP request/response parser
ldns Library to simplify DNS programming
libcurl Client-side URL transfer library, supporting a wide range of formats
LibEtPan Mail library providing an efficient network for IMAP, SMTP, POP and NNTP
libev Yet another event loop
libevent Event loop replacement for network servers
libhttpd Library to add basic web server capabilities to an application or embedded device
libhv 6,880 about 2 months ago Cross platform event loop library
libidn Implementation of the Stringprep, Punycode and IDNA specifications
libmicrohttpd Small library that makes it easy to run an HTTP server as part of another application
libnl is a collection of libraries to provie APIs to the Netlink protocol (replacement for ioctl). It's primary use is to communicate with the Linux kernel, to modify networking state (interfaces, routing etc...)
libonion HTTP server library, designed to be easy to use
libpcap 2,733 about 1 month ago API provides to various kernel packet capture mechanism
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
libsagui Library for cross-platform HTTP servers
libuhttpd 386 3 months ago A very flexible, lightweight and fully asynchronous HTTP server library based on libev and http-parser for Embedded Linux
LibVNCServer 1,141 about 2 months ago Cross-platform libraries to implement VNC server and/or client functionality
libwebsock Easy-to-use and powerful web socket library
libzmq 9,817 about 2 months ago Core ZeroMQ library, a high-performance asynchronous messaging library, aimed at use in distributed or concurrent applications. C API (backend C++) with static linking exception
lwan Experimental, scalable, high-performance HTTP server
mongoose Embedded web server
MQTT-C 789 8 months ago A portable MQTT C client for embedded systems and PCs alike
nanomsg 6,014 12 months ago C-based implementation of ZeroMQ
NNG nanomsg-next-generation - lightweight brokerless messaging
oSip SIP implementation without additional dependencies
silgy 79 about 3 years ago Asynchronous HTTP(S) engine for C/C++ projects
socket99 143 over 7 years ago C99 wrapper for the BSD sockets API
twitc 24 over 4 years ago Mini library for interacting with the Twitter OAuth API
uriparser Strictly RFC 3986-compliant URI parsing and handling library
Wslay WebSocket library. Implements version 13 of the WebSocket protocol, as described in RFC 6455
zyre 879 4 months ago Framework for proximity-based peer-to-peer applications

Awesome C / Numerical

apophenia Library for statistical and scientific computing
Arb 459 10 months ago Library for arbitrary-precision interval arithmetic
ATLAS Automatically Tuned Linear Algebra Software
clBLAS 845 6 months ago BLAS functions written in OpenCL
cmathl Math library with a great variety of mathematical functions with CMake build support. Seeks to be close to C89/C90 compliant for portability
Cuba Library for multidimensional numerical integration
fft-c 25 about 3 years ago 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
FLINT Fast Library for Number Theory; a library supporting arithmetic with numbers, polynomials, power series and matrices, among others
GLPK GNU Linear Programming Kit; a package designed for solving large-scale linear programming, mixed integer programming and other related problems
GMP GNU Multple Precision Arithmetic Library; a library for arbitrary-precision arithmetic. or
GNU MPC Library for complex number arithmetic
GNU MPFR Library for arbitrary-precision floating-point arithmetic
GNU MPRIA Portable mathematics library for multi-precision rational interval arithmetic
GSL The GNU Scientific Library; a sophisticated numerical library.
KISS FFT Simple fast Fourier transform library
LAPACKE Interface to
LibTomMath Portable, number-theoretic, multiple-precision integer library. Supports algebra, digit manipulation, modular reductions, and various number-theoretic routines. Public domain
LibTomPoly Polynomial-related maths library. Public domain
PARI/GP Computer algebra system for number theory; includes a compiler to C
PETSc Suite of data structures and routines for scalable parallel solution of scientific applications modelled by partial differential equations
SCS 555 about 1 month ago Splitting Conic Solver; a numerical optimization package for solving large-scale convex cone problems
SLEPc Library for the solution of large, sparse eigenvalue problems on parallel computers
TomsFastMath Set of optimized maths operations (in assembly), suitable for cryptographic use. Public domain
Yeppp! Fast, SIMD-optimized mathematical library

Awesome C / Profiling

gperftools 8,510 about 2 months ago Collection of utilities for measuring and improving performance
gprof Performance analysis tool. Part of GNU binutils
OProfile Statistical profiler for Linux. Can profile any code (including the kernel!) with low overhead and without recompilation
perf Linux kernel-based profiler with a lot of functionality

Awesome C / PDF

pdfio 204 about 1 month ago PDFio is a simple C library for reading and writing PDF files

Awesome C / Regex

Onigmo 625 7 months ago Fork of Oniguruma, supporting more advanced regexps
Oniguruma 2,331 about 2 months ago Regex library supporting a wide range of encodings, and incorporating many security-oriented fixes
PCRE Implementation of regexes identical to that of Perl 5
SLRE 535 about 4 years ago Super Light Regular Expression library; a small implementation of a subset of Perl regex syntax
TRE 811 4 months ago POSIX-compliant, feature-full regex library

Awesome C / Serialization

binn 455 11 months ago Binary serialization format, meant to be compact, fast and easy-to-use
c-capnproto 69 over 1 year ago Implementation of the Cap'n Proto serialization protocol
cmp 341 9 months ago Implementation of the serialization protocol
flatcc 654 3 months ago compiler and library
libavro Implementation of the Avro data serialization system
mpack 549 over 1 year ago Another implementation of the serialization protocol
OPIC Object Persistence in C; a revolutionary serialization framework, with matching on-disk and in-memory representations
protobuf-c 2,709 6 months ago Implementation of Google Protocol Buffer
tpl 372 almost 4 years ago Small binary serialization library
xdr External Data Representation; a standard for data serialization. Standard (no license applicable)
pbtools 74 10 months ago Google Protocol Buffers C source code generator

Awesome C / Source Code Collections

CCAN Modelled after Perl's CPAN, this is a big collection of code that does stuff. The full list is . Various licenses, all open source
clib 4,885 5 months ago Something of a package manager. Comes with a
gnulib Collection of common GNU code. Various licenses, all open source
libdjb Collection of libraries doing various things. (Apparently) public domain
mmx 1,276 10 months ago Collection of single-header libraries. Various licenses, all open source
par 869 over 2 years ago Bunch of single-file libraries
Snippets 197 3 months ago Useful code snippets and header-only libraries. Public domain
stb 27,210 2 months ago Range of single-file libraries. Public domain
tinyheaders 4,334 3 months ago Collection of header-only libraries, primarily oriented toward game development
zpl 996 5 months ago C99 cross-platform header-only library with many goodies. [ , ][BSD-3-Clause, Unlicense]

Awesome C / Standard Libraries

Bionic 605 about 1 month ago Google's standard library, developed for Android
cloudlibc 298 over 4 years ago Standard library based on the concept of
dietlibc Standard library designed for the smallest possible binaries
glibc The GNU C Library; an implementation of the standard library.
musl Standard library, compatible with POSIX 2008 and C11. Designed for static linking
PDCLib The Public Domain C Library. Implements most of C99 and some of C11
uClibc-ng Small C library for developing embedded systems

Awesome C / Standard Libraries / Template libraries

CTL 172 10 months ago C CONTAINER TEMPLATE LIBRARY (CTL)

Awesome C / String Manipulation

bstring The Better String Library
ICU International Components for Unicode; a library for Unicode support
levenstein.c 82 over 2 years ago algorithm implementation.
libunistring Library for manipulating Unicode strings
libgiconv Text conversion library
librope 273 over 3 years ago UTF-8 rope ('heavy' string) library
SDS 4,955 9 months ago Simple Dynamic Strings; a library for handling strings in a simpler way, but one that is compatible with normal C string functions. Available via
stmr.c 39 over 4 years ago algorithm implementation
str 312 3 months ago Yet another string library for C language
StringZilla 2,290 about 1 month ago Up to 10x faster SIMD and SWAR-accelerated string search, sort, hashes, edit distances, alignments, and generators
utf8.h 1,758 3 months ago Single-header UTF-8 library, designed to mimic C-style string functions. Public domain
utf8proc 1,069 5 months ago Library for processing UTF-8 data

Awesome C / Structured File Processing / CSV

libcsv 179 over 2 years ago Simple, streaming CSV parser

Awesome C / Structured File Processing / JSON

Jansson Library for encoding, decoding and manipulating JSON
jfes 70 over 5 years ago JSON For Embedded Systems; simple JSON engine without any dependencies
jsmn Minimalistic JSON parser
json 24 8 months ago Simple, low-memory-use JSON parser
json-c 2,997 about 1 month ago Easily work with JSON in C. Comes with a reference-counted object model, and aims for conformance with
json.h 719 6 months ago Single-file non-streaming JSON parser
parson 1,367 8 months ago Two-file, C89-compatible JSON parser
WJElement 108 11 months ago Advanced JSON manipulation library, with support for JSON Schema. or or
YAJL Fast streaming JSON parser library

Awesome C / Structured File Processing / INI

inih 2,506 3 months ago Small and simple INI file parser, good for embedded systems
iniparser 984 6 months ago Parser for .ini files
libconfini Yet another INI parser
minIni 393 9 months ago Small and portable INI parser

Awesome C / Structured File Processing / Others

libbson 347 over 4 years ago BSON utility library
libcbor 347 about 1 month ago : CBOR protocol implementation for C and others
libconfuse 482 11 months ago Small configuration file parser library
libelf 48 almost 3 years ago Simple library for parsing ELF files
libucl 1,635 9 months ago Universal configuration library parser
libxo 327 9 months ago 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

Awesome C / Structured File Processing / XML

Expat Stream-oriented XML parser
libxml2 Standards-compliant, portable XML parser
xml 12 8 months ago Simple, low-memory-use XML parser / tokenizer

Awesome C / Structured File Processing / YAML

libYAML YAML 1.1 parser and emitter

Awesome C / Signal Processing

libsigrok 311 3 months ago signal analysis software suite that supports various device types (such as logic analyzers, oscilloscopes, multimeters, and more). [ ][GPL]

Awesome C / Testing

CHEAT 170 almost 4 years ago Simple unit testing framework
Check Unit testing framework
ciut A modern minimal hassle unit test framework
clar 203 3 months ago Clear and simple unit testing framework
CMock Mock/stub generator
cmocka Unit testing framework with support for mock objects
Criterion KISS, non-intrusive test framework
ctest 230 4 months ago Yet another unit testing framework
CUnit Another unit testing framework
greatest 1,480 over 1 year ago Unit testing library in one file, with no memory allocation
minctest 55 almost 4 years ago Unit testing microlibrary
munit Small unit testing framework
Nala 68 over 2 years ago A test framework for C projects
Rexo 28 about 1 year ago Framework for C89/C++ featuring automatic registration of tests and a polished API
Tau 161 2 months ago A Micro Unit testing framework for C/C++ (~1k lines of code). Includes a rich set of assertion macros, supports automatic test registration and can output to multiple formats, like the TAP format or JUnit XML. Supported on Linux, macOS, FreeBSD, and Windows
theft 613 about 4 years ago Property-based testing (similar to )
Unity Simple unit testing framework
utest 39 over 7 years ago Single-header unit testing library

Awesome C / Text Editor Extensions

CCompletion Notepad++ autocompletion plugin. Works with all identifiers recognized by Ctags. This is a download link
CEDET Collection of Emacs Development Environment Tools; designed to provide IDE-like features to Emacs. Built-in
Flycheck 2,423 about 2 months ago Modern syntax checking for Emacs. For C, it can use either GCC or Clang as a back-end
Neomake 2,671 10 months ago Async :make and linting framework for Neovim/Vim
Syntastic 11,301 over 2 years ago Syntax checking and linting for Vim
YASnippet Emacs code template system, with C templates for common snippets
YouCompleteMe 25,503 about 1 month ago Code completion engine for Vim

Awesome C / Tools

Artistic Style Fast and small automatic source code formatter that supports C
address-sanitizer 11,610 3 months ago Fast memory error detector
bcc A byte array generator to import binary files directy from C in the spirit of xxd
c 2,107 about 1 year ago Compile and execute C "scripts" in one go on the command line. Also has shebang support
c99sh 106 4 months ago Run C files using hash-bang
cdecl Online service to translate C declarations into English and vice versa. Public domain
cinclude2dot Graphs include dependencies in a project using Graphviz. or or
ClangCheck Static analysis tool, designed to work with Clang
conan.io Something of a package manager for C.
Cppcheck Static analysis tool. Despite the name, works well with C
Glade RAD tool to enable quick development of GTK+ GUIs
GMSL GNU Make Standard Library; a collection of additional functionality for GNU Make
GNU Global Source code tagging tool
GPP General-purpose preprocessor. More versatile than the C preprocessor, but more flexible than m4
Highlight Converts source code to formatted text with nice highlighting
include-what-you-use 4,142 about 1 month ago Helps find unecessary inclusions and make suggestions for fixing them. Based on LLVM/Clang (and only works with it)
incbin 994 6 months ago Include binary files in your C/C++ applications with ease
indent Formats C source code automatically to make it easier to read. Also converts from one style of source to another
SMACK 431 3 months ago Modular software verification toolchain and a self-contained software verifier. Currently only works with programs compiled using Clang
unifdef Removes #ifdef and #if directives with their delimited text without touching any other part of the file. or

Awesome C / Utilities

ApeTagLibs 12 3 months ago Library for working with APEv2 tags
argparse 694 6 months ago Command-line argument parsing library, inspired by Python's argparse module
attr Commands for manipulating filesystem extended attributes
bfd Library for manipulating binary object files. Part of GNU binutils
Caffeine 100 over 4 years ago Library for building daemons and services for Linux and FreeBSD systems
CException Implementation of exceptions
CommonMark 4,895 4 months ago Implementation of the CommonMark spec
cosmopolitan 18,558 about 1 month ago fast portable static native textmode containers (build C programs for Linux\Mac\Windows in one go)
cpu_features 2,468 about 1 month ago Get CPU features at runtime.
CRIU Checkpoint/Restore In Userspace; a software tool (with a C API) for 'freezing' a running application to disk, then restoring it. or
D-Bus Simple way for applications to talk to one another. or
Discount Simple implementation of a Markdown parser
dlx 50 almost 3 years ago Implementation of , with example solvers
docopt.c 320 8 months ago Implementation of a command-line option parser
dyncall Another foreign function interface library
GNU FreeIPMI In-band and out-of-band IPMI implementation
GNU gperf Perfect hash function generator, given a list of strings. Outputs C code
GNU Libffcall Collection of libraries for building foreign function interfaces
Hoedown 958 over 4 years ago Fully standards-compliant, extension-supporting, UTF-8 aware, fast Markdown parser
Kitsune Efficient, general-purpose framework for dynamic software updating
libCello Library introducing higher-level programming to C
libcmark 1,667 about 1 month ago Library for parsing the CommonMark dialect of Markdown
libcoap 809 about 1 month ago Implementation of the . or
libcox Library which permits cross-platform system calls and standard utilities across different operating systems
libffi 4 over 2 years ago Portable foreign-function interface library
libgeohash 105 over 5 years ago Pure C implementation of the Geohash algorithm
libgit2 Portable implementation of the Git core methods, provided as a re-entrant linkable library.
libgss Generic Security Service
libimobiledevice 6,737 about 2 months ago Cross-platform protocol library to communicate with iThings
libnfc 1,734 3 months ago Platform-independent Near-Field Communication library
libpostal 4,104 5 months ago Library for parsing and normalization of street addresses around the world. Powered by statistical NLP and open geo data
libtrading Implementation of network protocols for communicating with exchanges, dark pools and other trading venues. Supports FIX, FIX/FAST and many proprietary protocols
libusb Provides generic access to USB devices
libuv Cross-platform asynchronous I/O
libvldmail 53 5 months ago Your friendly email validation library. No external dependencies (not even regexps)
linenoise 3,829 5 months ago Small, self-contained alternative to readline and libedit
libXDGdirs 14 2 months ago An implementation of XDG Base Directory Specification
MegaMimes Library for getting the types of a file
ncurses Coloured terminal UI library
netbsd-curses 152 about 1 year ago Simplified and small version of ncurses, with the same interface
nope.c 694 about 7 years ago Ultra-light software platform for scalable server-side and networking applications (think node.js for C programmers)
obj.h 109 over 2 years ago A single-header supports OOP in pure C
parg 181 about 1 year ago A single-file reimplementation of with better defaults
pbc 1,626 about 2 years ago Protocol buffers library
progressbar 468 over 1 year ago Easy-to-use library for displaying text progress bars
rabbitmq-c 1,774 about 2 months ago Client library for
Ragel DSL for state machines that compiles to C
rmw safe-remove utility for the command line that can purge items from your waste directories after x number of days
Rogueutil 44 over 1 year ago Cross-platform library for creating text-based user interfaces (TUI)
sort 464 11 months ago Collection of sorting routines, which type-specialize at compile-time with a user-defined type
termbox 1,974 over 4 years ago Library for writing text-based interfaces
tinyexpr 1,619 5 months ago Tiny recursive-descent parser, compiler and evaluation engine for simple mathematical expressions
tm 42 about 1 year ago ⏱ Timer and Timeline Utils for C
Tulip Indicators Library of functions for technical analysis of financial data
whereami 476 5 months ago One-file library for locating the current executable on the file system
XLSX I/O Cross-platform library for reading and writing .xlsx files
xlsx_drone 15 about 1 month ago Fast Microsoft Excel's *.xlsx reader
zlog Reliable, pure C logging library
zproto 236 10 months ago Protocol framework for ZeroMQ
Metalang99 880 about 2 months ago Full-blown preprocessor metaprogramming
Datatype99 1,379 about 2 months ago Algebraic data types for C99
EasyLogger 3,820 about 2 months ago An ultra-lightweight, high-performance C/C++ log library

Awesome C / Web Frameworks

Concord 528 about 1 month ago A Discord API wrapper library written in C
facil.io Mini-framework for web applications. Includes a fast HTTP and Websocket server, and also supports custom protocols
kcgi CGI and FastCGI library for C
KLone Fully featured, multi-platform, web application development framework, targeted especially at embedded systems and appliances
Kore Easy-to-use web application framework for writing scalable web APIs in C

Awesome C / Windows Environments

Cygwin Designed to emulate a POSIX-compatible environment extensively under Windows.
MinGW-w64 Minimalist environment for C development on Windows with 64 bit support.
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

Backlinks from these awesome lists:

More related projects: