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: about 2 years ago
Linked from 5 awesome lists

awesomeawesome-listclist

Awesome C / AI

ccvC-based/Cached/Core Computer Vision library; modern computer vision
CraniumPortable, header-only ANN library in C99
FANN1,601over 2 years agoFast Artifical Neural Network library; an implementation of neural networks
GenannSimple ANN in C89, without additional dependencies
KANN689almost 5 years agoTwo-file ANN library
LibDEEP23over 7 years agoDeep learning library
m2cgen2,826about 2 years agoA CLI tool to transpile trained classic ML models into a native C code with zero dependencies
sodAn Embedded Computer Vision & Machine Learning Library

Awesome C / Benchmarking

b6357over 3 years agoLight-weight micro-benchmarking tool for C

Awesome C / Build Systems

AutotoolsAlso known as the GNU build system (automake, autoconf, libtool...) is one of the most widely used build systems (configure && make)
Autotools project skeleton22about 2 years agoA simple autotools skeleton (template) to quickly bootstrap new projects
CMakeCross-platform family of tools designed to build, package and test software
GNU MakeTool which controls the generation of executables and other non-source files of a program
MesonExtremely fast, user-friendly build system. Based on Ninja
PremakeCommand-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
SConsSoftware construction tool using Python
xmakeCross-platform build utility
zproject148almost 2 years agoProject generator and build system support tool

Awesome C / Compilers

ccacheCompiler cache designed to speed up recompilation
ClangCompiler for LLVM. Supports C11
cprocA C11 compiler using QBE as a backend
distcc2,091almost 2 years agoProgram that allows builds to be distributed among several machines
FirmLibrary 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
GCCProvides a C compiler as part of its compiler set. Supports C11
PCCVenerable compiler. Supports C99. , all open source

Awesome C / Compression

bloscExtremely fast, multi-threaded, meta-compressor library. Various licenses, all open source
Brotli13,639almost 2 years agoGeneral-purpose lossless compression algorithm library. Has speeds comparable to DEFLATE, but much higher compression ratios.
clzipC version of the high-quality data compressor (LZMA implementation)
CRoaring1,582almost 2 years agoC implementation of
FiniteStateEntropy1,344over 2 years agoTwo highly efficient compression codecs optimized for modern CPUs
DENSITY1,019almost 2 years agoSuper-fast compression library
heatshrink1,334over 2 years agoData compression/decompression library for embedded and real-time systems
fast_zlib132almost 4 years agoImproved zlib, which runs 2 to 10 times faster
fastLZ447about 2 years agoLightning-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
huffandpuff99over 13 years agoMinimal Huffman encoder and decoder. Public domain
libzip312almost 2 years agoC library for reading, creating and modifying zip archives
libbzip2Patent-free, high-quality data compression library
Lizard653over 5 years agoFormerly LZ5; an efficient compressor with fast decompression. Achieves compression ratios comparable with zip and zlib at decompression speeds of 1000MB/s and faster
lz4Library for an extremely fast compression algorithm
lzoFast data compression library
pixz714almost 2 years agoParallel, indexed xz compressor
shocoCompressor for small text strings
SIMDComp490about 3 years agoSimple library for compressing lists of integers using binary packing. Makes use of SIMD instructions on x86
smaz1,174almost 7 years agoEfficient string compression library
squash409over 6 years agoCompression abstraction library, complete with some utilities
TurboPFor776over 2 years agoFastest integer compression
TurboRLE285over 3 years agoMost efficient run-length encoding
zip1,441almost 2 years agoReally really small zip archive processing library
ZlibMassively spiffy yet delicately unobtrusive compression library
libarchive3,066almost 2 years agolibarchive is a portable, efficient C library that can read and write streaming archives in a variety of formats
zlib-ng15over 5 years agoZlib replacement with optimizations for 'next-generation' systems
ZstandardFast, lossless compression algorithm, targeting real-time compression scenarios at zlib-level or better compression ratios

Awesome C / Concurrency and Parallelism

cchanSmall library for channel constructs for inter-thread communication. Public domain
checkedthreads290about 13 years agoA simple library for parallelism, with built-in checking for race conditions
ckConcurrency primitives, safe memory reclamation mechanisms and non-blocking data structures
FCFS RWLockFirst-come first-served Readers/Writers lock for POSIX threads
Libaco3,525over 4 years agoA blazing fast and lightweight C asymmetric coroutine library
libconcurrent360almost 5 years agoConcurrent programming library, using coroutines, for C11
libcsp1,312about 3 years agoHigh performance concurrency C library influenced by the CSP model
libdillLibrary which makes structured concurrent programming easy
libhl427about 2 years agoLibrary implementing a thread-safe API to manage a range of data structures. Also provides some supporting functions and structures for concurrent and lockfree programming
liburcuData synchronization library, which scales linearly with the number of cores
millGo-style concurrency
oclkit16over 9 years agoTwo-file OpenCL wrapper
OCL-MLAOpenCL Mid-Level Abstractions
OpenMPSet of pragmas designed to allow for easy parallelization of code. Standard (licensing not applicable)
Open MPI2,200almost 2 years agoMessage passing interface implementation
pal301almost 6 years agoOptimized library for maths, parallel processing and data movement
pthPortable implementation for non-preemptive priority-based scheduling for multiple threads of execution
pthreadsPOSIX thread library. Standard (no license applicable)
TinyCThreadPortable, small implementation of the C11 threads API

Awesome C / Crypto

GNU SASLImplementation of the Simple Authentication and Security Layer and a few common SASL mechanism
GnuTLSSecure communication library, implementing SSL, TLS and DTLS
libgcryptGeneral-purpose cryptography library, with a range of available ciphers
OpenSSLImplementation of the SSL and TLS protocols. Also includes a cryptography library.
liboqsLibrary for quantum-resistant cryptographicl algorithms
libsodiumModern and easy-to-use crypto library
libtomcryptFairly comprehensive, modular and portable cryptographic toolkit. Public domain
mbed TLSAnother crypto implementation
MIRACL655over 5 years agoMultiprecision Integer and Rational Arithmetic Cryptographic Library; an SDK for elliptic curve cryptography
retterCollection of hash functions, ciphers, tools, libraries and materials related to cryptography and security. Public domain
s2n4,544almost 2 years agoC99 implementation of the TLS/SSL protocols, designed to be simple, fast and with security as a priority
sphlibSet of implementations of various hash functions, including several cryptographic ones
trezor-crypto501over 6 years agoHeavily optimized crypto algorithms for embedded devices
bfish3almost 3 years agoA single include ANSI-C Blowfish ECB crypto library. Public domain

Awesome C / Database

BerkeleyDBLibrary for a high-performance embedded database for key-value data
DuckDBFast in-process analytical database, with C API
EJDB2Embeddable JSON Database engine
Groonga803almost 2 years agoColumnar store with full-text search
Hiredis6,283almost 2 years agoMinimalistic client library for Redis
libmongocHigh-performance client library for
LMDBUltra-fast, ultra-compact key-value embedded data store
MySQL10,964almost 2 years agoThe world's most popular open source database
PostgreSQLPowerful object-relational database system
RedisAdvanced key-value store
sophiaModern, embeddable key-value database
sparkey1,178about 3 years agoSimple constant key/value storage library. Designed for read-heavy loads with infrequent, large bulk inserts
SQLiteSelf-contained, serverless, zero-configuration, transactional SQL database engine. Public domain
UnQLiteSelf-contained, serverless, zero-configuration, transactional NoSQL engine
WhiteDB605almost 4 years agoLightweight database library, operating entirely in main memory
FlashDB1,948almost 2 years agoAn ultra-lightweight database that supports key-value and time series data
TDengine23,479almost 2 years agoHigh-performance, cloud native time-series database

Awesome C / Data Structures

C-Macro-Collections536about 2 years agoGenerate simple and generic data structures using macros
CLIST56over 4 years agoSimple and lightweight implementation
Collections-C2,842over 2 years agoLibrary of generic data structures
ds51about 3 years agoCommon Data Structures and Algorithms
igraphA graph processing library
kdtree396about 5 years agoSimple library for working with KD-trees
libavlLibrary containing a range of self-balancing binary trees
libcdadaA small, portable, MACRO-less library for basic data structures (list, set, map, queue...) in C (C++ backend)
liblfdsPortable lock-free data structure library. Public domain (more exactly, whatever license you want)
libsrtSoft and hard real-time data structures.
list.h49over 2 years agoImplementations for singly linked and doubly linked list functions
M*LIB919almost 2 years agoLibrary for generic, but typesafe C containers. Implemented as header-only
offbrand81almost 11 years agoCollection of generic, reference-counted data structures
PackedArray160over 4 years agoRandom-access array of tightly packed unsigned integers of any desired width. Has a SIMD-optimized implementation
rb3ptrRed-Black tree. Exposes almost all implementation primitives, so can be used for scenarios like augmentation, multiple compatible ordering functions, and more
uthashSingle-file hash table implementation
vector.h44over 12 years agoHeader library for typed lists

Awesome C / Debugging

C-ReduceTool 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
CBMCC Bounded Model Checker; a tool for verification of array bounds, pointer safety and user-specified assertions
cflowAnalyzes a collection of source files and prints a graph charting control flow in the program
ComplexityTool for measuring the complexity of source code
CScoutSource code analyzer and refactoring browser for C programs
DDDGraphical front-end for a range of command-line debuggers
debug279over 11 years agoOne-header library for easier 'printf debugging'
ESBMCEfficient SMT-based Bounded Model Checker; a tool for verification of single and multithread programs, user assertions, overflow, and pointer/memory safety
GDBGNU Project debugger
lldbLLVM debugger
rrDebugger that records non-deterministic executions to allow for deterministic debugging
ValgrindRange of dynamic analysis tools, including a leak checker

Awesome C / Documentation Generation

CxrefGenerates documentation in either LaTeX, HTML, RTF or SGML
DocOnceModestly tagged markup language that can be used to generate a range of formats
DoxygenDe-facto standard tool for generating documentation from annotated sources. Can generate a large range of formats

Awesome C / Editors

Anjuta DevStudioGNOME IDE
Code::BlocksExtendable, configurable IDE supporting C
CodeLiteCross-platform IDE
GeanySmall and fast IDE
KDevelopKDE IDE
zinjaISimple, lightweight and feature-rich IDE

Awesome C / Embeddable Scripting Engines

DuktapeEmbeddable Javascript engine with a focus on portability and compact footprint
MetaCall1,590almost 2 years agoCross-platform Polyglot Runtime which supports NodeJS, JavaScript, TypeScript, Python, Ruby, C#, Wasm, Java, Cobol and more

Awesome C / Frameworks

APRApache Portable Runtime; another library of cross-platform utility functions
C AlgorithmsCollection of common algorithms and data structures
CPLThe Common Pipeline Library; a set of libraries designed to be a comprehensive, efficient and robust software toolkit
EFLLarge collection of useful data structures and functions. Various licenses, all open source
GLibLibrary of utility functions and structures, designed to be portable, efficient and powerful
klibSmall and lightweight implementations of common algorithms and data structures
libcorkUtility functions and structures, designed for resource-constrained systems. Can be embedded
libnih89almost 5 years agoLightweight library of functions and structures
libUSmall library of basic utilities, including memory allocation, string manipulation and logging
PBLLarge library of utilities, featuring data structures, among other things
plibsys695almost 2 years agoCross-platform system C library. Zero third-party dependencies, uses only native system calls
qlibcSimple and powerful library, designed as a replacement for GLib while focusing on being small and light
sc2,284about 2 years agoCommon libraries and data structures for C
TBOX4,906almost 2 years agoMulti-platform library with a large number of capabilities
pspsdk887almost 2 years agoAn open-source SDK for PSP homebrew development.

Awesome C / Game Programming

AllegroCross-platform, video game development and multimedia library
AssetKit189about 2 years ago🎨 3D asset importer/exporter/util library based on COLLADA/glTF specs
astera292about 2 years agoC99 Cross Platform 2D Game Library
cglm2,364almost 2 years ago📽 Optimized OpenGL/Graphics Math (glm) for C
Chipmunk2DFast and lightweight 2D game physics library
cmt177almost 3 years ago🎮 C Bindings/Wrappers for Apple's METAL Graphics Framework
Corange1,838over 2 years agoGame engine in pure C
CSFMLBinding for
DarkplacesModified version of the Quake2 engine
Epoxy680almost 2 years agoLibrary for handling OpenGL function pointer management
exengine562over 2 years ago3D game engine in C99 with a starting template
Flecs6,556almost 2 years agoA Multithreaded Entity Component System written for C89 & C99
Freecell Solver60almost 2 years agoSet of libraries and command-line programs for automatically solving FreeCell and some similar variants of card Solitaire
FreeGLUTAlternative to the OpenGL Utility Toolkit. Allows the creation and management of windows with OpenGL contexts
GLFWMulti-platform library for creating windows with OpenGL contexts
ioquake3Quake3 engine, freed at last
kazmath528almost 6 years agoMaths library for games
libaoCross-platform audio library with a wide variety of outputs
librg1,287over 2 years agoPure C99 game networking library for building simple and elegant cross-platform multiplayer client-server solutions
MATHC722over 2 years agoMath library for 2D and 3D programming
OrxPortable, lightweight, plugin-based, data-driven, 2D-oriented game engine
Quake4,959over 2 years agoQuake engine
Quake22,844almost 3 years agoQuake2 engine
raylibSimple and easy-to-use library to learn video game programming
RetroArch10,438almost 2 years agoReference frontend for
SDL2Cross-platform library designed to provide low-level access to audio, keyboard, mouse, joystick and graphics hardware via OpenGL
sdl-gpu1,199about 4 years agoLibrary for high-performance, modern 2D graphics. Based on SDL
SIGILSound, Input and Graphics Integration Library; a simple alternative to other libraries for doing all those things. Various licenses, all open source
uastar127over 2 years agoMinimal A* implementation

Awesome C / Graphics

AssetKit189about 2 years ago🎨 3D asset importer/exporter/util library based on COLLADA/glTF specs
Cairo2D graphics library. or
cmt177almost 3 years ago🎮 C Bindings/Wrappers for Apple's METAL Graphics Framework
giflibLibrary for reading and writing gif images
grapheneThin layer of graphical data types
heman470over 5 years agoTiny library of image utilities dealing with height maps, normal maps, distance fields and the like
libcaca550about 2 years agoASCII renderer for terminal-based interfaces
libgd906almost 2 years agoLibrary for the dynamic creation of images by programmers
libimagequantSmall, portable library for high-quality conversion of RGBA images to 8-bit indexed colour images
libjpeg-turboFaster library for reading and writing JPEG files.
libpngOfficial PNG reference library
libRSVGLibrary to render SVG files using Cairo
libsixel2,523about 3 years agoLibrary implementing the SIXEL protocol, allowing beautiful graphics in your terminal
libspngA simpler interface for reading and writing PNG files
libvipsImage processing library
libxmiFunction library for rasterizing 2D vector graphics
lightmapper1,452over 3 years agoSingle-file library for lightmap baking, using an existing OpenGL renderer. Public domain
little CMSA Color Management System. It provides fast transforms between ICC profiles
mozjpeg5,484about 2 years agoImproved JPEG encoder
nanovg5,214over 2 years agoAnti-aliased 2D vector drawing library on top of OpenGL, for UI and visualizations
OpenGLIndustry standard for high-performance graphics, with a native C binding.
PlutoVG350almost 2 years agoA standalone 2D vector graphics library in C
SAIL311almost 2 years ago⛵ The missing small and fast image decoding library for humans (not for machines)

Awesome C / Graphical User Interface

GTK+Cross-platform widget toolkit
IUPAnother cross-platform widget toolkit
microui3,568about 2 years agoTiny immediate-mode UI library written in portable ANSI C
nappguiProfessional SDK to build cross-platform desktop applications using C
nuklear9,406almost 2 years agoSmall, C89, single-header widget toolkit. Public domain
tinyfiledialogsSingle-file library for simple dialogs. Compatible with many other toolkits and OSes
TkBasic widget toolkit. Part of Tcl/Tk
XForms ToolkitWidget toolkit designed for the XWindow system
LVGLembedded GUI with easy-to-use graphical elements, beautiful visuals and a low memory footprint
luigi406about 2 years agoA barebones single-header GUI library for Win32, X11 and Essence

Awesome C / Hashing

CLHash268over 2 years agoLibrary implementing the ridiculously fast CLHash hashing function. Only works on Intel Haswell or newer
HighwayHash1,549over 2 years agoFast, strong, SIMD-using hash function. Also contains an implementation of SipHash (although this is slower)
SpookyHash67over 5 years agoExtremely fast hash function
t1ha345over 4 years agoFast Positive Hash - a portable, fast hash function
xxHashExtremely 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.game341almost 2 years agoTiny 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 C67over 3 years 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 5EFull reference book for C99
C in a Nutshell 2EConcise reference book for C11
C Pocket ReferenceConcise reference book for C99
The C Programming Language 2EOriginal book on C, by its creators

Awesome C / Learning, Reference and Tutorials / Beginner books

C Primer Plus 6EComplete tutorial on programming in C11
C Programming: A Modern ApproachExcellent 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 CGood programming book on C
Understanding and Using C PointersIn-depth resource on pointers in C
ZeroMQBook for using ZeroMQ with C

Awesome C / Learning, Reference and Tutorials / Advanced books

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

Awesome C / Lexing and Parsing

flex3,659almost 2 years agoFast lexical analyzer generator
GNU BisonGeneral-purpose parser generator that converts an annotated context-free grammar into a range of parsers
hammer285almost 6 years agoParser combinators for binary formats
mpc2,691over 2 years agoParser combinator library
owl748almost 2 years agoA parser generator for visibly pushdown languages
re2cLexer generator, producing fast lexers, with access to its internals. Public domain

Awesome C / Memory Management

Boehm GCGarbage collection for C. Various licenses, all open source
jemallocMalloc implementation that emphasizes avoidance of fragmentation and scalable concurrency support
Lockless Memory AllocatorEfficient memory allocator
libcsptr1,608almost 4 years agoSmart pointers for C
rpmalloc2,186about 2 years agoThread-caching, fast memory allocator, naturally aligned on 32-byte boundaries. Public domain
tallocHierarchical, reference-counted memory pool system with destructors
tlsfTwo-Level Segregated Fit allocator; a general-purpose, dynamic memory allocator designed to meet real-time requirements.

Awesome C / Multimedia

aubio3,336about 2 years agoLibrary for audio and music analysis
FFMPEGComplete, cross-platform solution to record, convert and stream audio and video
GStreamerFramework for audio and visual media
libmpvMusic-playing library
libsndfileLibrary for reading and writing sound files. Supports many formats. or
libsoundioLibrary for cross-platform, real-time audio input and output. Has a range of back-ends
libVLCComplete multimedia library for audio and video encoding, decoding, playing and streaming
lodepngSimple PNG image decoder and encoder, requiring no other dependencies
minimp31,621about 2 years agoLightweight MP3 decoder single header library
SoundpipeLightweight music DSP library

Awesome C / Networking and Internet

asnlcCompiler of ASN.1 specifications into C source code
CHL269over 4 years agoC Hypertext Library - A library for writing web applications in C
czmqHigh-level binding for ZeroMQ
Dyad.c1,442almost 6 years agoLightweight, easy, asynchronous networking library
GNU adnsAdvanced, easy-to-use, asynch-capable DNS client library and utilities
gumbo-parser5,166over 3 years agoHTML5 parsing library in C99
H20A new-generation HTTP server
llhttpHTTP request/response parser
ldnsLibrary to simplify DNS programming
libcurlClient-side URL transfer library, supporting a wide range of formats
LibEtPanMail library providing an efficient network for IMAP, SMTP, POP and NNTP
libevYet another event loop
libeventEvent loop replacement for network servers
libhttpdLibrary to add basic web server capabilities to an application or embedded device
libhv6,880almost 2 years agoCross platform event loop library
libidnImplementation of the Stringprep, Punycode and IDNA specifications
libmicrohttpdSmall library that makes it easy to run an HTTP server as part of another application
libnlis 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...)
libonionHTTP server library, designed to be easy to use
libpcap2,733almost 2 years agoAPI provides to various kernel packet capture mechanism
libquickmailLibrary intended to give developers a way to send email from their applications. Supports multiple To/Cc/Bcc recipients and attachments without size limits
libsaguiLibrary for cross-platform HTTP servers
libuhttpd386almost 2 years agoA very flexible, lightweight and fully asynchronous HTTP server library based on libev and http-parser for Embedded Linux
LibVNCServer1,141almost 2 years agoCross-platform libraries to implement VNC server and/or client functionality
libwebsockEasy-to-use and powerful web socket library
libzmq9,817almost 2 years agoCore ZeroMQ library, a high-performance asynchronous messaging library, aimed at use in distributed or concurrent applications. C API (backend C++) with static linking exception
lwanExperimental, scalable, high-performance HTTP server
mongooseEmbedded web server
MQTT-C789over 2 years agoA portable MQTT C client for embedded systems and PCs alike
nanomsg6,014over 2 years agoC-based implementation of ZeroMQ
NNGnanomsg-next-generation - lightweight brokerless messaging
oSipSIP implementation without additional dependencies
silgy79over 4 years agoAsynchronous HTTP(S) engine for C/C++ projects
socket99143over 9 years agoC99 wrapper for the BSD sockets API
twitc24almost 6 years agoMini library for interacting with the Twitter OAuth API
uriparserStrictly RFC 3986-compliant URI parsing and handling library
WslayWebSocket library. Implements version 13 of the WebSocket protocol, as described in RFC 6455
zyre879almost 2 years agoFramework for proximity-based peer-to-peer applications

Awesome C / Numerical

apopheniaLibrary for statistical and scientific computing
Arb459over 2 years agoLibrary for arbitrary-precision interval arithmetic
ATLASAutomatically Tuned Linear Algebra Software
clBLAS845about 2 years agoBLAS functions written in OpenCL
cmathlMath library with a great variety of mathematical functions with CMake build support. Seeks to be close to C89/C90 compliant for portability
CubaLibrary for multidimensional numerical integration
fft-c25almost 5 years agoA high-performance Fourier Transform from netlib's fftpack; wrapped in a user-friendly format [ ][ MIT]
FFTWThe Fastest Fourier Transform in the West; a highly optimized fast Fourier transform routine
FLINTFast Library for Number Theory; a library supporting arithmetic with numbers, polynomials, power series and matrices, among others
GLPKGNU Linear Programming Kit; a package designed for solving large-scale linear programming, mixed integer programming and other related problems
GMPGNU Multple Precision Arithmetic Library; a library for arbitrary-precision arithmetic. or
GNU MPCLibrary for complex number arithmetic
GNU MPFRLibrary for arbitrary-precision floating-point arithmetic
GNU MPRIAPortable mathematics library for multi-precision rational interval arithmetic
GSLThe GNU Scientific Library; a sophisticated numerical library.
KISS FFTSimple fast Fourier transform library
LAPACKEInterface to
LibTomMathPortable, number-theoretic, multiple-precision integer library. Supports algebra, digit manipulation, modular reductions, and various number-theoretic routines. Public domain
LibTomPolyPolynomial-related maths library. Public domain
PARI/GPComputer algebra system for number theory; includes a compiler to C
PETScSuite of data structures and routines for scalable parallel solution of scientific applications modelled by partial differential equations
SCS555almost 2 years agoSplitting Conic Solver; a numerical optimization package for solving large-scale convex cone problems
SLEPcLibrary for the solution of large, sparse eigenvalue problems on parallel computers
TomsFastMathSet of optimized maths operations (in assembly), suitable for cryptographic use. Public domain
Yeppp!Fast, SIMD-optimized mathematical library

Awesome C / Profiling

gperftools8,510almost 2 years agoCollection of utilities for measuring and improving performance
gprofPerformance analysis tool. Part of GNU binutils
OProfileStatistical profiler for Linux. Can profile any code (including the kernel!) with low overhead and without recompilation
perfLinux kernel-based profiler with a lot of functionality

Awesome C / PDF

pdfio204almost 2 years agoPDFio is a simple C library for reading and writing PDF files

Awesome C / Regex

Onigmo625over 2 years agoFork of Oniguruma, supporting more advanced regexps
Oniguruma2,331almost 2 years agoRegex library supporting a wide range of encodings, and incorporating many security-oriented fixes
PCREImplementation of regexes identical to that of Perl 5
SLRE535almost 6 years agoSuper Light Regular Expression library; a small implementation of a subset of Perl regex syntax
TRE811almost 2 years agoPOSIX-compliant, feature-full regex library

Awesome C / Serialization

binn455over 2 years agoBinary serialization format, meant to be compact, fast and easy-to-use
c-capnproto69over 3 years agoImplementation of the Cap'n Proto serialization protocol
cmp341over 2 years agoImplementation of the serialization protocol
flatcc654almost 2 years agocompiler and library
libavroImplementation of the Avro data serialization system
mpack549over 3 years agoAnother implementation of the serialization protocol
OPICObject Persistence in C; a revolutionary serialization framework, with matching on-disk and in-memory representations
protobuf-c2,709about 2 years agoImplementation of Google Protocol Buffer
tpl372over 5 years agoSmall binary serialization library
xdrExternal Data Representation; a standard for data serialization. Standard (no license applicable)
pbtools74over 2 years agoGoogle Protocol Buffers C source code generator

Awesome C / Source Code Collections

CCANModelled after Perl's CPAN, this is a big collection of code that does stuff. The full list is . Various licenses, all open source
clib4,885about 2 years agoSomething of a package manager. Comes with a
gnulibCollection of common GNU code. Various licenses, all open source
libdjbCollection of libraries doing various things. (Apparently) public domain
mmx1,276over 2 years agoCollection of single-header libraries. Various licenses, all open source
par869about 4 years agoBunch of single-file libraries
Snippets197almost 2 years agoUseful code snippets and header-only libraries. Public domain
stb27,210almost 2 years agoRange of single-file libraries. Public domain
tinyheaders4,334almost 2 years agoCollection of header-only libraries, primarily oriented toward game development
zpl996about 2 years agoC99 cross-platform header-only library with many goodies. [ , ][BSD-3-Clause, Unlicense]

Awesome C / Standard Libraries

Bionic605almost 2 years agoGoogle's standard library, developed for Android
cloudlibc298about 6 years agoStandard library based on the concept of
dietlibcStandard library designed for the smallest possible binaries
glibcThe GNU C Library; an implementation of the standard library.
muslStandard library, compatible with POSIX 2008 and C11. Designed for static linking
PDCLibThe Public Domain C Library. Implements most of C99 and some of C11
uClibc-ngSmall C library for developing embedded systems

Awesome C / Standard Libraries / Template libraries

CTL172over 2 years agoC CONTAINER TEMPLATE LIBRARY (CTL)

Awesome C / String Manipulation

bstringThe Better String Library
ICUInternational Components for Unicode; a library for Unicode support
levenstein.c82about 4 years agoalgorithm implementation.
libunistringLibrary for manipulating Unicode strings
libgiconvText conversion library
librope273almost 5 years agoUTF-8 rope ('heavy' string) library
SDS4,955over 2 years agoSimple Dynamic Strings; a library for handling strings in a simpler way, but one that is compatible with normal C string functions. Available via
stmr.c39over 6 years agoalgorithm implementation
str312almost 2 years agoYet another string library for C language
StringZilla2,290almost 2 years agoUp to 10x faster SIMD and SWAR-accelerated string search, sort, hashes, edit distances, alignments, and generators
utf8.h1,758almost 2 years agoSingle-header UTF-8 library, designed to mimic C-style string functions. Public domain
utf8proc1,069about 2 years agoLibrary for processing UTF-8 data

Awesome C / Structured File Processing / CSV

libcsv179about 4 years agoSimple, streaming CSV parser

Awesome C / Structured File Processing / JSON

JanssonLibrary for encoding, decoding and manipulating JSON
jfes70about 7 years agoJSON For Embedded Systems; simple JSON engine without any dependencies
jsmnMinimalistic JSON parser
json24over 2 years agoSimple, low-memory-use JSON parser
json-c2,997almost 2 years agoEasily work with JSON in C. Comes with a reference-counted object model, and aims for conformance with
json.h719about 2 years agoSingle-file non-streaming JSON parser
parson1,367over 2 years agoTwo-file, C89-compatible JSON parser
WJElement108over 2 years agoAdvanced JSON manipulation library, with support for JSON Schema. or or
YAJLFast streaming JSON parser library

Awesome C / Structured File Processing / INI

inih2,506almost 2 years agoSmall and simple INI file parser, good for embedded systems
iniparser984about 2 years agoParser for .ini files
libconfiniYet another INI parser
minIni393over 2 years agoSmall and portable INI parser

Awesome C / Structured File Processing / Others

libbson347almost 6 years agoBSON utility library
libcbor347almost 2 years ago: CBOR protocol implementation for C and others
libconfuse482over 2 years agoSmall configuration file parser library
libelf48over 4 years agoSimple library for parsing ELF files
libucl1,635over 2 years agoUniversal configuration library parser
libxo327over 2 years agoAllows 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

ExpatStream-oriented XML parser
libxml2Standards-compliant, portable XML parser
xml12over 2 years agoSimple, low-memory-use XML parser / tokenizer

Awesome C / Structured File Processing / YAML

libYAMLYAML 1.1 parser and emitter

Awesome C / Signal Processing

libsigrok311almost 2 years agosignal analysis software suite that supports various device types (such as logic analyzers, oscilloscopes, multimeters, and more). [ ][GPL]

Awesome C / Testing

CHEAT170over 5 years agoSimple unit testing framework
CheckUnit testing framework
ciutA modern minimal hassle unit test framework
clar203almost 2 years agoClear and simple unit testing framework
CMockMock/stub generator
cmockaUnit testing framework with support for mock objects
CriterionKISS, non-intrusive test framework
ctest230about 2 years agoYet another unit testing framework
CUnitAnother unit testing framework
greatest1,480over 3 years agoUnit testing library in one file, with no memory allocation
minctest55over 5 years agoUnit testing microlibrary
munitSmall unit testing framework
Nala68about 4 years agoA test framework for C projects
Rexo28almost 3 years agoFramework for C89/C++ featuring automatic registration of tests and a polished API
Tau161almost 2 years agoA 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
theft613almost 6 years agoProperty-based testing (similar to )
UnitySimple unit testing framework
utest39over 9 years agoSingle-header unit testing library

Awesome C / Text Editor Extensions

CCompletionNotepad++ autocompletion plugin. Works with all identifiers recognized by Ctags. This is a download link
CEDETCollection of Emacs Development Environment Tools; designed to provide IDE-like features to Emacs. Built-in
Flycheck2,423almost 2 years agoModern syntax checking for Emacs. For C, it can use either GCC or Clang as a back-end
Neomake2,671over 2 years agoAsync :make and linting framework for Neovim/Vim
Syntastic11,301about 4 years agoSyntax checking and linting for Vim
YASnippetEmacs code template system, with C templates for common snippets
YouCompleteMe25,503almost 2 years agoCode completion engine for Vim

Awesome C / Tools

Artistic StyleFast and small automatic source code formatter that supports C
address-sanitizer11,610almost 2 years agoFast memory error detector
bccA byte array generator to import binary files directy from C in the spirit of xxd
c2,107almost 3 years agoCompile and execute C "scripts" in one go on the command line. Also has shebang support
c99sh106almost 2 years agoRun C files using hash-bang
cdeclOnline service to translate C declarations into English and vice versa. Public domain
cinclude2dotGraphs include dependencies in a project using Graphviz. or or
ClangCheckStatic analysis tool, designed to work with Clang
conan.ioSomething of a package manager for C.
CppcheckStatic analysis tool. Despite the name, works well with C
GladeRAD tool to enable quick development of GTK+ GUIs
GMSLGNU Make Standard Library; a collection of additional functionality for GNU Make
GNU GlobalSource code tagging tool
GPPGeneral-purpose preprocessor. More versatile than the C preprocessor, but more flexible than m4
HighlightConverts source code to formatted text with nice highlighting
include-what-you-use4,142almost 2 years agoHelps find unecessary inclusions and make suggestions for fixing them. Based on LLVM/Clang (and only works with it)
incbin994about 2 years agoInclude binary files in your C/C++ applications with ease
indentFormats C source code automatically to make it easier to read. Also converts from one style of source to another
SMACK431almost 2 years agoModular software verification toolchain and a self-contained software verifier. Currently only works with programs compiled using Clang
unifdefRemoves #ifdef and #if directives with their delimited text without touching any other part of the file. or

Awesome C / Utilities

ApeTagLibs12almost 2 years agoLibrary for working with APEv2 tags
argparse694about 2 years agoCommand-line argument parsing library, inspired by Python's argparse module
attrCommands for manipulating filesystem extended attributes
bfdLibrary for manipulating binary object files. Part of GNU binutils
Caffeine100almost 6 years agoLibrary for building daemons and services for Linux and FreeBSD systems
CExceptionImplementation of exceptions
CommonMark4,895about 2 years agoImplementation of the CommonMark spec
cosmopolitan18,558almost 2 years agofast portable static native textmode containers (build C programs for Linux\Mac\Windows in one go)
cpu_features2,468almost 2 years agoGet CPU features at runtime.
CRIUCheckpoint/Restore In Userspace; a software tool (with a C API) for 'freezing' a running application to disk, then restoring it. or
D-BusSimple way for applications to talk to one another. or
DiscountSimple implementation of a Markdown parser
dlx50over 4 years agoImplementation of , with example solvers
docopt.c320over 2 years agoImplementation of a command-line option parser
dyncallAnother foreign function interface library
GNU FreeIPMIIn-band and out-of-band IPMI implementation
GNU gperfPerfect hash function generator, given a list of strings. Outputs C code
GNU LibffcallCollection of libraries for building foreign function interfaces
Hoedown958about 6 years agoFully standards-compliant, extension-supporting, UTF-8 aware, fast Markdown parser
KitsuneEfficient, general-purpose framework for dynamic software updating
libCelloLibrary introducing higher-level programming to C
libcmark1,667almost 2 years agoLibrary for parsing the CommonMark dialect of Markdown
libcoap809almost 2 years agoImplementation of the . or
libcoxLibrary which permits cross-platform system calls and standard utilities across different operating systems
libffi4almost 4 years agoPortable foreign-function interface library
libgeohash105over 7 years agoPure C implementation of the Geohash algorithm
libgit2Portable implementation of the Git core methods, provided as a re-entrant linkable library.
libgssGeneric Security Service
libimobiledevice6,737almost 2 years agoCross-platform protocol library to communicate with iThings
libnfc1,734almost 2 years agoPlatform-independent Near-Field Communication library
libpostal4,104about 2 years agoLibrary for parsing and normalization of street addresses around the world. Powered by statistical NLP and open geo data
libtradingImplementation of network protocols for communicating with exchanges, dark pools and other trading venues. Supports FIX, FIX/FAST and many proprietary protocols
libusbProvides generic access to USB devices
libuvCross-platform asynchronous I/O
libvldmail53about 2 years agoYour friendly email validation library. No external dependencies (not even regexps)
linenoise3,829about 2 years agoSmall, self-contained alternative to readline and libedit
libXDGdirs14almost 2 years agoAn implementation of XDG Base Directory Specification
MegaMimesLibrary for getting the types of a file
ncursesColoured terminal UI library
netbsd-curses152over 2 years agoSimplified and small version of ncurses, with the same interface
nope.c694almost 9 years agoUltra-light software platform for scalable server-side and networking applications (think node.js for C programmers)
obj.h109about 4 years agoA single-header supports OOP in pure C
parg181almost 3 years agoA single-file reimplementation of with better defaults
pbc1,626almost 4 years agoProtocol buffers library
progressbar468over 3 years agoEasy-to-use library for displaying text progress bars
rabbitmq-c1,774almost 2 years agoClient library for
RagelDSL for state machines that compiles to C
rmwsafe-remove utility for the command line that can purge items from your waste directories after x number of days
Rogueutil44about 3 years agoCross-platform library for creating text-based user interfaces (TUI)
sort464over 2 years agoCollection of sorting routines, which type-specialize at compile-time with a user-defined type
termbox1,974about 6 years agoLibrary for writing text-based interfaces
tinyexpr1,619about 2 years agoTiny recursive-descent parser, compiler and evaluation engine for simple mathematical expressions
tm42over 2 years ago⏱ Timer and Timeline Utils for C
Tulip IndicatorsLibrary of functions for technical analysis of financial data
whereami476about 2 years agoOne-file library for locating the current executable on the file system
XLSX I/OCross-platform library for reading and writing .xlsx files
xlsx_drone15almost 2 years agoFast Microsoft Excel's *.xlsx reader
zlogReliable, pure C logging library
zproto236over 2 years agoProtocol framework for ZeroMQ
Metalang99880almost 2 years agoFull-blown preprocessor metaprogramming
Datatype991,379almost 2 years agoAlgebraic data types for C99
EasyLogger3,820almost 2 years agoAn ultra-lightweight, high-performance C/C++ log library

Awesome C / Web Frameworks

Concord528almost 2 years agoA Discord API wrapper library written in C
facil.ioMini-framework for web applications. Includes a fast HTTP and Websocket server, and also supports custom protocols
kcgiCGI and FastCGI library for C
KLoneFully featured, multi-platform, web application development framework, targeted especially at embedded systems and appliances
KoreEasy-to-use web application framework for writing scalable web APIs in C

Awesome C / Windows Environments

CygwinDesigned to emulate a POSIX-compatible environment extensively under Windows.
MinGW-w64Minimalist environment for C development on Windows with 64 bit support.
MSYS2Minimal 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: