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.
9k stars
285 watching
831 forks
last commit: 4 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,594 | 7 months ago | Fast Artifical Neural Network library; an implementation of neural networks |
Genann | Simple ANN in C89, without additional dependencies | ||
KANN | 686 | almost 3 years ago | Two-file ANN library |
LibDEEP | 23 | over 5 years ago | Deep learning library |
m2cgen | 2,816 | 4 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 | 56 | 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 | 4 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 | 149 | 4 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,078 | about 1 month 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,586 | 6 days 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,573 | 10 days ago | C implementation of |
FiniteStateEntropy | 1,340 | 8 months ago | Two highly efficient compression codecs optimized for modern CPUs |
DENSITY | 1,017 | 12 days ago | Super-fast compression library |
heatshrink | 1,333 | 6 months ago | Data compression/decompression library for embedded and real-time systems |
fast_zlib | 133 | about 2 years ago | Improved zlib, which runs 2 to 10 times faster |
fastLZ | 439 | 4 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 | 98 | over 11 years ago | Minimal Huffman encoder and decoder. Public domain |
libzip | 307 | 23 days ago | C library for reading, creating and modifying zip archives |
libbzip2 | Patent-free, high-quality data compression library | ||
Lizard | 655 | 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 | 711 | 5 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,172 | about 5 years ago | Efficient string compression library |
squash | 405 | over 4 years ago | Compression abstraction library, complete with some utilities |
TurboPFor | 772 | 9 months ago | Fastest integer compression |
TurboRLE | 284 | over 1 year ago | Most efficient run-length encoding |
zip | 1,420 | 3 months ago | Really really small zip archive processing library |
Zlib | Massively spiffy yet delicately unobtrusive compression library | ||
libarchive | 3,050 | 4 days 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 | about 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,516 | over 2 years ago | A blazing fast and lightweight C asymmetric coroutine library |
libconcurrent | 361 | about 3 years ago | Concurrent programming library, using coroutines, for C11 |
libcsp | 1,309 | over 1 year ago | High performance concurrency C library influenced by the CSP model |
libdill | Library which makes structured concurrent programming easy | ||
libhl | 423 | 3 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,168 | 6 days ago | Message passing interface implementation |
pal | 302 | about 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 | 652 | 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,531 | 7 days 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 | 500 | 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 | 801 | 6 days ago | Columnar store with full-text search |
Hiredis | 6,258 | 17 days ago | Minimalistic client library for Redis |
libmongoc | High-performance client library for | ||
LMDB | Ultra-fast, ultra-compact key-value embedded data store | ||
MySQL | 10,879 | about 1 month 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,179 | 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 | 608 | almost 2 years ago | Lightweight database library, operating entirely in main memory |
FlashDB | 1,914 | about 1 month ago | An ultra-lightweight database that supports key-value and time series data |
TDengine | 23,395 | 6 days ago | High-performance, cloud native time-series database |
Awesome C / Data Structures | |||
C-Macro-Collections | 534 | 5 months ago | Generate simple and generic data structures using macros |
CLIST | 56 | over 2 years ago | Simple and lightweight implementation |
Collections-C | 2,829 | 6 months ago | Library of generic data structures |
ds | 51 | about 1 year ago | Common Data Structures and Algorithms |
igraph | A graph processing library | ||
kdtree | 395 | 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 | 9 months ago | Implementations for singly linked and doubly linked list functions |
M*LIB | 904 | 10 days 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 | 158 | 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 | over 9 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,575 | 6 days 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 | 691 | 4 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,269 | 2 months ago | Common libraries and data structures for C |
TBOX | 4,880 | 7 days ago | Multi-platform library with a large number of capabilities |
pspsdk | 874 | 18 days ago | An open-source SDK for PSP homebrew development. |
Awesome C / Game Programming | |||
Allegro | Cross-platform, video game development and multimedia library | ||
AssetKit | 188 | 3 months ago | 🎨 3D asset importer/exporter/util library based on COLLADA/glTF specs |
astera | 290 | 4 months ago | C99 Cross Platform 2D Game Library |
cglm | 2,329 | 2 months ago | 📽 Optimized OpenGL/Graphics Math (glm) for C |
Chipmunk2D | Fast and lightweight 2D game physics library | ||
cmt | 173 | 11 months ago | 🎮 C Bindings/Wrappers for Apple's METAL Graphics Framework |
Corange | 1,828 | 6 months ago | Game engine in pure C |
CSFML | Binding for | ||
Darkplaces | Modified version of the Quake2 engine | ||
Epoxy | 679 | 10 days ago | Library for handling OpenGL function pointer management |
exengine | 556 | 7 months ago | 3D game engine in C99 with a starting template |
Flecs | 6,463 | 6 days ago | A Multithreaded Entity Component System written for C89 & C99 |
Freecell Solver | 60 | 6 days 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 | almost 4 years ago | Maths library for games |
libao | Cross-platform audio library with a wide variety of outputs | ||
librg | 1,277 | 8 months ago | Pure C99 game networking library for building simple and elegant cross-platform multiplayer client-server solutions |
MATHC | 713 | 9 months ago | Math library for 2D and 3D programming |
Orx | Portable, lightweight, plugin-based, data-driven, 2D-oriented game engine | ||
Quake | 4,911 | 5 months ago | Quake engine |
Quake2 | 2,830 | 12 months ago | Quake2 engine |
raylib | Simple and easy-to-use library to learn video game programming | ||
RetroArch | 10,332 | 7 days 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 | about 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 | 112 | 7 months ago | Minimal A* implementation |
Awesome C / Graphics | |||
AssetKit | 188 | 3 months ago | 🎨 3D asset importer/exporter/util library based on COLLADA/glTF specs |
Cairo | 2D graphics library. or | ||
cmt | 173 | 11 months 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 | 543 | 4 months ago | ASCII renderer for terminal-based interfaces |
libgd | 903 | about 1 month 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,505 | 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,448 | over 1 year 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,475 | 4 months ago | Improved JPEG encoder |
nanovg | 5,186 | 8 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 | 341 | 6 days ago | A standalone 2D vector graphics library in C |
SAIL | 311 | 20 days 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,524 | 3 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,301 | 14 days 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 | 404 | 5 months ago | A barebones single-header GUI library for Win32, X11 and Essence |
Awesome C / Hashing | |||
CLHash | 266 | 8 months ago | Library implementing the ridiculously fast CLHash hashing function. Only works on Intel Haswell or newer |
HighwayHash | 1,544 | 7 months ago | Fast, strong, SIMD-using hash function. Also contains an implementation of SipHash (although this is slower) |
SpookyHash | 65 | over 3 years ago | Extremely fast hash function |
t1ha | 343 | over 2 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 | 337 | about 2 months 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 | 66 | 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,626 | 10 days ago | Fast lexical analyzer generator |
GNU Bison | General-purpose parser generator that converts an annotated context-free grammar into a range of parsers | ||
hammer | 284 | about 4 years ago | Parser combinators for binary formats |
mpc | 2,685 | 6 months ago | Parser combinator library |
owl | 746 | about 1 year 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,594 | about 2 years ago | Smart pointers for C |
rpmalloc | 2,164 | 5 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,314 | 4 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,606 | 3 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 | over 2 years ago | C Hypertext Library - A library for writing web applications in C |
czmq | High-level binding for ZeroMQ | ||
Dyad.c | 1,438 | about 4 years ago | Lightweight, easy, asynchronous networking library |
GNU adns | Advanced, easy-to-use, asynch-capable DNS client library and utilities | ||
gumbo-parser | 5,163 | 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,831 | 15 days 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,714 | 4 days 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 | 26 days ago | A very flexible, lightweight and fully asynchronous HTTP server library based on libev and http-parser for Embedded Linux |
LibVNCServer | 1,133 | 21 days ago | Cross-platform libraries to implement VNC server and/or client functionality |
libwebsock | Easy-to-use and powerful web socket library | ||
libzmq | 9,765 | 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 | 783 | 6 months ago | A portable MQTT C client for embedded systems and PCs alike |
nanomsg | 6,003 | 10 months ago | C-based implementation of ZeroMQ |
NNG | nanomsg-next-generation - lightweight brokerless messaging | ||
oSip | SIP implementation without additional dependencies | ||
silgy | 79 | almost 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 | about 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 | about 2 months ago | Framework for proximity-based peer-to-peer applications |
Awesome C / Numerical | |||
apophenia | Library for statistical and scientific computing | ||
Arb | 458 | 8 months ago | Library for arbitrary-precision interval arithmetic |
ATLAS | Automatically Tuned Linear Algebra Software | ||
clBLAS | 843 | 4 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 | 23 | almost 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 | 550 | 6 days 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,469 | about 1 month 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 | 198 | 27 days ago | PDFio is a simple C library for reading and writing PDF files |
Awesome C / Regex | |||
Onigmo | 626 | 5 months ago | Fork of Oniguruma, supporting more advanced regexps |
Oniguruma | 2,310 | 4 days 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 | 804 | 2 months ago | POSIX-compliant, feature-full regex library |
Awesome C / Serialization | |||
binn | 454 | 9 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 | 340 | 7 months ago | Implementation of the serialization protocol |
flatcc | 653 | 23 days ago | compiler and library |
libavro | Implementation of the Avro data serialization system | ||
mpack | 545 | 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,692 | 4 months ago | Implementation of Google Protocol Buffer |
tpl | 372 | over 3 years ago | Small binary serialization library |
xdr | External Data Representation; a standard for data serialization. Standard (no license applicable) | ||
pbtools | 74 | 8 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,874 | 3 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,272 | 8 months ago | Collection of single-header libraries. Various licenses, all open source |
par | 865 | over 2 years ago | Bunch of single-file libraries |
Snippets | 197 | about 2 months ago | Useful code snippets and header-only libraries. Public domain |
stb | 26,900 | 12 days ago | Range of single-file libraries. Public domain |
tinyheaders | 4,313 | about 1 month ago | Collection of header-only libraries, primarily oriented toward game development |
zpl | 993 | 3 months ago | C99 cross-platform header-only library with many goodies. [ , ][BSD-3-Clause, Unlicense] |
Awesome C / Standard Libraries | |||
Bionic | 605 | 6 days ago | Google's standard library, developed for Android |
cloudlibc | 296 | about 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 | 171 | 8 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 | about 2 years ago | algorithm implementation. |
libunistring | Library for manipulating Unicode strings | ||
libgiconv | Text conversion library | ||
librope | 274 | about 3 years ago | UTF-8 rope ('heavy' string) library |
SDS | 4,938 | 7 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 | 307 | 23 days ago | Yet another string library for C language |
StringZilla | 2,223 | 9 days ago | Up to 10x faster SIMD and SWAR-accelerated string search, sort, hashes, edit distances, alignments, and generators |
utf8.h | 1,746 | 26 days ago | Single-header UTF-8 library, designed to mimic C-style string functions. Public domain |
utf8proc | 1,058 | 3 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 | 7 months ago | Simple, low-memory-use JSON parser |
json-c | 2,977 | 12 days ago | Easily work with JSON in C. Comes with a reference-counted object model, and aims for conformance with |
json.h | 714 | 4 months ago | Single-file non-streaming JSON parser |
parson | 1,362 | 6 months ago | Two-file, C89-compatible JSON parser |
WJElement | 108 | 9 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,471 | 25 days ago | Small and simple INI file parser, good for embedded systems |
iniparser | 984 | 4 months ago | Parser for .ini files |
libconfini | Yet another INI parser | ||
minIni | 385 | 7 months ago | Small and portable INI parser |
Awesome C / Structured File Processing / Others | |||
libbson | 347 | about 4 years ago | BSON utility library |
libcbor | 342 | 12 days ago | : CBOR protocol implementation for C and others |
libconfuse | 476 | 9 months ago | Small configuration file parser library |
libelf | 48 | over 2 years ago | Simple library for parsing ELF files |
libucl | 1,627 | 7 months ago | Universal configuration library parser |
libxo | 324 | 7 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 | 7 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 | 20 days ago | signal analysis software suite that supports various device types (such as logic analyzers, oscilloscopes, multimeters, and more). [ ][GPL] |
Awesome C / Testing | |||
CHEAT | 169 | almost 4 years ago | Simple unit testing framework |
Check | Unit testing framework | ||
ciut | A modern minimal hassle unit test framework | ||
clar | 203 | about 1 month 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 | 2 months ago | Yet another unit testing framework |
CUnit | Another unit testing framework | ||
greatest | 1,485 | over 1 year ago | Unit testing library in one file, with no memory allocation |
minctest | 55 | over 3 years ago | Unit testing microlibrary |
munit | Small unit testing framework | ||
Nala | 68 | over 2 years ago | A test framework for C projects |
Rexo | 28 | 12 months ago | Framework for C89/C++ featuring automatic registration of tests and a polished API |
Tau | 158 | 9 days 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 | 612 | almost 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,420 | about 1 month ago | Modern syntax checking for Emacs. For C, it can use either GCC or Clang as a back-end |
Neomake | 2,666 | 8 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,465 | 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,517 | 19 days ago | Fast memory error detector |
bcc | A byte array generator to import binary files directy from C in the spirit of xxd | ||
c | 2,096 | 12 months ago | Compile and execute C "scripts" in one go on the command line. Also has shebang support |
c99sh | 107 | about 2 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,122 | 11 days ago | Helps find unecessary inclusions and make suggestions for fixing them. Based on LLVM/Clang (and only works with it) |
incbin | 985 | 4 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 | about 1 month 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 | about 1 month ago | Library for working with APEv2 tags |
argparse | 690 | 4 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 | about 4 years ago | Library for building daemons and services for Linux and FreeBSD systems |
CException | Implementation of exceptions | ||
CommonMark | 4,889 | 2 months ago | Implementation of the CommonMark spec |
cosmopolitan | 18,408 | 5 days ago | fast portable static native textmode containers (build C programs for Linux\Mac\Windows in one go) |
cpu_features | 2,463 | 9 days 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 | 6 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 | 957 | 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,652 | about 2 months ago | Library for parsing the CommonMark dialect of Markdown |
libcoap | 801 | 19 days ago | Implementation of the . or |
libcox | Library which permits cross-platform system calls and standard utilities across different operating systems | ||
libffi | 4 | about 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,676 | 7 days ago | Cross-platform protocol library to communicate with iThings |
libnfc | 1,713 | 22 days ago | Platform-independent Near-Field Communication library |
libpostal | 4,076 | 3 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 | 52 | 3 months ago | Your friendly email validation library. No external dependencies (not even regexps) |
linenoise | 3,805 | 3 months ago | Small, self-contained alternative to readline and libedit |
libXDGdirs | 14 | 13 days 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 | 10 months ago | Simplified and small version of ncurses, with the same interface |
nope.c | 693 | almost 7 years ago | Ultra-light software platform for scalable server-side and networking applications (think node.js for C programmers) |
obj.h | 107 | over 2 years ago | A single-header supports OOP in pure C |
parg | 180 | about 1 year ago | A single-file reimplementation of with better defaults |
pbc | 1,624 | about 2 years ago | Protocol buffers library |
progressbar | 467 | over 1 year ago | Easy-to-use library for displaying text progress bars |
rabbitmq-c | 1,771 | 24 days 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 | 43 | over 1 year ago | Cross-platform library for creating text-based user interfaces (TUI) |
sort | 463 | 9 months ago | Collection of sorting routines, which type-specialize at compile-time with a user-defined type |
termbox | 1,972 | about 4 years ago | Library for writing text-based interfaces |
tinyexpr | 1,600 | 3 months ago | Tiny recursive-descent parser, compiler and evaluation engine for simple mathematical expressions |
tm | 42 | 11 months ago | ⏱ Timer and Timeline Utils for C |
Tulip Indicators | Library of functions for technical analysis of financial data | ||
whereami | 473 | 3 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 | 6 months ago | Fast Microsoft Excel's *.xlsx reader |
zlog | Reliable, pure C logging library | ||
zproto | 237 | 9 months ago | Protocol framework for ZeroMQ |
Metalang99 | 872 | 14 days ago | Full-blown preprocessor metaprogramming |
Datatype99 | 1,375 | 14 days ago | Algebraic data types for C99 |
EasyLogger | 3,783 | 8 months ago | An ultra-lightweight, high-performance C/C++ log library |
Awesome C / Web Frameworks | |||
Concord | 523 | 25 days 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 |