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

Koz Ross 46e0d49082 Fixing SEI CERT C coding link 2 weeks ago
CONTRIBUTING.md a1e058a609 Full SPDX-ication 7 months ago
LICENSE 1c9fefc4ba Relicensing to CC-BY-SA-4.0 1 year ago
README.md 46e0d49082 Fixing SEI CERT C coding link 2 weeks ago

README.md

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

Build Systems

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

  • Autoconf - Extensible package of M4 macros that produce shell scripts to automatically configure software source code packages. Part of the Autotools. GPL-3.0+.
  • Automake - 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 - Tool which controls the generation of executables and other non-source files of a program. GPL-3.0+.
  • Libtool - Generic library support script. Part of the Autotools. GPL-3.0+.
  • 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.
  • tup - Very fast, file-based, cross-platform build system. GPL-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+.
  • Clang - Compiler for LLVM. Supports C11. NCSA.
  • distcc - Program that allows builds to be distributed among several machines. GPL-2.0+.
  • 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.
  • GCC - Provides a C compiler as part of its compiler set. Supports C11. GPL-3.0+.
  • PCC - Venerable compiler. Supports C99. Various licenses, all open-source.

Compression

  • blosc - 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 - 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.
  • huffandpuff - Minimal Huffman encoder and decoder. Public domain.
  • libbzip2 - Patent-free, high-quality data compression library. BSD-4-Clause.
  • Lizard - Formerly LZ5; an efficient compressor with very 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 - Very fast data compression library. GPL-2.0+.
  • 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+.
  • TurboRLE - Most efficient run-length encoding. GPL-2.0+.
  • zip - Really really small zip archive processing library. Unlicense.
  • Zlib - Massively-spiffy yet delicately-unobtrusive compression library. 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.
  • 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 - 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.
  • liburcu - Data synchronization library, which scales linearly with the number of cores. LGPL-2.1+.
  • mill - Go-style concurrency. MIT.
  • OpenMP - Set of pragmas designed to allow for easy parallelization of code. Standard (licensing not applicable).
  • OpenMPI - 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+.
  • 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+.
  • GnuTLS - Secure communication library, implementing SSL, TLS and DTLS. LGPL-2.1+.
  • libgcrypt - 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 - 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-1.0+.
  • 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.

Database

Databases and data stores with C APIs.

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+.
  • Complexity - Tool for measuring the complexity of source code. GPL-3.0+.
  • CScout - Source code analyzer and refactoring browser for C programs. GPL-3.0.
  • DDD - Graphical front-end for a range of command-line debuggers. GPL-3.0+.
  • debug - One-header library for easier 'printf debugging'. MIT.
  • GDB - GNU Project debugger. GPL-3.0+.
  • 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.

Documentation Generation

  • Cxref - Generates documentation in either LaTeX, HTML, RTF or SGML. GPL-2.0.
  • 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.
  • GTK-Doc - 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 - Collection of common algorithms and data structures. ISC.
  • Collections-C - 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 - 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.
  • GIO - Modern and easy-to-use VFS API. LGPL-2.1.
  • GObject - 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 - Lightweight library of functions and structures. GPL-2.0.
  • libU - Small library of basic utilities, including memory allocation, string manipulation and logging. BSD-3-Clause.
  • 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.
  • PBL - Large library of utilities, featuring data structures, among other things. LGPL-2.1+.
  • qlibc - Simple and powerful library, designed as a replacement for GLib while focusing on being small and light. BSD-2-Clause.
  • stb - Range of single-file libraries. Public domain.
  • TBOX - 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 - Cross-platform, video game development and multimedia library. Zlib.
  • Chipmunk2D - Fast and lightweight 2D game physics library. 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.
  • Epoxy - Library for handling OpenGL function pointer management. 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.
  • kazmath - Maths library for games. BSD-2-Clause.
  • libao - Cross-platform audio library with a wide variety of outputs. GPL-2.0+.
  • Orx - Portable, lightweight, plugin-based, data-driven, 2D-oriented game engine. Zlib.
  • Quake - Quake engine. GPL-2.0.
  • Quake2 - Quake2 engine. GPL-2.0.
  • raylib - Simple and easy-to-use library to learn video game programming. Zlib.
  • RetroArch - Reference frontend for libretro. GPL-3.0.
  • 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.
  • Spearmint - 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 - 2D graphics library. LGPL-2.1 or MPL-1.1.
  • Cogl - GPU graphics and utilities API. MIT.
  • Clutter - UI library based on OpenGL. LGPL-2.1.
  • 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+.
  • 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+.
  • libsixel - Library implementing the SIXEL protocol, allowing beautiful graphics in your terminal. MIT.
  • libvips - Image processing library. LGPL-2.1+.
  • libxmi - Function library for rasterizing 2D vector graphics. GPL-3.0+.
  • lightmapper - Single-file library for lightmap baking, using an existing OpenGL renderer. Public domain.
  • 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.

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.
  • IUP - Another cross-platform widget toolkit. 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.

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

JSON

  • Jansson - Library for encoding, decoding and manipulating JSON. MIT.
  • jsmn - Minimalistic JSON parser. MIT.
  • jfes - JSON For Embedded Systems; simple JSON engine without any dependencies. MIT.
  • WJElement - Advanced JSON manipulation library, with support for JSON Schema. LGPL-2.0+ or LGPL-2.1+ or LGPL-3.0+.
  • YAJL - 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 - 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+.
  • hammer - Parser combinators for binary formats. GPL-2.0.
  • mpc - Parser combinator library. BSD-2-Clause.
  • re2c - 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

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.
  • czmq - High-level binding for ZeroMQ. MPL-2.0
  • GNU adns - Advanced, easy-to-use, asynch-capable DNS client library and utilities. GPL-3.0+.
  • gumbo-parser - HTML5 parsing library in C99. Apache-2.0.
  • http-parser - 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.
  • libidn - Implementation of the Stringprep, Punycode and IDNA specifications. GPL-3.0+.
  • libmicrohttpd - 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 - 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+.
  • LibVNCServer - Cross-platform libraries to implement VNC server and/or client functionality. GPL-2.0+.
  • libwebsock - Easy-to-use and powerful web socket library. LGPL-3.0.
  • lwan - Experimental, scalable, high-performance HTTP server. GPL-2.0.
  • mongoose - Embedded web server. GPL-2.0.
  • nanomsg - C-based implementation of ZeroMQ. MIT.
  • oSip - SIP implementation without additional dependencies. LGPL-2.1+.
  • socket99 - C99 wrapper for the BSD sockets API. ISC.
  • twitc - Mini library for interacting with the Twitter OAuth API. MIT.
  • 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.
  • 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 - 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 - Library for complex number arithmetic. LGPL-3.0+.
  • GNU MPFR - Library for arbitrary-precision floating-point arithmetic. LGPL-3.0+.
  • GNU MPRIA - 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 - Very 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+.
  • 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.
  • TomsFastMath - 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 - Collection of utilities for measuring and improving performance. BSD-3-Clause.
  • gprof - Performance analysis tool. Part of GNU binutils. GPL-3.0+.
  • OProfile - Statistical profiler for Linux. Can profile any code (including the kernel!) with low overhead and without recompilation. GPL-2.0.
  • perf - Linux kernel-based profiler with a lot of functionality. GPL-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 very small implementation of a subset of Perl regex syntax. GPL-2.0.
  • 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+.
  • 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).

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.
  • par - 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 - Library for manipulating Unicode strings. LGPL-3.0.
  • libgiconv - Text conversion library. LGPL-2.1.
  • 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.
  • utf8.h - Single-header UTF-8 library, designed to mimic C-style string functions. Public domain.
  • utf8proc - 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 - 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 - Emacs code template system, with C templates for common snippets. GPL-3.0+.
  • YouCompleteMe - 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 - Fast and small automatic source code formatter that supports C. LGPL-3.0.
  • address-sanitizer - Fast memory error detector. Apache-2.0.
  • biicode - 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 - 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 - Static analysis tool, designed to work with Clang. NCSA.
  • Cppcheck - Static analysis tool. Despite the name, works well with C. GPL-3.0+.
  • Glade - 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 - Source code tagging tool. GPL-3.0.
  • GPP - 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+.
  • 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.

Web Frameworks

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

  • balde - Microframework based on GLib. LGPL-2.1.
  • facil.io - Mini-framework for web applications. Includes a fast HTTP and Websocket server, and also supports custom protocols. MIT.
  • 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.

XML

  • Expat - Stream-oriented XML parser. MIT.
  • libxml2 - Standards-compliant, portable XML parser. MIT.