# Awesome C

A curated list of C good stuff. This list contains only open source code (as defined by the linked Open Source Definition), and sellers who aren’t evil for physical resources.

This is released under a Creative Commons-Attribution-ShareAlike license, version 4 (SPDX code `CC-BY-SA-4.0`). You can find its text in the LICENSE file.

An important note: This project does not index anything C++-related; only pure C stuff is considered.

Note for contributors: If you want to make a pull request, please read CONTRIBUTING.md first.

## Contents

- AI
- Benchmarking
- Build Systems
- Compilers
- Compression
- Concurrency and Parallelism
- Crypto
- Database
- Data Structures
- Debugging
- Documentation Generation
- Editors
- Embeddable Scripting Engines
- Frameworks
- Game Programming
- Graphics
- Graphical User Interface
- Hashing
- Learning, Reference and Tutorials
  - Reference resources online
  - Beginner resources online
  - Intermediate resources online
  - Advanced resources online
  - Reference books
  - Beginner books
  - Intermediate books
  - Advanced books
- Lexing and Parsing
- Memory Management
- Multimedia
- Networking and Internet
- Numerical
- Profiling
- Regex
- Serialization
- Source Code Collections
- Standard Libraries
  - Template Libraries
- String Manipulation
- Structured File Processing
  - CSV
  - JSON
  - INI
  - Others
  - XML
  - YAML
- Testing
- Text Editor Extensions
- Tools
- Utilities
- Web Frameworks
- Windows Environments

## AI

Computer vision, neural nets, machine learning, and other similar things. Basically, if your university calls it AI, it lives here.

- ccv - C-based/Cached/Core Computer Vision library; modern computer vision. `BSD-3-Clause`
- Cranium - Portable, header-only ANN library in C99. `MIT`
- FANN - Fast Artifical Neural Network library; an implementation of neural networks. `GPL-2.0-only`
- Genann - Simple ANN in C89, without additional dependencies. `Zlib`
- KANN - Two-file ANN library. `MIT`
- LibDEEP - Deep learning library. `BSD-3-Clause`
- m2cgen - A CLI tool to transpile trained classic ML models into a native C code with zero dependencies. `MIT`
- sod - An Embedded Computer Vision & Machine Learning Library [`GPL-3`][GPL-3]

## Benchmarking

Comparing the performance of various subsystems across different chip/system architectures.

- b63 - Light-weight micro-benchmarking tool for C. `Apache-2.0`

## Build Systems

Tools that automate the building and testing of projects in C.

- Autotools - Also known as the GNU build system (automake, autoconf, libtool…) is one of the most widely used build systems (configure && make). GPL-1.0-or-later
- Autotools project skeleton - A simple autotools skeleton (template) to quickly bootstrap new projects. `BSD-2-Clause`
- CMake - Cross-platform family of tools designed to build, package and test software. `BSD-3-Clause`
- GNU Make - Tool which controls the generation of executables and other non-source files of a program. `GPL-3.0-or-later`
- Meson - Extremely fast, user-friendly build system. Based on Ninja. `Apache-2.0`
- 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. `BSD-3-Clause`
- SCons - Software construction tool using Python. `MIT`
- xmake - Cross-platform build utility. `Apache-2.0`
- zproject - Project generator and build system support tool. `MPL-2.0`

## Compilers

Compilers, as well as compiler- and compilation-related tooling.

- ccache - Compiler cache designed to speed up recompilation. `GPL-3.0-or-later`
- Clang - Compiler for LLVM. Supports C11. `NCSA`
- cproc - A C11 compiler using QBE as a backend. `ISC`
- distcc - Program that allows builds to be distributed among several machines. `GPL-2.0-or-later`
- 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. `LGPL-2.1-only`
- GCC - Provides a C compiler as part of its compiler set. Supports C11. `GPL-3.0-or-later`
- PCC - Venerable compiler. Supports C99. Various licenses, 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. `MIT`.
- clzip - C version of the high-quality data compressor Lzip (LZMA implementation). `GPL-2.0-or-later`
- CRoaring - C implementation of Roaring bitmaps. `Apache-2.0`
- FiniteStateEntropy - Two highly efficient compression codecs optimized for modern CPUs. `BSD-2-Clause`
- DENSITY - Super-fast compression library. `BSD-3-Clause`
- heatshrink - Data compression/decompression library for embedded and real-time systems. `ISC`
- fast_zlib - Improved zlib, which runs 2 to 10 times faster. `BSD-3-Clause`
- 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. `MIT`
- huffandpuff - Minimal Huffman encoder and decoder. Public domain.
- libzip - C library for reading, creating and modifying zip archives. `BSD-3-Clause`
- libbzip2 - Patent-free, high-quality data compression library. `BSD-4-Clause`
- 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. `BSD-2-Clause`
- lz4 - Library for an extremely fast compression algorithm. `BSD-2-Clause`
- lzo - Fast data compression library. `GPL-2.0-or-later`
- pixz - Parallel, indexed xz compressor. `BSD-2-Clause`
- shoco - Compressor for small text strings. `MIT`
- SIMDComp - Simple library for compressing lists of integers using binary packing. Makes use of SIMD instructions on x86. `BSD-3-Clause`
- smaz - Efficient string compression library. `BSD-3-Clause`
- squash - Compression abstraction library, complete with some utilities. `MIT`
- TurboPFor - Fastest integer compression. `GPL-2.0-or-later`
- TurboRLE - Most efficient run-length encoding. `GPL-2.0-or-later`
- zip - Really really small zip archive processing library. `Unlicense`
- Zlib - Massively spiffy yet delicately unobtrusive compression library. `BSD-3-Clause`
- libarchive - libarchive is a portable, efficient C library that can read and write streaming archives in a variety of formats. `BSD-3-Clause`
- zlib-ng - Zlib replacement with optimizations for ‘next-generation’ systems. `BSD-3-Clause`
- Zstandard - Fast, lossless compression algorithm, targeting real-time compression scenarios at zlib-level or better compression ratios. `BSD-3-Clause`

## 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. `BSD-2-Clause`
- ck - Concurrency primitives, safe memory reclamation mechanisms and non-blocking data structures. `BSD-2-Clause`
- FCFS RWLock - First-come first-served Readers/Writers lock for POSIX threads. `CC0-1.0`
- Libaco - A blazing fast and lightweight C asymmetric coroutine library. `Apache-2.0`
- libconcurrent - Concurrent programming library, using coroutines, for C11. `BSD-3-Clause`
- libcsp - High performance concurrency C library influenced by the CSP model. `MIT`
- libdill - Library which makes structured concurrent programming easy. `MIT`
- 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. `LGPL-3.0-only`
- liburcu - Data synchronization library, which scales linearly with the number of cores. `LGPL-2.1-or-later`
- mill - Go-style concurrency. `MIT`
- oclkit - Two-file OpenCL wrapper. `GPL-3.0-or-later`
- OCL-MLA - OpenCL Mid-Level Abstractions. `BSD-3-Clause`
- OpenMP - Set of pragmas designed to allow for easy parallelization of code. Standard (licensing not applicable).
- Open MPI - Message passing interface implementation. `BSD-3-Clause`
- pal - Optimized library for maths, parallel processing and data movement. `Apache-2.0`
- pth - Portable implementation for non-preemptive priority-based scheduling for multiple threads of execution. `GPL-3.0-or-later`
- pthreads - POSIX thread library. Standard (no license applicable).
- TinyCThread - Portable, small implementation of the C11 threads API. `Zlib`

## Crypto

Mostly library implementations of well-known cryptographic algorithms or protocols.

- GNU SASL - Implementation of the Simple Authentication and Security Layer and a few common SASL mechanism. `GPL-3.0-or-later`
- GnuTLS - Secure communication library, implementing SSL, TLS and DTLS. `LGPL-2.1-or-later`
- libgcrypt - General-purpose cryptography library, with a range of available ciphers. `LGPL-2.1-or-later`
- OpenSSL - Implementation of the SSL and TLS protocols. Also includes a cryptography library. Dual Licensed under the OpenSSL License and the SSLeay License.
- liboqs - Library for quantum-resistant cryptographicl algorithms. `MIT`
- libsodium - Modern and easy-to-use crypto library. `MIT`
- libtomcrypt - Fairly comprehensive, modular and portable cryptographic toolkit. Public domain.
- mbed TLS - Another crypto implementation. `Apache-2.0`
- MIRACL - Multiprecision Integer and Rational Arithmetic Cryptographic Library; an SDK for elliptic curve cryptography. `AGPL-3.0-or-later`
- 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. `Apache-2.0`
- sphlib - Set of implementations of various hash functions, including several cryptographic ones. `MIT`
- trezor-crypto - Heavily optimized crypto algorithms for embedded devices. `MIT`
- bfish - A single include ANSI-C Blowfish ECB crypto library. Public domain.

## Database

Databases and data stores with C APIs.

- BerkeleyDB - Library for a high-performance embedded database for key-value data. `AGPL-3.0-only`
- DuckDB - Fast in-process analytical database, with C API. `MIT`
- EJDB2 - Embeddable JSON Database engine. `MIT`
- Groonga - Columnar store with full-text search. `LGPL-2.1-only`
- Hiredis - Minimalistic client library for Redis. `BSD-3-Clause`
- libmongoc - High-performance client library for MongoDB. `Apache-2.0`
- LMDB - Ultra-fast, ultra-compact key-value embedded data store. `OLDAP-2.8`
- MySQL - The world’s most popular open source database. `GPL-2.0-only`
- PostgreSQL - Powerful object-relational database system. `PostgreSQL`
- Redis - Advanced key-value store. `BSD-3-Clause`
- sophia - Modern, embeddable key-value database. `BSD-2-Clause`
- sparkey - Simple constant key/value storage library. Designed for read-heavy loads with infrequent, large bulk inserts. `Apache-2.0`
- SQLite - Self-contained, serverless, zero-configuration, transactional SQL database engine. Public domain.
- UnQLite - Self-contained, serverless, zero-configuration, transactional NoSQL engine. `BSD-2-Clause`
- WhiteDB - Lightweight database library, operating entirely in main memory. `GPL-3.0-or-later`

## Data Structures

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

## Debugging

Because we all have to do it sometimes. Various tools for making debugging easier or better, as well as libraries or code that allows better debugging work.

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

## Documentation Generation

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

## Editors

Fancier, IDE-type editors. If you want a programmer’s text editor, look elsewhere. Besides, whatever you use most likely supports C anyway.

- Anjuta DevStudio - GNOME IDE. `GPL-2.0-only`
- Code::Blocks - Extendable, configurable IDE supporting C. `GPL-3.0-only`
- CodeLite - Cross-platform IDE. `GPL-2.0-only`
- Geany - Small and fast IDE. `GPL-2.0-or-later`
- KDevelop - KDE IDE. `GPL-2.0-only`
- zinjaI - Simple, lightweight and feature-rich IDE. `GPL-3.0-only`

## Embeddable Scripting Engines

When C isn’t the right solution, or when you need a more dynamic configration engine:

- Duktape - Embeddable Javascript engine with a focus on portability and compact footprint `MIT`.
- MetaCall - Cross-platform Polyglot Runtime which supports NodeJS, JavaScript, TypeScript, Python, Ruby, C#, Wasm, Java, Cobol and more. `Apache-2.0`

## Frameworks

Big libraries that provide data structures and other stuff you expect of a ‘modern’ standard library.

- APR - Apache Portable Runtime; another library of cross-platform utility functions. `Apache-2.0`
- C Algorithms - Collection of common algorithms and data structures. `ISC`
- CPL - The Common Pipeline Library; a set of libraries designed to be a comprehensive, efficient and robust software toolkit. `GPL-2.0-only`
- 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. `LGPL-2.1-only`
- klib - Small and lightweight implementations of common algorithms and data structures. `MIT`
- libcork - Utility functions and structures, designed for resource-constrained systems. Can be embedded. `BSD-3-Clause`
- libnih - Lightweight library of functions and structures. `GPL-2.0-only`
- libU - Small library of basic utilities, including memory allocation, string manipulation and logging. `BSD-3-Clause`
- PBL - Large library of utilities, featuring data structures, among other things. `LGPL-2.1-or-later`
- plibsys - Cross-platform system C library. Zero third-party dependencies, uses only native system calls. `MIT`
- qlibc - Simple and powerful library, designed as a replacement for GLib while focusing on being small and light. `BSD-2-Clause`
- sc - Common libraries and data structures for C. `MIT`
- TBOX - Multi-platform library with a large number of capabilities. `Apache-2.0`
- pspsdk - An open-source SDK for PSP homebrew development. Various licences.

## Game Programming

Engines, libraries and other helpful things specifically for making games.

- Allegro - Cross-platform, video game development and multimedia library. `Zlib`
- AssetKit 🎨 3D asset importer/exporter/util library based on COLLADA/glTF specs `MIT`
- astera - C99 Cross Platform 2D Game Library `MIT`
- cglm - 📽 Optimized OpenGL/Graphics Math (glm) for C. `MIT`
- Chipmunk2D - Fast and lightweight 2D game physics library. `MIT`
- cmt - 🎮 C Bindings/Wrappers for Apple’s METAL Graphics Framework. `MIT`
- Corange - Game engine in pure C. `BSD-2-Clause`
- CSFML - Binding for SFML. `Zlib`
- Darkplaces - Modified version of the Quake2 engine. `GPL-2.0-only`
- Epoxy - Library for handling OpenGL function pointer management. `MIT`
- exengine - 3D game engine in C99 with a starting template. `MIT`
- Flecs - A Multithreaded Entity Component System written for C89 & C99 `MIT`
- Freecell Solver - Set of libraries and command-line programs for automatically solving FreeCell and some similar variants of card Solitaire. `MIT`
- FreeGLUT - Alternative to the OpenGL Utility Toolkit. Allows the creation and management of windows with OpenGL contexts. `X11`
- GLFW - Multi-platform library for creating windows with OpenGL contexts. `Zlib`
- ioquake3 - Quake3 engine, freed at last. `GPL-2.0-only`
- kazmath - Maths library for games. `BSD-2-Clause`
- libao - Cross-platform audio library with a wide variety of outputs. `GPL-2.0-or-later`
- librg - Pure C99 game networking library for building simple and elegant cross-platform multiplayer client-server solutions. `Apache-2.0`
- MATHC - Math library for 2D and 3D programming. `ZLib`
- Orx - Portable, lightweight, plugin-based, data-driven, 2D-oriented game engine. `Zlib`
- Quake - Quake engine. `GPL-2.0-only`
- Quake2 - Quake2 engine. `GPL-2.0-only`
- raylib - Simple and easy-to-use library to learn video game programming. `Zlib`
- RetroArch - Reference frontend for libretro. `GPL-3.0-only`
- SDL2 - Cross-platform library designed to provide low-level access to audio, keyboard, mouse, joystick and graphics hardware via OpenGL. `Zlib`
- sdl-gpu - Library for high-performance, modern 2D graphics. Based on SDL. `MIT`
- 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. `ZLib`

## Graphics

Programmatic manipulation of graphics in C; if you want to make a GUI, the Graphical User Interface section has what you need.

- AssetKit 🎨 3D asset importer/exporter/util library based on COLLADA/glTF specs `MIT`
- Cairo - 2D graphics library. `LGPL-2.1-only` or `MPL-1.1`.
- cmt - 🎮 C Bindings/Wrappers for Apple’s METAL Graphics Framework. `MIT`
- giflib - Library for reading and writing gif images. `MIT`
- graphene - Thin layer of graphical data types. `MIT`
- heman - Tiny library of image utilities dealing with height maps, normal maps, distance fields and the like. `MIT`
- libcaca - ASCII renderer for terminal-based interfaces. `WTFPL`
- libgd - Library for the dynamic creation of images by programmers. `MIT`
- libimagequant - Small, portable library for high-quality conversion of RGBA images to 8-bit indexed colour images. `GPL-3.0-or-later`
- libjpeg-turbo - Faster library for reading and writing JPEG files. Various licences.
- libpng - Official PNG reference library. `Libpng`
- libRSVG - Library to render SVG files using Cairo. `LGPL-2.1-or-later`
- libsixel - Library implementing the SIXEL protocol, allowing beautiful graphics in your terminal. `MIT`
- libspng - A simpler interface for reading and writing PNG files. `BSD-2-Clause`
- libvips - Image processing library. `LGPL-2.1-or-later`
- libxmi - Function library for rasterizing 2D vector graphics. `GPL-3.0-or-later`
- 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. `MIT`
- mozjpeg - Improved JPEG encoder. `BSD-3-Clause`
- nanovg - Anti-aliased 2D vector drawing library on top of OpenGL, for UI and visualizations. `Zlib`
- OpenGL - Industry standard for high-performance graphics, with a native C binding. Various licenses.
- PlutoVG - A standalone 2D vector graphics library in C `MIT`
- SAIL - ⛵ The missing small and fast image decoding library for humans (not for machines) `MIT`

## Graphical User Interface

Widget toolkits, or things meant to be used in a similar way to them.

- GTK+ - Cross-platform widget toolkit. `LGPL-2.1-only`
- IUP - Another cross-platform widget toolkit. `MIT`
- microui - Tiny immediate-mode UI library written in portable ANSI C. `MIT`
- nuklear - Small, C89, single-header widget toolkit. Public domain.
- tinyfiledialogs - Single-file library for simple dialogs. Compatible with many other toolkits and OSes. `Zlib`
- Tk - Basic widget toolkit. Part of Tcl/Tk. `TCL`
- XForms Toolkit - Widget toolkit designed for the XWindow system. `LGPL-2.1-only`
- LVGL - embedded GUI with easy-to-use graphical elements, beautiful visuals and a low memory footprint. `MIT`
- luigi - A barebones single-header GUI library for Win32, X11 and Essence. `MIT`

## Hashing

Hash function implementations for non-crypto purposes. Cryptographic hashes can be found in the Crypto section.

- CLHash - Library implementing the ridiculously fast CLHash hashing function. Only works on Intel Haswell or newer. `Apache-2.0`
- HighwayHash - Fast, strong, SIMD-using hash function. Also contains an implementation of SipHash (although this is slower). `Apache-2.0`
- SpookyHash - Extremely fast hash function. `BSD-3-Clause`
- t1ha - Fast Positive Hash - a portable, fast hash function. `BSD-3-Clause`
- xxHash - Extremely fast hashing algorithm. Comes in 32 and 64-bit varieties. `BSD-2-Clause`

## Learning, Reference and Tutorials

Resources for learning C programming in general, or something useful relating to C programming.

### 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 - Tiny C games you can compile and run RIGHT NOW http://tinyc.games `MIT`

### 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

### 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

### 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

### 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.

### 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.

### Intermediate books

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

### 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.

## Lexing and Parsing

Libraries specifically for lexical analysis (or lexing) and syntactic analysis (or parsing).

- flex - Fast lexical analyzer generator. `BSD-2-Clause`
- GNU Bison - General-purpose parser generator that converts an annotated context-free grammar into a range of parsers. `GPL-3.0-or-later`
- hammer - Parser combinators for binary formats. `GPL-2.0-only`
- mpc - Parser combinator library. `BSD-2-Clause`
- owl - A parser generator for visibly pushdown languages. `MIT`
- re2c - Lexer generator, producing fast lexers, with access to its internals. Public domain.

## Memory Management

Whether a different, faster malloc or outright garbage collection, anything to do with managing C memory lives here.

- Boehm GC - Garbage collection for C. Various licenses, all open source.
- jemalloc - Malloc implementation that emphasizes avoidance of fragmentation and scalable concurrency support. `BSD-2-Clause`
- Lockless Memory Allocator - Efficient memory allocator. `GPL-3.0-or-later`
- libcsptr - Smart pointers for C. `MIT`
- rpmalloc - Thread-caching, fast memory allocator, naturally aligned on 32-byte boundaries. Public domain.
- talloc - Hierarchical, reference-counted memory pool system with destructors. `LGPL-3.0-or-later`
- tlsf - Two-Level Segregated Fit allocator; a general-purpose, dynamic memory allocator designed to meet real-time requirements. Up-to-date implementation. `BSD-3-Clause`

## Multimedia

- aubio - Library for audio and music analysis. `GPL-3.0-or-later`
- FFMPEG - Complete, cross-platform solution to record, convert and stream audio and video. `LGPL-2.1-or-later`
- GStreamer - Framework for audio and visual media. `LGPL-2.1-or-later`
- libmpv - Music-playing library. `GPL-2.0-or-later`
- libsndfile - Library for reading and writing sound files. Supports many formats. `LGPL-2.1-only` or `LGPL-3.0-only`
- libsoundio - Library for cross-platform, real-time audio input and output. Has a range of back-ends. `MIT`
- libVLC - Complete multimedia library for audio and video encoding, decoding, playing and streaming. `GPL-2.0-only`
- lodepng - Simple PNG image decoder and encoder, requiring no other dependencies. `BSD-3-Clause`
- minimp3 - Lightweight MP3 decoder single header library. `CC0-1.0`
- Soundpipe - Lightweight music DSP library. `MIT`

## Networking and Internet

Low-level networking and internet-related stuff. If you want something more comprehensive and high-level, you may want the Web Frameworks section.

- asnlc - Compiler of ASN.1 specifications into C source code. `BSD-2-Clause`
- CHL - C Hypertext Library - A library for writing web applications in C. `GPL-3.0-only`
- czmq - High-level binding for ZeroMQ. `MPL-2.0`
- Dyad.c - Lightweight, easy, asynchronous networking library. `MIT`
- GNU adns - Advanced, easy-to-use, asynch-capable DNS client library and utilities. `GPL-3.0-or-later`
- gumbo-parser - HTML5 parsing library in C99. `Apache-2.0`
- H20 - A new-generation HTTP server. `MIT`
- llhttp - HTTP request/response parser. `MIT`
- ldns - Library to simplify DNS programming. `BSD-3-Clause`
- libcurl - Client-side URL transfer library, supporting a wide range of formats. `curl`
- LibEtPan - Mail library providing an efficient network for IMAP, SMTP, POP and NNTP. `BSD-3-Clause`
- libev - Yet another event loop. `BSD-2-Clause`
- libevent - Event loop replacement for network servers. `BSD-3-Clause`
- libhttpd - Library to add basic web server capabilities to an application or embedded device. `GPL-2.0-only`
- libhv - Cross platform event loop library. `BSD-3-Clause`
- libidn - Implementation of the Stringprep, Punycode and IDNA specifications. `GPL-3.0-or-later`
- libmicrohttpd - Small library that makes it easy to run an HTTP server as part of another application. `LGPL-2.1-or-later`
- libnl - `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…). `LGPL-2.1-only`
- libonion - HTTP server library, designed to be easy to use. `Apache-2.0`
- libpcap - API provides to various kernel packet capture mechanism. `BSD-3-Clause`
- libquickmail - Library intended to give developers a way to send email from their applications. Supports multiple To/Cc/Bcc recipients and attachments without size limits. `GPL-3.0-or-later`
- libsagui - Library for cross-platform HTTP servers. `LGPL-3.0-or-later`
- libuhttpd - A very flexible, lightweight and fully asynchronous HTTP server library based on libev and http-parser for Embedded Linux. `MIT`
- LibVNCServer - Cross-platform libraries to implement VNC server and/or client functionality. `GPL-2.0-or-later`
- libwebsock - Easy-to-use and powerful web socket library. `LGPL-3.0-only`
- libzmq - Core ZeroMQ library, a high-performance asynchronous messaging library, aimed at use in distributed or concurrent applications. C API (backend C++) `GPL-3.0-or-later` with static linking exception
- lwan - Experimental, scalable, high-performance HTTP server. `GPL-2.0-only`
- mongoose - Embedded web server. `GPL-2.0-only`
- MQTT-C - A portable MQTT C client for embedded systems and PCs alike. `MIT`
- nanomsg - C-based implementation of ZeroMQ. `MIT`
- NNG - nanomsg-next-generation - lightweight brokerless messaging. `MIT`
- oSip - SIP implementation without additional dependencies. `LGPL-2.1-or-later`
- silgy - Asynchronous HTTP(S) engine for C/C++ projects. `MIT`
- socket99 - C99 wrapper for the BSD sockets API. `ISC`
- twitc - Mini library for interacting with the Twitter OAuth API. `MIT`
- uriparser - Strictly RFC 3986-compliant URI parsing and handling library. `BSD-3-Clause`
- Wslay - WebSocket library. Implements version 13 of the WebSocket protocol, as described in RFC 6455. `MIT`
- zyre - Framework for proximity-based peer-to-peer applications. `MPL-2.0`

## Numerical

- apophenia - Library for statistical and scientific computing. `GPL-2.0-only`
- Arb - Library for arbitrary-precision interval arithmetic. `LGPL-2.1-or-later`
- ATLAS - Automatically Tuned Linear Algebra Software. `BSD-3-Clause`
- clBLAS - BLAS functions written in OpenCL. `Apache-2.0`
- cmathl - Math library with a great variety of mathematical functions with CMake build support. Seeks to be close to C89/C90 compliant for portability. `MIT`
- Cuba - Library for multidimensional numerical integration. `LGPL-3.0-only`
- fft-c - A high-performance Fourier Transform from netlib’s fftpack; wrapped in a user-friendly format `MIT`
- FFTW - The Fastest Fourier Transform in the West; a highly optimized fast Fourier transform routine. `GPL-2.0-or-later`
- FLINT - Fast Library for Number Theory; a library supporting arithmetic with numbers, polynomials, power series and matrices, among others. `GPL-2.0-or-later`
- GLPK - GNU Linear Programming Kit; a package designed for solving large-scale linear programming, mixed integer programming and other related problems. `GPL-3.0-or-later`
- GMP - GNU Multple Precision Arithmetic Library; a library for arbitrary-precision arithmetic. `GPL-2.0-only` or `LGPL-3.0-only`
- GNU MPC - Library for complex number arithmetic. `LGPL-3.0-or-later`
- GNU MPFR - Library for arbitrary-precision floating-point arithmetic. `LGPL-3.0-or-later`
- GNU MPRIA - Portable mathematics library for multi-precision rational interval arithmetic. `GPL-3.0-or-later`
- GSL - The GNU Scientific Library; a sophisticated numerical library. `GPL-3.0-only`.
- KISS FFT - Simple fast Fourier transform library. `BSD-3-Clause`
- LAPACKE - Interface to LAPACK. `BSD-3-Clause`
- 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. `GPL-2.0-or-later`
- PETSc - Suite of data structures and routines for scalable parallel solution of scientific applications modelled by partial differential equations. `BSD-2-Clause`
- SCS - Splitting Conic Solver; a numerical optimization package for solving large-scale convex cone problems. `MIT`
- SLEPc - Library for the solution of large, sparse eigenvalue problems on parallel computers. `LGPL-3.0-only`
- TomsFastMath - Set of optimized maths operations (in assembly), suitable for cryptographic use. Public domain.
- Yeppp! - Fast, SIMD-optimized mathematical library. `BSD-3-Clause`

## Profiling

- gperftools - Collection of utilities for measuring and improving performance. `BSD-3-Clause`
- gprof - Performance analysis tool. Part of GNU binutils. `GPL-3.0-or-later`
- OProfile - Statistical profiler for Linux. Can profile any code (including the kernel!) with low overhead and without recompilation. `GPL-2.0-only`
- perf - Linux kernel-based profiler with a lot of functionality. `GPL-2.0-only`

## PDF

- pdfio - PDFio is a simple C library for reading and writing PDF files.`Apache-2.0`

## Regex

- Onigmo - Fork of Oniguruma, supporting more advanced regexps. `BSD-2-Clause`
- Oniguruma - Regex library supporting a wide range of encodings, and incorporating many security-oriented fixes. `BSD-2-Clause`
- PCRE - Implementation of regexes identical to that of Perl 5. `BSD-3-Clause`
- SLRE - Super Light Regular Expression library; a small implementation of a subset of Perl regex syntax. `GPL-2.0-only`
- TRE - POSIX-compliant, feature-full regex library. `BSD-2-Clause`

## Serialization

- binn - Binary serialization format, meant to be compact, fast and easy-to-use. `Apache-2.0`
- c-capnproto - Implementation of the Cap’n Proto serialization protocol. `MIT`
- cmp - Implementation of the MessagePack serialization protocol. `MIT`
- flatcc - FlatBuffers compiler and library. `Apache-2.0`
- libavro - Implementation of the Avro data serialization system. `Apache-2.0`
- mpack - Another implementation of the MessagePack serialization protocol. `MIT`
- OPIC - Object Persistence in C; a revolutionary serialization framework, with matching on-disk and in-memory representations. `GPL-3.0-or-later`
- protobuf-c - Implementation of Google Protocol Buffer. `BSD-2-Clause`
- tpl - Small binary serialization library. `MIT`
- xdr - External Data Representation; a standard for data serialization. Standard (no license applicable).
- pbtools - Google Protocol Buffers C source code generator. `MIT`

## Source Code Collections

Collections of small source code. If you want something big and integrated, check the Frameworks section.

- CCAN - Modelled after Perl’s CPAN, this is a big collection of code that does stuff. The full list is here. Various licenses, all open source.
- clib - Something of a package manager. Comes with a bunch of libraries of its own. `MIT`
- 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. `MIT`
- 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. `Zlib`
- zpl - C99 cross-platform header-only library with many goodies. [`BSD-3-Clause`, `Unlicense`][BSD-3-Clause, Unlicense]

## Standard Libraries

Implementations of the (standard-mandated) C standard library.

- Bionic - Google’s standard library, developed for Android. `BSD-3-Clause`
- cloudlibc - Standard library based on the concept of capability-based security. `BSD-2-Clause`
- dietlibc - Standard library designed for the smallest possible binaries. `GPL-2.0-only`
- glibc - The GNU C Library; an implementation of the standard library. `LGPL-2.1-only`.
- musl - Standard library, compatible with POSIX 2008 and C11. Designed for static linking. `MIT`
- PDCLib - The Public Domain C Library. Implements most of C99 and some of C11. `CC0-1.0`
- uClibc-ng - Small C library for developing embedded systems. `LGPL-2.1-or-later`

### Template libraries

- CTL - C CONTAINER TEMPLATE LIBRARY (CTL) `MIT`

## String Manipulation

- bstring - The Better String Library. `BSD-3-Clause`
- ICU - International Components for Unicode; a library for Unicode support. `ICU`
- levenstein.c - Levenstein distance algorithm implementation. `MIT`.
- libunistring - Library for manipulating Unicode strings. `LGPL-3.0-only`
- libgiconv - Text conversion library. `LGPL-2.1-only`
- librope - UTF-8 rope (‘heavy’ string) library. `MIT`
- 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 clib. `BSD-2-Clause`
- stmr.c - Porter Stemmer algorithm implementation. `MIT`
- str - Yet another string library for C language. `BSD-3-Clause`
- StringZilla - Up to 10x faster SIMD and SWAR-accelerated string search, sort, hashes, edit distances, alignments, and generators. `Apache-2.0`
- utf8.h - Single-header UTF-8 library, designed to mimic C-style string functions. Public domain.
- utf8proc - Library for processing UTF-8 data. `MIT`

## Structured File Processing

This includes libraries for things like XML, JSON, CSV, and other similar formats.

### CSV

- libcsv - Simple, streaming CSV parser. `LGPL-2.1-or-later`

### JSON

- Jansson - Library for encoding, decoding and manipulating JSON. `MIT`
- jfes - JSON For Embedded Systems; simple JSON engine without any dependencies. `MIT`
- jsmn - Minimalistic JSON parser. `MIT`
- json - Simple, low-memory-use JSON parser. `MIT`
- json-c - Easily work with JSON in C. Comes with a reference-counted object model, and aims for conformance with RFC 7159. `MIT`
- json.h - Single-file non-streaming JSON parser. `Unlicense`
- parson - Two-file, C89-compatible JSON parser. `MIT`
- WJElement - Advanced JSON manipulation library, with support for JSON Schema. `LGPL-2.0-or-later` or `LGPL-2.1-or-later` or `LGPL-3.0-or-later`
- YAJL - Fast streaming JSON parser library. `ISC`

### INI

- inih - Small and simple INI file parser, good for embedded systems. `BSD-3-Clause`
- iniparser - Parser for .ini files. `MIT`
- libconfini - Yet another INI parser. `GPL-3.0-only`
- minIni - Small and portable INI parser. `Apache-2.0`

### Others

- libbson - BSON utility library. `Apache-2.0`
- libcbor: CBOR protocol implementation for C and others. `MIT`
- libconfuse - Small configuration file parser library. `ISC`
- libelf - Simple library for parsing ELF files. `MIT`
- libucl - Universal configuration library parser. `BSD-2-Clause`
- libxo - Allows an application to generate plain text, XML, JSON and HTML output using a common set of function calls. The application decides at runtime what output style should be produced. `BSD-2-Clause`

### XML

- Expat - Stream-oriented XML parser. MIT
- libxml2 - Standards-compliant, portable XML parser. MIT
- xml - Simple, low-memory-use XML parser / tokenizer. `MIT`

### YAML

- libYAML - YAML 1.1 parser and emitter. `MIT`

## Signal Processing

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

## Testing

- CHEAT - Simple unit testing framework. `BSD-2-Clause`
- Check - Unit testing framework. `LGPL-2.1-only`
- ciut - A modern minimal hassle unit test framework. `MIT`
- clar - Clear and simple unit testing framework. `MIT`
- CMock - Mock/stub generator. `MIT`
- cmocka - Unit testing framework with support for mock objects. `Apache-2.0`
- Criterion - KISS, non-intrusive test framework. `MIT`
- ctest - Yet another unit testing framework. `Apache-2.0`
- CUnit - Another unit testing framework. `LGPL-2.1-or-later`
- greatest - Unit testing library in one file, with no memory allocation. `ISC`
- minctest - Unit testing microlibrary. `BSD-3-Clause`
- munit - Small unit testing framework. `MIT`
- Nala - A test framework for C projects. `MIT`
- Rexo - Framework for C89/C++ featuring automatic registration of tests and a polished API. `Unlicense`
- 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. `MIT`
- theft - Property-based testing (similar to Quickcheck). `MIT`
- Unity - Simple unit testing framework. `MIT`
- utest - Single-header unit testing library. `Unlicense`

## Text Editor Extensions

While practically any decent programmer’s text editor supports C, there are some extensions that make it more pleasant. These are labelled by editor.

- CCompletion - Notepad++ autocompletion plugin. Works with all identifiers recognized by Ctags. This is a download link. `GPL-2.0-or-later`
- CEDET - Collection of Emacs Development Environment Tools; designed to provide IDE-like features to Emacs. Built-in. `GPL-3.0-or-later`
- Flycheck - Modern syntax checking for Emacs. For C, it can use either GCC or Clang as a back-end. `GPL-3.0-or-later`
- Neomake - Async :make and linting framework for Neovim/Vim. `MIT`
- Syntastic - Syntax checking and linting for Vim. `WTFPL`
- YASnippet - Emacs code template system, with C templates for common snippets. `GPL-3.0-or-later`
- YouCompleteMe - Code completion engine for Vim. `GPL-3.0-only`

## Tools

Useful programs to help you write and debug C code which are not editors, libraries or compilers.

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

## Utilities

A ‘catch-all’ category for anything that doesn’t fit well anywhere else.

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

## Web Frameworks

Comprehensive and integrated solutions for building the next brilliant web application in C.

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

## Windows Environments

Technologies designed to bring Windows into the 21st century with respect to support for C.

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