oz123 / awesome-c

A curated list of awesome C frameworks, libraries, resources and other shiny things. Inspired by all the other awesome-... projects out there.
Creative Commons Attribution Share Alike 4.0 International
9.04k stars 804 forks source link
awesome awesome-list c list

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.

Benchmarking

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

Build Systems

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

Compilers

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

Compression

Concurrency and Parallelism

Crypto

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

Database

Databases and data stores with C APIs.

Data Structures

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.

Documentation Generation

Editors

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

Embeddable Scripting Engines

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

Frameworks

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

Game Programming

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

Graphics

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

Graphical User Interface

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

Hashing

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

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

Reference books

Beginner books

Intermediate books

Advanced books

Lexing and Parsing

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

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.

Numerical

Profiling

PDF

Regex

Serialization

Source Code Collections

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

Standard Libraries

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

Template libraries

String Manipulation

Structured File Processing

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

CSV

JSON

INI

Others

XML

YAML

Signal Processing

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.

Tools

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

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.

Windows Environments

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