Awesome C
A curated list of C good stuff. This list contains only [open source][13] 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
- Lexing and Parsing
- Memory Management
- Multimedia
- Networking and Internet
- Numerical
- Profiling
- Regex
- Serialization
- Source Code Collections
- Standard Libraries
- String Manipulation
- Structured File Processing
- 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][195] - C-based/Cached/Core Computer Vision library; modern computer
vision. [
BSD-3-Clause
][BSD-3-Clause] - [Cranium][525] - Portable, header-only ANN library in C99. [
MIT
][MIT] - [FANN][325] - Fast Artifical Neural Network library; an implementation of
neural networks. [
GPL-2.0-only
][GPL-2.0-only] - [Genann][412] - Simple ANN in C89, without additional dependencies. [
Zlib
][Zlib] - [KANN][327] - Two-file ANN library. [
MIT
][MIT] - [LibDEEP][477] - Deep learning library. [
BSD-3-Clause
][BSD-3-Clause] - [m2cgen][610] - A CLI tool to transpile trained classic ML models into a native C code with zero dependencies. [
MIT
][MIT] - [sod][611] - An Embedded Computer Vision & Machine Learning Library. [
GPL-3.0-only
][GPL-3.0-only]
Benchmarking
Comparing the performance of various subsystems across different chip/system architectures.
- [b63][553] - Light-weight micro-benchmarking tool for C. [
Apache-2.0
][Apache-2.0]
Build Systems
Tools that automate the building and testing of projects in C.
- [Autotools][583] - 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][335]
- [Autotools project skeleton][584] - A simple autotools skeleton (template) to quickly bootstrap
new projects. [
BSD-2-Clause
][BSD-2-Clause] - [CMake][329] - Cross-platform family of tools designed to build, package and test
software. [
BSD-3-Clause
][BSD-3-Clause] - [GNU Make][324] - Tool which controls the generation of executables and other
non-source files of a program. [
GPL-3.0-or-later
][GPL-3.0-or-later] - [Meson][368] - Extremely fast, user-friendly build system. Based on Ninja. [
Apache-2.0
][Apache-2.0] - [Premake][435] - 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
][BSD-3-Clause] - [SCons][521] - Software construction tool using Python. [
MIT
][MIT] - [xmake][271] - Cross-platform build utility. [
Apache-2.0
][Apache-2.0] - [zproject][420] - Project generator and build system support tool. [
MPL-2.0
][MPL-2.0]
Compilers
Compilers, as well as compiler- and compilation-related tooling.
- [ccache][466] - Compiler cache designed to speed up recompilation. [
GPL-3.0-or-later
][GPL-3.0-or-later] - [Clang][38] - Compiler for LLVM. Supports C11. [
NCSA
][NCSA] - [cproc][574] - A C11 compiler using QBE as a backend. [
ISC
][ISC] - [distcc][452] - Program that allows builds to be distributed among several
machines. [
GPL-2.0-or-later
][GPL-2.0-or-later] - [Firm][361] - 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
][LGPL-2.1-only] - [GCC][40] - Provides a C compiler as part of its compiler set. Supports
C11. [
GPL-3.0-or-later
][GPL-3.0-or-later] - [PCC][74] - Venerable compiler. Supports C99. [Various licenses][75], all open source.
Compression
- [blosc][445] - Extremely fast, multi-threaded, meta-compressor library. Various licenses, all open source.
- [Brotli][24] - General-purpose lossless compression algorithm library. Has
speeds comparable to DEFLATE, but much higher compression ratios.
[
MIT
][MIT]. - [clzip][432] - C version of the high-quality data compressor [Lzip][433] (LZMA
implementation). [
GPL-2.0-or-later
][GPL-2.0-or-later] - [CRoaring][481] - C implementation of [Roaring bitmaps][482]. [
Apache-2.0
][Apache-2.0] - [FiniteStateEntropy][2] - Two highly efficient compression codecs optimized
for modern CPUs. [
BSD-2-Clause
][BSD-2-Clause] - [DENSITY][506] - Super-fast compression library. [
BSD-3-Clause
][BSD-3-Clause] - [heatshrink][514] - Data compression/decompression library for embedded and
real-time systems. [
ISC
][ISC] - [fast_zlib][533] - Improved zlib, which runs 2 to 10 times faster.
[
BSD-3-Clause
][BSD-3-Clause] - [fastLZ][586] - 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
][MIT] - [huffandpuff][214] - Minimal Huffman encoder and decoder. Public domain.
- [libzip][587] - C library for reading, creating and modifying zip archives.
[
BSD-3-Clause
][BSD-3-Clause] - [libbzip2][427] - Patent-free, high-quality data compression
library. [
BSD-4-Clause
][BSD-4-Clause] - [Lizard][489] - 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
][BSD-2-Clause] - [lz4][508] - Library for an extremely fast compression algorithm.
[
BSD-2-Clause
][BSD-2-Clause] - [lzo][338] - Fast data compression library.
[
GPL-2.0-or-later
][GPL-2.0-or-later] - [pixz][49] - Parallel, indexed xz compressor. [
BSD-2-Clause
][BSD-2-Clause] - [shoco][363] - Compressor for small text strings. [
MIT
][MIT] - [SIMDComp][519] - Simple library for compressing lists of integers using
binary packing. Makes use of SIMD instructions on x86.
[
BSD-3-Clause
][BSD-3-Clause] - [smaz][364] - Efficient string compression library.
[
BSD-3-Clause
][BSD-3-Clause] - [squash][393] - Compression abstraction library, complete with some
utilities. [
MIT
][MIT] - [TurboPFor][471] - Fastest integer compression.
[
GPL-2.0-or-later
][GPL-2.0-or-later] - [TurboRLE][484] - Most efficient run-length encoding. [
GPL-2.0-or-later
][GPL-2.0-or-later] - [zip][520] - Really really small zip archive processing library.
[
Unlicense
][Unlicense] - [Zlib][230] - Massively spiffy yet delicately unobtrusive compression
library. [
BSD-3-Clause
][BSD-3-Clause] - [libarchive][548] - libarchive is a portable, efficient C library that can read and write streaming archives in a variety of formats.
[
BSD-3-Clause
][BSD-3-Clause] - [zlib-ng][1] - Zlib replacement with optimizations for 'next-generation'
systems. [
BSD-3-Clause
][BSD-3-Clause] - [Zstandard][510] - Fast, lossless compression algorithm, targeting real-time
compression scenarios at zlib-level or better compression ratios.
[
BSD-3-Clause
][BSD-3-Clause]
Concurrency and Parallelism
- [cchan][243] - Small library for channel constructs for inter-thread communication. Public domain.
- [checkedthreads][465] - A simple library for
parallelism, with built-in checking for race conditions. [
BSD-2-Clause
][BSD-2-Clause] - [ck][242] - Concurrency primitives, safe memory reclamation mechanisms and
non-blocking data structures. [
BSD-2-Clause
][BSD-2-Clause] - [FCFS RWLock][540] - First-come first-served Readers/Writers lock for POSIX threads. [
CC0-1.0
][CC0-1.0] - [Libaco][599] - A blazing fast and lightweight C asymmetric coroutine library. [
Apache-2.0
][Apache-2.0] - [libconcurrent][390] - Concurrent programming library, using coroutines, for
C11. [
BSD-3-Clause
][BSD-3-Clause] - [libcsp][572] - High performance concurrency C library influenced by the CSP model. [
MIT
][MIT] - [libdill][442] - Library which makes structured concurrent programming
easy. [
MIT
][MIT] - [libhl][478] - 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
][LGPL-3.0-only] - [liburcu][474] - Data synchronization library, which scales linearly with the
number of cores. [
LGPL-2.1-or-later
][LGPL-2.1-or-later] - [mill][352] - Go-style concurrency. [
MIT
][MIT] - [oclkit][311] - Two-file OpenCL wrapper. [
GPL-3.0-or-later
][GPL-3.0-or-later] - [OCL-MLA][312] - OpenCL Mid-Level Abstractions. [
BSD-3-Clause
][BSD-3-Clause] - [OpenMP][37] - Set of pragmas designed to allow for easy parallelization of code. Standard (licensing not applicable).
- [Open MPI][284] - Message passing interface implementation. [
BSD-3-Clause
][BSD-3-Clause] - [pal][459] - Optimized library for maths, parallel processing and data
movement. [
Apache-2.0
][Apache-2.0] - [pth][180] - Portable implementation for non-preemptive priority-based
scheduling for multiple threads of execution.
[
GPL-3.0-or-later
][GPL-3.0-or-later] - [pthreads][146] - POSIX thread library. Standard (no license applicable).
- [TinyCThread][115] - Portable, small implementation of the C11 threads
API. [
Zlib
][Zlib]
Crypto
Mostly library implementations of well-known cryptographic algorithms or protocols.
- [GNU SASL][160] - Implementation of the Simple Authentication and Security
Layer and a few common SASL mechanism. [
GPL-3.0-or-later
][GPL-3.0-or-later] - [GnuTLS][112] - Secure communication library, implementing SSL, TLS and
DTLS. [
LGPL-2.1-or-later
][LGPL-2.1-or-later] - [libgcrypt][142] - General-purpose cryptography library, with a range of
available ciphers. [
LGPL-2.1-or-later
][LGPL-2.1-or-later] - [OpenSSL][110] - Implementation of the SSL and TLS protocols. Also includes a cryptography library. [Dual Licensed under the OpenSSL License and the SSLeay License][111].
- [liboqs][493] - Library for quantum-resistant cryptographicl algorithms.
[
MIT
][MIT] - [libsodium][198] - Modern and easy-to-use crypto library. [
MIT
][MIT] - [libtomcrypt][299] - Fairly comprehensive, modular and portable cryptographic toolkit. Public domain.
- [mbed TLS][291] - Another crypto implementation. [
Apache-2.0
][Apache-2.0] - [MIRACL][480] - Multiprecision Integer and Rational Arithmetic Cryptographic
Library; an SDK for elliptic curve cryptography.
[
AGPL-3.0-or-later
][AGPL-3.0-or-later] - [retter][507] - Collection of hash functions, ciphers, tools, libraries and materials related to cryptography and security. Public domain.
- [s2n][359] - C99 implementation of the TLS/SSL protocols, designed to be
simple, fast and with security as a priority. [
Apache-2.0
][Apache-2.0] - [sphlib][526] - Set of implementations of various hash functions, including
several cryptographic ones. [
MIT
][MIT] - [trezor-crypto][485] - Heavily optimized crypto algorithms for embedded
devices. [
MIT
][MIT] - [bfish][598] - A single include ANSI-C Blowfish ECB crypto library. Public domain.
Database
Databases and data stores with C APIs.
- [BerkeleyDB][380] - Library for a high-performance embedded database for
key-value data. [
AGPL-3.0-only
][AGPL-3.0-only] - [DuckDB][702] - Fast in-process analytical database, with C API. [
MIT
][MIT] - [EJDB2][568] - Embeddable JSON Database engine. [
MIT
][MIT] - [Groonga][524] - Columnar store with full-text search. [
LGPL-2.1-only
][LGPL-2.1-only] - [Hiredis][201] - Minimalistic client library for Redis.
[
BSD-3-Clause
][BSD-3-Clause] - [libmongoc][233] - High-performance client library for [MongoDB][234]. [
Apache-2.0
][Apache-2.0]