Awesome Lists

awesome-c

by oz123

awesome listpushed about 2 years ago

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

AI summary

C dev toolkit

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

stars
9.5K
forks
837
watching
285
awesome lists
5
entries
559
View on GitHub

Embed the badge

Show how many awesome lists link to your project. The count updates automatically.

Awesome Lists badge
Markdown
[![Awesome Lists Badge](https://awesome.facts.dev/shield/oz123/awesome-c/links.svg)](https://awesome.facts.dev/awesome/oz123/awesome-c)
HTML
<a href="https://awesome.facts.dev/awesome/oz123/awesome-c"><img src="https://awesome.facts.dev/shield/oz123/awesome-c/links.svg" alt="Awesome Lists Badge" /></a>
Image URL
https://awesome.facts.dev/shield/oz123/awesome-c/links.svg

What's in the list

559 links in 52 sections, with live GitHub stats.activeno commit in 2y

AI

  • ccv

    C-based/Cached/Core Computer Vision library; modern computer vision

  • Cranium

    Portable, header-only ANN library in C99

  • FANN

    Fast Artifical Neural Network library; an implementation of neural networks

  • Genann

    Simple ANN in C89, without additional dependencies

  • KANN

    Two-file ANN library

  • LibDEEP

    Deep learning library

  • m2cgen

    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

Benchmarking

  • b63

    Light-weight micro-benchmarking tool for 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

    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

    Project generator and build system support tool

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

    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

Compression

  • blosc

    Extremely fast, multi-threaded, meta-compressor library. Various licenses, all open source

  • Brotli

    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

    C implementation of

  • FiniteStateEntropy

    Two highly efficient compression codecs optimized for modern CPUs

  • DENSITY

    Super-fast compression library

  • heatshrink

    Data compression/decompression library for embedded and real-time systems

  • fast_zlib

    Improved zlib, which runs 2 to 10 times faster

  • fastLZ

    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

    Minimal Huffman encoder and decoder. Public domain

  • libzip

    C library for reading, creating and modifying zip archives

  • libbzip2

    Patent-free, high-quality data compression library

  • Lizard

    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

    Parallel, indexed xz compressor

  • shoco

    Compressor for small text strings

  • SIMDComp

    Simple library for compressing lists of integers using binary packing. Makes use of SIMD instructions on x86

  • smaz

    Efficient string compression library

  • squash

    Compression abstraction library, complete with some utilities

  • TurboPFor

    Fastest integer compression

  • TurboRLE

    Most efficient run-length encoding

  • zip

    Really really small zip archive processing library

  • Zlib

    Massively spiffy yet delicately unobtrusive compression library

  • libarchive

    libarchive is a portable, efficient C library that can read and write streaming archives in a variety of formats

  • zlib-ng

    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

Concurrency and Parallelism

  • cchan

    Small library for channel constructs for inter-thread communication. Public domain

  • checkedthreads

    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

    A blazing fast and lightweight C asymmetric coroutine library

  • libconcurrent

    Concurrent programming library, using coroutines, for C11

  • libcsp

    High performance concurrency C library influenced by the CSP model

  • libdill

    Library which makes structured concurrent programming easy

  • libhl

    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

    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

    Message passing interface implementation

  • pal

    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

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

    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

    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

    Heavily optimized crypto algorithms for embedded devices

  • bfish

    A single include ANSI-C Blowfish ECB crypto library. Public domain

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

    Columnar store with full-text search

  • Hiredis

    Minimalistic client library for Redis

  • libmongoc

    High-performance client library for

  • LMDB

    Ultra-fast, ultra-compact key-value embedded data store

  • MySQL

    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

    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

    Lightweight database library, operating entirely in main memory

  • FlashDB

    An ultra-lightweight database that supports key-value and time series data

  • TDengine

    High-performance, cloud native time-series database

Data Structures

  • C-Macro-Collections

    Generate simple and generic data structures using macros

  • CLIST

    Simple and lightweight implementation

  • Collections-C

    Library of generic data structures

  • ds

    Common Data Structures and Algorithms

  • igraph

    A graph processing library

  • kdtree

    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

    Implementations for singly linked and doubly linked list functions

  • M*LIB

    Library for generic, but typesafe C containers. Implemented as header-only

  • offbrand

    Collection of generic, reference-counted data structures

  • PackedArray

    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

    Header library for typed lists

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

    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

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

Editors

Embeddable Scripting Engines

  • Duktape

    Embeddable Javascript engine with a focus on portability and compact footprint

  • MetaCall

    Cross-platform Polyglot Runtime which supports NodeJS, JavaScript, TypeScript, Python, Ruby, C#, Wasm, Java, Cobol and more

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

    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

    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

    Common libraries and data structures for C

  • TBOX

    Multi-platform library with a large number of capabilities

  • pspsdk

    An open-source SDK for PSP homebrew development.

Game Programming

  • Allegro

    Cross-platform, video game development and multimedia library

  • AssetKit

    🎨 3D asset importer/exporter/util library based on COLLADA/glTF specs

  • astera

    C99 Cross Platform 2D Game Library

  • cglm

    📽 Optimized OpenGL/Graphics Math (glm) for C

  • Chipmunk2D

    Fast and lightweight 2D game physics library

  • cmt

    🎮 C Bindings/Wrappers for Apple's METAL Graphics Framework

  • Corange

    Game engine in pure C

  • CSFML

    Binding for

  • Darkplaces

    Modified version of the Quake2 engine

  • Epoxy

    Library for handling OpenGL function pointer management

  • exengine

    3D game engine in C99 with a starting template

  • Flecs

    A Multithreaded Entity Component System written for C89 & C99

  • Freecell Solver

    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

    Maths library for games

  • libao

    Cross-platform audio library with a wide variety of outputs

  • librg

    Pure C99 game networking library for building simple and elegant cross-platform multiplayer client-server solutions

  • MATHC

    Math library for 2D and 3D programming

  • Orx

    Portable, lightweight, plugin-based, data-driven, 2D-oriented game engine

  • Quake

    Quake engine

  • Quake2

    Quake2 engine

  • raylib

    Simple and easy-to-use library to learn video game programming

  • RetroArch

    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

    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

    Minimal A* implementation

Graphics

  • AssetKit

    🎨 3D asset importer/exporter/util library based on COLLADA/glTF specs

  • Cairo

    2D graphics library. or

  • cmt

    🎮 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

    Tiny library of image utilities dealing with height maps, normal maps, distance fields and the like

  • libcaca

    ASCII renderer for terminal-based interfaces

  • libgd

    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

    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

    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

    Improved JPEG encoder

  • nanovg

    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

    A standalone 2D vector graphics library in C

  • SAIL

    ⛵ The missing small and fast image decoding library for humans (not for machines)

Graphical User Interface

  • GTK+

    Cross-platform widget toolkit

  • IUP

    Another cross-platform widget toolkit

  • microui

    Tiny immediate-mode UI library written in portable ANSI C

  • nappgui

    Professional SDK to build cross-platform desktop applications using C

  • nuklear

    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

    A barebones single-header GUI library for Win32, X11 and Essence

Hashing

  • CLHash

    Library implementing the ridiculously fast CLHash hashing function. Only works on Intel Haswell or newer

  • HighwayHash

    Fast, strong, SIMD-using hash function. Also contains an implementation of SipHash (although this is slower)

  • SpookyHash

    Extremely fast hash function

  • t1ha

    Fast Positive Hash - a portable, fast hash function

  • xxHash

    Extremely fast hashing algorithm. Comes in 32 and 64-bit varieties

Learning, Reference and Tutorials / Reference resources online

Learning, Reference and Tutorials / Beginner resources online

Learning, Reference and Tutorials / Intermediate resources online

Learning, Reference and Tutorials / Advanced resources online

Learning, Reference and Tutorials / Reference books

Learning, Reference and Tutorials / Beginner books

Learning, Reference and Tutorials / Intermediate books

Learning, Reference and Tutorials / Advanced books

Lexing and Parsing

  • flex

    Fast lexical analyzer generator

  • GNU Bison

    General-purpose parser generator that converts an annotated context-free grammar into a range of parsers

  • hammer

    Parser combinators for binary formats

  • mpc

    Parser combinator library

  • owl

    A parser generator for visibly pushdown languages

  • re2c

    Lexer generator, producing fast lexers, with access to its internals. Public domain

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

    Smart pointers for C

  • rpmalloc

    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.

Multimedia

  • aubio

    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

    Lightweight MP3 decoder single header library

  • Soundpipe

    Lightweight music DSP library

Networking and Internet

  • asnlc

    Compiler of ASN.1 specifications into C source code

  • CHL

    C Hypertext Library - A library for writing web applications in C

  • czmq

    High-level binding for ZeroMQ

  • Dyad.c

    Lightweight, easy, asynchronous networking library

  • GNU adns

    Advanced, easy-to-use, asynch-capable DNS client library and utilities

  • gumbo-parser

    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

    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

    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

    A very flexible, lightweight and fully asynchronous HTTP server library based on libev and http-parser for Embedded Linux

  • LibVNCServer

    Cross-platform libraries to implement VNC server and/or client functionality

  • libwebsock

    Easy-to-use and powerful web socket library

  • libzmq

    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

    A portable MQTT C client for embedded systems and PCs alike

  • nanomsg

    C-based implementation of ZeroMQ

  • NNG

    nanomsg-next-generation - lightweight brokerless messaging

  • oSip

    SIP implementation without additional dependencies

  • silgy

    Asynchronous HTTP(S) engine for C/C++ projects

  • socket99

    C99 wrapper for the BSD sockets API

  • twitc

    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

    Framework for proximity-based peer-to-peer applications

Numerical

  • apophenia

    Library for statistical and scientific computing

  • Arb

    Library for arbitrary-precision interval arithmetic

  • ATLAS

    Automatically Tuned Linear Algebra Software

  • clBLAS

    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

    A high-performance Fourier Transform from netlib's fftpack; wrapped in a user-friendly format

  • 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

    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

Profiling

  • gperftools

    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

PDF

  • pdfio

    PDFio is a simple C library for reading and writing PDF files

Regex

  • Onigmo

    Fork of Oniguruma, supporting more advanced regexps

  • Oniguruma

    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

    Super Light Regular Expression library; a small implementation of a subset of Perl regex syntax

  • TRE

    POSIX-compliant, feature-full regex library

Serialization

  • binn

    Binary serialization format, meant to be compact, fast and easy-to-use

  • c-capnproto

    Implementation of the Cap'n Proto serialization protocol

  • cmp

    Implementation of the serialization protocol

  • flatcc

    compiler and library

  • libavro

    Implementation of the Avro data serialization system

  • mpack

    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

    Implementation of Google Protocol Buffer

  • tpl

    Small binary serialization library

  • xdr

    External Data Representation; a standard for data serialization. Standard (no license applicable)

  • pbtools

    Google Protocol Buffers C source code generator

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

    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

    Collection of single-header libraries. Various licenses, all open source

  • par

    Bunch of single-file libraries

  • Snippets

    Useful code snippets and header-only libraries. Public domain

  • stb

    Range of single-file libraries. Public domain

  • tinyheaders

    Collection of header-only libraries, primarily oriented toward game development

  • zpl

    C99 cross-platform header-only library with many goodies. [ , ][BSD-3-Clause, Unlicense]

Standard Libraries

  • Bionic

    Google's standard library, developed for Android

  • cloudlibc

    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

Standard Libraries / Template libraries

  • CTL

    C CONTAINER TEMPLATE LIBRARY (CTL)

String Manipulation

  • bstring

    The Better String Library

  • ICU

    International Components for Unicode; a library for Unicode support

  • levenstein.c

    algorithm implementation.

  • libunistring

    Library for manipulating Unicode strings

  • libgiconv

    Text conversion library

  • librope

    UTF-8 rope ('heavy' string) library

  • SDS

    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

    algorithm implementation

  • str

    Yet another string library for C language

  • StringZilla

    Up to 10x faster SIMD and SWAR-accelerated string search, sort, hashes, edit distances, alignments, and generators

  • utf8.h

    Single-header UTF-8 library, designed to mimic C-style string functions. Public domain

  • utf8proc

    Library for processing UTF-8 data

Structured File Processing / CSV

  • libcsv

    Simple, streaming CSV parser

Structured File Processing / JSON

  • Jansson

    Library for encoding, decoding and manipulating JSON

  • jfes

    JSON For Embedded Systems; simple JSON engine without any dependencies

  • jsmn

    Minimalistic JSON parser

  • json

    Simple, low-memory-use JSON parser

  • json-c

    Easily work with JSON in C. Comes with a reference-counted object model, and aims for conformance with

  • json.h

    Single-file non-streaming JSON parser

  • parson

    Two-file, C89-compatible JSON parser

  • WJElement

    Advanced JSON manipulation library, with support for JSON Schema. or or

  • YAJL

    Fast streaming JSON parser library

Structured File Processing / INI

  • inih

    Small and simple INI file parser, good for embedded systems

  • iniparser

    Parser for .ini files

  • libconfini

    Yet another INI parser

  • minIni

    Small and portable INI parser

Structured File Processing / Others

  • libbson

    BSON utility library

  • libcbor

    : CBOR protocol implementation for C and others

  • libconfuse

    Small configuration file parser library

  • libelf

    Simple library for parsing ELF files

  • libucl

    Universal configuration library parser

  • libxo

    Allows an application to generate plain text, XML, JSON and HTML output using a common set of function calls. The application decides at runtime what output style should be produced

Structured File Processing / XML

  • Expat

    Stream-oriented XML parser

  • libxml2

    Standards-compliant, portable XML parser

  • xml

    Simple, low-memory-use XML parser / tokenizer

Structured File Processing / YAML

Signal Processing

  • libsigrok

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

Testing

  • CHEAT

    Simple unit testing framework

  • Check

    Unit testing framework

  • ciut

    A modern minimal hassle unit test framework

  • clar

    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

    Yet another unit testing framework

  • CUnit

    Another unit testing framework

  • greatest

    Unit testing library in one file, with no memory allocation

  • minctest

    Unit testing microlibrary

  • munit

    Small unit testing framework

  • Nala

    A test framework for C projects

  • Rexo

    Framework for C89/C++ featuring automatic registration of tests and a polished API

  • Tau

    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

    Property-based testing (similar to )

  • Unity

    Simple unit testing framework

  • utest

    Single-header unit testing library

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

    Modern syntax checking for Emacs. For C, it can use either GCC or Clang as a back-end

  • Neomake

    Async :make and linting framework for Neovim/Vim

  • Syntastic

    Syntax checking and linting for Vim

  • YASnippet

    Emacs code template system, with C templates for common snippets

  • YouCompleteMe

    Code completion engine for Vim

Tools

  • Artistic Style

    Fast and small automatic source code formatter that supports C

  • address-sanitizer

    Fast memory error detector

  • bcc

    A byte array generator to import binary files directy from C in the spirit of xxd

  • c

    Compile and execute C "scripts" in one go on the command line. Also has shebang support

  • c99sh

    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

    Helps find unecessary inclusions and make suggestions for fixing them. Based on LLVM/Clang (and only works with it)

  • incbin

    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

    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

Utilities

  • ApeTagLibs

    Library for working with APEv2 tags

  • argparse

    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

    Library for building daemons and services for Linux and FreeBSD systems

  • CException

    Implementation of exceptions

  • CommonMark

    Implementation of the CommonMark spec

  • cosmopolitan

    fast portable static native textmode containers (build C programs for Linux\Mac\Windows in one go)

  • cpu_features

    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

    Implementation of , with example solvers

  • docopt.c

    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

    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

    Library for parsing the CommonMark dialect of Markdown

  • libcoap

    Implementation of the . or

  • libcox

    Library which permits cross-platform system calls and standard utilities across different operating systems

  • libffi

    Portable foreign-function interface library

  • libgeohash

    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

    Cross-platform protocol library to communicate with iThings

  • libnfc

    Platform-independent Near-Field Communication library

  • libpostal

    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

    Your friendly email validation library. No external dependencies (not even regexps)

  • linenoise

    Small, self-contained alternative to readline and libedit

  • libXDGdirs

    An implementation of XDG Base Directory Specification

  • MegaMimes

    Library for getting the types of a file

  • ncurses

    Coloured terminal UI library

  • netbsd-curses

    Simplified and small version of ncurses, with the same interface

  • nope.c

    Ultra-light software platform for scalable server-side and networking applications (think node.js for C programmers)

  • obj.h

    A single-header supports OOP in pure C

  • parg

    A single-file reimplementation of with better defaults

  • pbc

    Protocol buffers library

  • progressbar

    Easy-to-use library for displaying text progress bars

  • rabbitmq-c

    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

    Cross-platform library for creating text-based user interfaces (TUI)

  • sort

    Collection of sorting routines, which type-specialize at compile-time with a user-defined type

  • termbox

    Library for writing text-based interfaces

  • tinyexpr

    Tiny recursive-descent parser, compiler and evaluation engine for simple mathematical expressions

  • tm

    ⏱ Timer and Timeline Utils for C

  • Tulip Indicators

    Library of functions for technical analysis of financial data

  • whereami

    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

    Fast Microsoft Excel's *.xlsx reader

  • zlog

    Reliable, pure C logging library

  • zproto

    Protocol framework for ZeroMQ

  • Metalang99

    Full-blown preprocessor metaprogramming

  • Datatype99

    Algebraic data types for C99

  • EasyLogger

    An ultra-lightweight, high-performance C/C++ log library

Web Frameworks

  • Concord

    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

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

More related projects

Add a GitHub project

Missing a project or an awesome list? Paste its GitHub URL and we fetch it right away.