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

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 - A portable, header-only ANN library in C99. MIT.
  • FANN - Fast Artifical Neural Network library; an implementation of neural networks. GPL-2.0.
  • Genann - A simple ANN in C89, without additional dependencies. Zlib.
  • libdeep - A deep learning library. BSD-3-Clause.

Build Systems

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

  • Autoconf - An extensible package of M4 macros that produce shell scripts to automatically configure software source code packages. Part of the Autotools. GPL-3.0+.
  • Automake - A tool for automatically generating Makefile.in files compliant with the GNU Coding Standards. Requires the use of Autoconf. Part of the Autotools. GPL-3.0+.
  • GNU Make - A tool which controls the generation of executables and other non-source files of a program. GPL-3.0+.
  • Libtool - A generic library support script. Part of the Autotools. GPL-3.0+.
  • Meson - An extremely fast, user-friendly build system. Based on Ninja. Apache-2.0.
  • Premake - A 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.
  • tup - A very fast, file-based, cross-platform build system. GPL-2.0.
  • zproject - A project generator and build system support. MPL-2.0.

Compilers

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

  • ccache - A compiler cache designed to speed up recompilation. GPL-3.0+.
  • Clang - A compiler for LLVM. Supports C11. NCSA.
  • distcc - A program to allow builds to be distributed among several machines. GPL-2.0+.
  • GCC - Provides a C compiler as part of its compiler set. Supports C11. GPL-3.0+.
  • PCC - A venerable compiler. Supports C99. Various licenses, all open-source.

Compression

  • blosc - An extremely fast, multi-threaded, meta-compressor library. Various licenses, all open-source.
  • clzip - C version of the high-quality data compressor Lzip (LZMA implementation). GPL-2.0+.
  • CRoaring - C implementation of Roaring bitmaps. Apache-2.0.
  • DENSITY - A super-fast compression library. BSD-3-Clause.
  • heatshrink - A 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.
  • huffandpuff - A minimal Huffman encoder and decoder. Public domain.
  • libbzip2 - A patent-free, high-quality data compression library. BSD-4-Clause.
  • lz4 - Library for an extremely fast compression algorithm. BSD-2-Clause.
  • lzo - A very fast data compression library. GPL-2.0+.
  • shoco - A compressor for small text strings. MIT.
  • SIMDComp - A simple library for compressing lists of integers using binary packing. Makes use of SIMD instructions on x86. BSD-3-Clause.
  • smaz - An efficient string compression library. BSD-3-Clause.
  • squash - A compression abstraction library, complete with some utilities. MIT.
  • TurboPFor - Fastest integer compression. GPL-2.0+.
  • TurboRLE - Most efficient run-length encoding. GPL-2.0+.
  • zip - A really really small zip archive processing library. Unlicense.
  • Zlib - A massively-spiffy yet delicately-unobtrusive compression library. BSD-3-Clause.
  • Zstandard - A fast, lossless compression algorithm, targeting real-time compression scenarios at zlib-level or better compression ratios. BSD-3-Clause.

Concurrency and Parallelism

  • cchan - A small library for channel constructs for inter-thread communication. Public domain.
  • cf4ocl - The C Framework for OpenCL; a cross-platform object-oriented framework for developing and benchmarking OpenCL projects. LGPL-3.0.
  • checkedthreads - No race condition goes unnoticed! 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.
  • libconcurrent - Concurrent programming library, using coroutines, for C11. BSD-3-Clause.
  • libdill - A library which makes structured concurrent programming easy. MIT.
  • libhl - A 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.
  • liburcu - A data synchronization library, which scales linearly with the number of cores. LGPL-2.1+.
  • mill - Go-style concurrency. MIT.
  • OpenMP - A set of pragmas designed to allow for easy parallelization of code. Standard (licensing not applicable).
  • OpenMPI - A message passing interface implementation. BSD-3-Clause.
  • pal - An optimized library for maths, parallel processing and data movement. Apache-2.0.
  • PETSc - A suite of data structures and routines for scalable parallel solution of scientific applications modelled by partial differential equations. BSD-2-Clause.
  • pth - A portable implementation for non-preemptive priority-based scheduling for multiple threads of execution. GPL-3.0+.
  • pthreads - The POSIX thread library. Standard (no license applicable).
  • TinyCThread - A portable, small implementation of the C11 threads API. Zlib.

Crypto

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

  • GNU SASL - An implementation of the Simple Authentication and Security Layer and a few common SASL mechanism. GPL-3.0+.
  • GnuTLS - A secure communication library, implementing SSL, TLS and DTLS. LGPL-2.1+.
  • libgcrypt - A general-purpose cryptography library, with a range of available ciphers. LGPL-2.1+.
  • OpenSSL - Implementation of the SSL and TLS protocols. Also includes a cryptography library. Dual Licensed under the OpenSSL License and the SSLeay License.
  • liboqs - A library for quantum-resistant cryptographicl algorithms. MIT.
  • libsodium - A modern and easy-to-use crypto library. MIT.
  • libtomcrypt - A 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-1.0+.
  • retter - A collection of hash functions, ciphers, tools, libraries and materials related to cryptography and security. Public domain.
  • s2n - A C99 implementation of the TLS/SSL protocols, designed to be simple, fast and with security as a priority. Apache-2.0.
  • sphlib - A set of implementations of various hash functions, including several cryptographic ones. MIT.

Database

Databases and data stores with C APIs.

  • BerkeleyDB - A library for a high-performance embedded database for key-value data. AGPL-1.0.
  • Groonga - Columnar store with full-text search. LGPL-2.1.
  • Hiredis - A minimalistic client library for Redis. BSD-3-Clause.
  • libmongoc - A high-performance client library for MongoDB. Apache-2.0.
  • LMDB - An ultra-fast, ultra-compact key-value embedded data store. OLDAP-2.8.
  • MariaDB - A robust, scalable and reliable SQL server, designed to be a drop-in replacement for MySQL. BSD-3-Clause.
  • PostgreSQL - A powerful object-relational database system. PostgreSQL.
  • recutils - A set of tools and a library for accessing human-editable, plaintext database files called recfiles. GPL-3.0+.
  • Redis - An advanced key-value store. BSD-3-Clause.
  • sophia - A modern, embeddable key-value database. BSD-2-Clause.
  • sparkey - A simple constant key/value storage library. Designed for read-heavy loads with infrequent, large bulk inserts. Apache-2.0.
  • SQLite - A self-contained, serverless, zero-configuration, transactional SQL database engine. Public domain.
  • UnQLite - A self-contained, serverless, zero-configuration, transactional NoSQL engine. BSD-2-Clause.
  • WhiteDB - A lightweight database library, operating entirely in main memory. GPL-3.0+.

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 - A 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+.
  • Complexity - A tool for measuring the complexity of source code. GPL-3.0+.
  • CScout - A source code analyzer and refactoring browser for C programs. GPL-3.0.
  • DDD - A graphical front-end for a range of command-line debuggers. GPL-3.0+.
  • debug - A one-header library for easier 'printf debugging'. MIT.
  • GDB - The GNU Project debugger. GPL-3.0+.
  • lldb - The LLVM debugger. NCSA.
  • rr - A debugger that records non-deterministic executions to allow for deterministic debugging. BSD-2-Clause.
  • Valgrind - A range of dynamic analysis tools, including a leak checker. GPL-2.0.

Documentation Generation

  • Cxref - Generates documentation in either LaTeX, HTML, RTF or SGML. GPL-2.0.
  • DocOnce - A modestly-tagged markup language that can be used to generate a range of formats. BSD-3-Clause.
  • Doxygen - The de-facto standard tool for generating documentation from annotated sources. Can generate a large range of formats. GPL-2.0.
  • GTK-Doc - A tool for generating documentation from annotated sources. Has support for the Autotools. GPL-2.0.

Editors

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

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 - A collection of common algorithms and data structures. ISC.
  • Collections-C - A library of generic data structures. LGPL-3.0+.
  • CPL - The Common Pipeline Library; a set of libraries designed to be a comprehensive, efficient and robust software toolkit. GPL-2.0.
  • EFL - A large collection of useful data structures and functions. Various licenses, all open-source.
  • GLib - A library of utility functions and structures, designed to be portable, efficient and powerful. LGPL-2.1.
  • GIO - A modern and easy-to-use VFS API. LGPL-2.1.
  • GObject - An object-oriented system and object model. LGPL-2.1.
  • 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 - A lightweight library of functions and structures. GPL-2.0.
  • libU - A small library of basic utilities, including memory allocation, string manipulation and logging. BSD-3-Clause.
  • offbrand - A collection of generic, reference-counted data structures. MIT.
  • PBL - A large library of utilities, featuring data structures, among other things. LGPL-2.1+.
  • qlibc - A simple and powerful library, designed as a replacement for GLib while focusing on being small and light. BSD-2-Clause.
  • stb - A range of single-file libraries. Public domain.
  • TBOX - A multi-platform library with a large number of capabilities. LGPL-2.1+.

Game Programming

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

  • Allegro - A cross-platform, video game development and multimedia library. Zlib.
  • Chipmunk2D - A fast and lightweight 2D game physics library. MIT.
  • Corange - A game engine in pure C. BSD-2-Clause.
  • CSFML - A binding for SFML. Zlib.
  • Darkplaces - A modified version of the Quake2 engine. GPL-2.0.
  • Epoxy - A library for handling OpenGL function pointer management. MIT.
  • FreeGLUT - An alternative to the OpenGL Utility Toolkit. Allows the creation and management of windows with OpenGL contexts. X11.
  • GLFW - A multi-platform library for creating windows with OpenGL contexts. Zlib.
  • ioquake3 - The Quake3 engine, freed at last. GPL-2.0.
  • kazmath - A maths library for games. BSD-2-Clause.
  • libao - A cross-platform audio library with a wide variety of outputs. GPL-2.0+.
  • Orx - A portable, lightweight, plugin-based, data-driven, 2D-oriented game engine. Zlib.
  • Quake - The Quake engine. GPL-2.0.
  • Quake2 - The Quake2 engine. GPL-2.0.
  • raylib - A simple and easy-to-use library to learn video game programming. Zlib.
  • RetroArch - The reference frontend for libretro. GPL-3.0.
  • SDL2 - A cross-platform library designed to provide low-level access to audio, keyboard, mouse, joystick and graphics hardware via OpenGL. Zlib.
  • sdl-gpu - A 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.
  • Spearmint - An engine designed for FPS games. GPL-3.0+.

Graphics

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

  • Cairo - A 2D graphics library. LGPL-2.1 or MPL-1.1.
  • Cogl - A GPU graphics and utilities API. MIT.
  • Clutter - A UI library based on OpenGL. LGPL-2.1.
  • giflib - A library for reading and writing gif images. MIT.
  • graphene - A thin layer of graphical data types. MIT.
  • heman - A tiny library of image utilities dealing with height maps, normal maps, distance fields and the like. MIT.
  • libcaca - An ASCII renderer for terminal-based interfaces. WTFPL.
  • libgd - A 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+.
  • libjpeg-turbo - A faster library for reading and writing JPEG files. Various licences.
  • libpng - The official PNG reference library. Libpng.
  • libRSVG - A library to render SVG files using Cairo. LGPL-2.1+.
  • libsixel - A library implementing the SIXEL protocol, allowing beautiful graphics in your terminal. MIT.
  • libvips - An image processing library. LGPL-2.1+.
  • libxmi - A function library for rasterizing 2D vector graphics. GPL-3.0+.
  • lightmapper - A single-file library for lightmap baking, using an existing OpenGL renderer. Public domain.
  • mozjpeg - An improved JPEG encoder. BSD-3-Clause.
  • nanovg - Anti-aliased 2D vector drawing library on top of OpenGL, for UI and visualizations. Zlib.
  • OpenGL - The industry standard for high-performance graphics, with a native C binding. Various licenses.

Graphical User Interface

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

  • GTK+ - A cross-platform widget toolkit. LGPL-2.1.
  • IUP - Another cross-platform widget toolkit. MIT.
  • nuklear - A small, C89, single-header widget toolkit. Public domain.
  • tinyfiledialogs - A single-file library for simple dialogs. Compatible with many other toolkits and OSes. Zlib.
  • Tk - A basic widget toolkit. Part of Tcl/Tk. TCL.
  • XForms Toolkit - A widget toolkit designed for the XWindow system. LGPL-2.1.

Hashing

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

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

JSON

  • cJSON - Ultra-lightweight JSON parser. MIT.
  • Jansson - A library for encoding, decoding and manipulating JSON. MIT.
  • jsmn - A minimalistic JSON parser. MIT.
  • jfes - A simple JSON engine without any dependencies. MIT.
  • json-c - A library for working with JSON. MIT.
  • WJElement - Advanced JSON manipulation library, with support for JSON Schema. LGPL-2.0+ or LGPL-2.1+ or LGPL-3.0+.
  • YAJL - A fast streaming JSON parser library. ISC

Learning, Reference and Tutorials

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

Reference resources online

Beginner resources online

Intermediate resources online

Advanced resources online

Online self-study courses

Reference books

Beginner books

Intermediate books

Advanced books

Lexing and Parsing

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

  • flex - The fast lexical analyzer generator. BSD-2-Clause.
  • GNU Bison - A general-purpose parser generator that converts an annotated context-free grammar into a range of parsers. GPL-3.0+.
  • hammer - Parser combinators for binary formats. GPL-2.0.
  • mpc - A parser combinator library. BSD-2-Clause.
  • re2c - A lexer generator, producing very 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.

Multimedia

  • aubio - A library for audio and music analysis. GPL-3.0+.
  • FFMPEG - A complete, cross-platform solution to record, convert and stream audio and video. LGPL-2.1+
  • GStreamer - A framework for audio and visual media. LGPL-2.1+.
  • libmpv - A music-playing library. Compile with ./waf configure --disable-cplayer --enable-libmpv-shared to not have the music player. GPL-2.0+.
  • libsndfile - A library for reading and writing sound files. Supports many formats. LGPL-2.1 or LGPL-3.0.
  • libsoundio - A library for cross-platform, real-time audio input and output. Has a range of back-ends. MIT.
  • lodepng - A simple PNG image decoder and encoder, requiring no other dependencies. BSD-3-Clause.
  • Soundpipe - A 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 - A 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.
  • czmq - A high-level binding for ZeroMQ. MPL-2.0
  • GNU adns - An advanced, easy-to-use, asynch-capable DNS client library and utilities. GPL-3.0+.
  • gumbo-parser - An HTML5 parsing library in C99. Apache-2.0.
  • http-parser - An HTTP request/response parser. MIT.
  • ldns - A library to simplify DNS programming. BSD-3-Clause.
  • libcurl - A client-side URL transfer library, supporting a wide range of formats. curl.
  • LibEtPan - A mail library providing an efficient network for IMAP, SMTP, POP and NNTP. BSD-3-Clause.
  • libev - Yet another event loop. BSD-2-Clause.
  • libevent - An event loop replacement for network servers. BSD-3-Clause.
  • libhttpd - A library to add basic web server capabilities to an application or embedded device. GPL-2.0.
  • libidn - An implementation of the Stringprep, Punycode and IDNA specifications. GPL-3.0+.
  • libmicrohttpd - A small library that makes it easy to run an HTTP server as part of another application. LGPL-2.1+.
  • libonion - HTTP server library, designed to be easy to use. Apache-2.0.
  • libquickmail - A 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+.
  • libsoup - A GNOME HTTP client/server library. Uses GObject. LGPL-2.1.
  • LibVNCServer - Cross-platform libraries to implement VNC server and/or client functionality. GPL-2.0+.
  • libwebsock - An easy-to-use and powerful web socket library. LGPL-3.0.
  • lwan - An experimental, scalable, high-performance HTTP server. GPL-2.0.
  • mongoose - Embedded web server. GPL-2.0.
  • nanomsg - A C-based implementation of ZeroMQ. MIT.
  • oSip - A SIP implementation without additional dependencies. LGPL-2.1+.
  • socket99 - A C99 wrapper for the BSD sockets API. ISC.
  • twitc - A mini library for interacting with the Twitter OAuth API. MIT.
  • trezor-crypto - Heavily-optimized crypto algorithms for embedded devices. MIT.
  • Wslay - A WebSocket library. Implements version 13 of the WebSocket protocol, as described in RFC 6455. MIT.
  • zyre - A framework for proximity-based peer-to-peer applications. MPL-2.0.

Numerical

  • apophenia - A library for statistical and scientific computing. GPL-2.0.
  • Arb - Library for arbitrary-precision interval arithmetic. LGPL-2.1+.
  • ATLAS - Automatically Tuned Linear Algebra Software. BSD-3-Clause.
  • clBLAS - BLAS functions written in OpenCL. Apache-2.0.
  • Cuba - A library for multidimensional numerical integration. LGPL-3.0.
  • FFTW - The Fastest Fourier Transform in the West; a highly-optimized fast Fourier transform routine. GPL-2.0+.
  • FLINT - Fast Library for Number Theory; a library supporting arithmetic with numbers, polynomials, power series and matrices, among others. GPL-2.0+.
  • GLPK - GNU Linear Programming Kit; a package designed for solving large-scale linear programming, mixed integer programming and other related problems. GPL-3.0+.
  • GMP - GNU Multple Precision Arithmetic Library; a library for arbitrary-precision arithmetic. GPL-2.0 or LGPL-3.0.
  • GNU MPC - A library for complex number arithmetic. LGPL-3.0+.
  • GNU MPFR - A library for arbitrary-precision floating-point arithmetic. LGPL-3.0+.
  • GNU MPRIA - A portable mathematics library for multi-precision rational interval arithmetic. GPL-3.0+.
  • GSL - The GNU Scientific Library; a sophisticated numerical library. GPL-3.0.
  • KISS FFT - A very simple fast Fourier transform library. BSD-3-Clause.
  • LAPACKE - An interface to LAPACK. BSD-3-Clause.
  • LibTomMath - A portable, number-theoretic, multiple-precision integer library. Supports algebra, digit manipulation, modular reductions, and various number-theoretic routines. Public domain.
  • LibTomPoly - A polynomial-related maths library. Public domain.
  • PARI/GP - A computer algebra system for number theory; includes a compiler to C. GPL-2.0+.
  • PETSc - A 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 - A software library for the solution of large, sparse eigenvalue problems on parallel computers. LGPL-3.0.
  • TomsFastMath - A set of assembly-level-optimized maths operations, suitable for cryptographic use. Public domain.
  • Yeppp! - Very fast, SIMD-optimized mathematical library. BSD-3-Clause.

Profiling

  • gperftools - A collection of utilities for measuring and improving performance. BSD-3-Clause.
  • gprof - A performance analysis tool. Part of GNU binutils. GPL-3.0+.
  • OProfile - A statistical profiler for GNU/Linux. Can profile any code (including the kernel!) with low overhead and without recompilation. GPL-2.0.
  • perf - A Linux kernel-based profiler with a lot of functionality. GPL-2.0.

Regex

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

Serialization

  • binn - A binary serialization format, meant to be compact, fast and easy-to-use. Apache-2.0.
  • c-capnproto - An implementation of the Cap'n Proto serialization protocol. MIT.
  • cmp - An implementation of the MessagePack serialization protocol. MIT.
  • flatcc - FlatBuffers compiler and library. Apache-2.0.
  • libavro - An 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+.
  • protobuf-c - An implementation of Google Protocol Buffer. BSD-2-Clause.
  • tpl - A small binary serialization library. MIT.
  • xdr - External Data Representation; a standard for data serialization. Standard (no license applicable).

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 - A collection of common GNU code. Various licenses, all open-source.
  • libdjb - A collection of libraries doing various things. (Apparently) public domain.
  • par - A bunch of single-file libraries. MIT.

Standard Libraries

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

String Manipulation

  • bstrlib - The Better String Library. BSD-3-Clause or GPL-2.0.
  • ICU - International Components for Unicode; a library for Unicode support. ICU.
  • libunistring - A library for manipulating Unicode strings. LGPL-3.0.
  • libgiconv - A text conversion library. LGPL-2.1.
  • librope - A 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.
  • utf8.h - Single-header UTF-8 library, designed to mimic C-style string functions. Public domain.
  • utf8proc - A library for processing UTF-8 data. MIT.

Testing

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

Tools

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

  • Artistic Style - A fast and small automatic source code formatter that supports C. LGPL-3.0.
  • address-sanitizer - A fast memory error detector. Apache-2.0.
  • biicode - A modern dependency manager. MIT.
  • 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 - An 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 GPL-2.0+ or GPL-3.0+.
  • ClangCheck - A static analysis tool, designed to work with Clang. NCSA.
  • Cppcheck - A static analysis tool. Despite the name, works well with C. GPL-3.0+.
  • Glade - A RAD tool to enable quick development of GTK+ GUIs. GPL-2.0.
  • GMSL - GNU Make Standard Library; a collection of additional functionality for GNU Make. BSD-3-Clause.
  • GNU Global - A source code tagging tool. GPL-3.0.
  • GPP - A general-purpose preprocessor. More versatile than the C preprocessor, but more flexible than m4. LGPL-3.0+.
  • Highlight - Converts source code to formatted text with nice highlighting. GPL-3.0.
  • include-what-you-use - Helps find unecessary inclusions and make suggestions for fixing them. Based on LLVM/Clang (and only works with it). NCSA.
  • indent - Formats C source code automatically to make it easier to read. Also converts from one style of source to another. GPL-3.0+.
  • qo - A build system that works without a separate config file. MIT.
  • SMACK - A 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.

Web Frameworks

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

  • balde - A microframework based on GLib. LGPL-2.1.
  • facil.io - A mini-framework for web applications. Includes a fast HTTP and Websocket server, and also supports custom protocols. MIT.
  • KLone - A fully-featured, multi-platform, web application development framework, targeted especially at embedded systems and appliances. BSD-3-Clause.
  • Kore - An 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 - A 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.

XML

  • Expat - A stream-oriented XML parser. MIT.
  • libxml2 - A standards-compliant, portable XML parser. MIT.
S
Description
A curated list of awesome C frameworks, libraries, resources and other shiny things. Inspired by all the other awesome-... projects out there.
Readme CC-BY-SA-4.0
989 KiB
0 Stars 1 Watchers 0 Forks