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