- Notifications
You must be signed in to change notification settings - Fork21
New changes are here:https://notabug.org/bfgeshka/awesome-c
License
Bfgeshka/awesome-c
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
A curated list of C good stuff. Contributions are welcome.
An important note: first and foremost linked resources are for C, thereforeC++ is an afterthought.
Note: there are several awesome-c lists already, but they are havingsomewhat different sets of libraries in them. This list tries to incorporatethem all, and many more other resources. Consider it my personal cheat sheet andindex for easier search instead of github stars. Also, original list categoriesare a mess.
Note: all licenses after project descriptions are leading to actual licensetext or declaration, if any provided. Source code with no license attached isconsidered as automatically copyrighted by law or it is falling under the caseof terms of service of provided source code publication and hosting service, sokeep this in mind. Also, probably sometimes license can be provided ormentioned, but I've failed to find it.
I am not an attorney btw.
Incorporated lists:
- https://github.com/aleksandar-todorovic/awesome-c (rare updates, too vague andsometimes mismatched categories, not very wide selection of content)
- https://github.com/kozross/awesome-c (updated regularly, but has even lesscontent than one above)
- https://github.com/uhub/awesome-c (regular updates, much more content thanprevious two, but much more of it doesn't even belong to C list. Also, nostructure at all)
- AI
- Algoritm Implementations
- Argument Parsing
- Calculations
- Compression
- Concurrency and Parallelism
- Crypto
- Databases
- Data Structures
- Events
- FFI
- Filetype Targets
- Flow Control and Language Extension
- Game Development
- Geography
- GUI
- Hardware Oriented
- Hashing
- Image Processing and Computer Vision
- Integrated Debugging
- I/O
- Lexing and Parsing
- Memory Management
- Multimedia
- Multiple Purpose Libraries
- Networking
- OpenCL
- OS Specifics
- Procedural Generation
- Processes and IPC
- Regex and Search
- Serialization
- Source Code Collections
- Special Purpose Libraries
- Standard Libraries
- String Manipulation
- Testing
- TUI
Build Systems
^
Build Systems
- aimake - Build tool designed to avoid complex configurations.
GPL 3
- Autoconf - Extensible package of M4 macros that produce shell scriptsto automatically configure software source code packages. Part of theAutotools.
GPL 2
- Automake - Tool for automatically generating
Makefile.in
filescompliant with the GNU Coding Standards. Requires the use of Autoconf. Part ofthe Autotools.GPL 2
- Bazel - Build system for various operating systems and targets.
Apache 2
- Buck - Build system created and used by Facebook.
Apache 2
- CMake - Cross-platform family of tools designed to build, package andtest software. Written in C++11.
BSD 3-Clause
- GNU Make - Tool which controls the generation of executables andother non-source files of a program.
GPL 3
- jamplus/jamplus - Jamplus is a generic code and data build systemderived from the original Perforce version of Jam.
License
- Libtool - Generic library support script. Part of the Autotools.
GPL 2
- Meson - Build system based on Ninja and Python.
Apache 2
- ninja-build/ninja - Small, simple build system with a focus on speed.
Apache 2
- Premake - Generates project files for Visual Studio, Xcode and GNUMake. Targets suppport can be extended via modules.
BSD 3-Clause
- Qbs - Modern build tool for software projects.
Licenses
- qmake - Build system included with the Qt Framework.
Licenses
- SCons/scons - Software construction tool based on Python.
License
- gittup/tup - Tup is a file-based build system.
GPL 2
- xmake-io/xmake - Cross-platform build utility based on Lua.
Apache 2
- zeromq/zproject - Project generator and build system support toolfor ZeroMQ project.
MPL 2
- michaelforney/samurai - ninja-compatible build tool written in C.
Licenses
- matricks/bam - Build system with Lua scripting.
License
Compilers
^
Compilers
- rui314/8cc - A Small C Compiler.
MIT
- rui314/9cc - A Small C Compiler.
MIT
- jserv/amacc - Small C Compiler generating ELF executable for Armarchitecture.
GPL 2
- andrewchambers/c - small self hosting C compiler.
BSD 2-Clause
- cc65/cc65 - cc65 - a freeware C compiler for 6502 based systems.
Zlib
- Clang - Compiler for LLVM. Supports C11.
NCSA
- CompCert - Fully-verified C compiler. Supports almost all of C89.
License
- GCC a C compiler as part of its compiler set. Supports C11.
License
- Intel SPMD - Compiler for a variant of the C language, for singleprogram, multiple data programming.
License
- PCC - Venerable compiler. Supports C99.
Licenses
- larmel/lacc - A simple, self-hosting C compiler.
MIT
- drh/lcc - The lcc retargetable ANSI C compiler.
License
- TCC - Tiny C Compiler; a small, fast C compiler. Supports C99 (exceptcomplex types).
LGPL 2.1
- alexfru/SmallerC - Simple C compiler.
License
- michaelforney/cproc - C11 compiler for unix-like systems.
License
Debugging and Analysis
^
Debugging and Analysis
- C-Reduce - Tool that takes a large C file with a property of interestand automatically produces a much smaller C file that has the same property.Intended to help create minimal bug-demonstrating cases in complex code.
License
- CBMC - C Bounded Model Checker; a tool for verification of arraybounds, pointer safety and user-specified assertions.
License
- cgdb/cgdb - Console front-end to the GNU debugger.
GPL 2
- GNU cflow - Analyzes a collection of source files and prints a graphcharting control flow in the program.
GPL 3
- ClangCheck - Static analysis tool, designed to work with Clang.
NCSA
- GNU Complexity - Tool for measuring the complexity of source code.
GPL 3
- Cppcheck - Static analysis tool. Despite the name, works well with C.
GPL 3
- CScout - Source code analyzer and refactoring browser for C programs.
GPL 3
- agl/ctgrind - Checking that functions are constant time withValgrind.
No license
- GNU DDD - Graphical front-end for a range of command-line debuggers.
Licenses
- GDB - GNU Project debugger.
Licenses
- lldb - LLVM debugger.
NCSA
- rr - Debugger that records non-deterministic executions to allow fordeterministic debugging.
License
- SVF-tools/SVF - Pointer Analysis and Program Dependence Analysis forC and C++ Programs.
License
- Valgrind - Range of dynamic analysis tools, including a leakchecker.
GPL 2
Documentation Generation
^
Documentation Generation
- Cxref - Generates documentation in either LaTeX, HTML, RTF or SGML.
GPL 2
- DocOnce - Modestly tagged markup language that can be used togenerate a range of formats.
BSD 3-Clause
- Doxygen - De-facto standard tool for generating documentation fromannotated sources. Can generate a large range of formats.
GPL 2
- GTK-Doc - Tool for generating C documentation from annotated sources.Has support for the Autotools.
GPL 2
Editors
^
Editors
- Anjuta DevStudio - GNOME IDE.
GPL 2
- Atom - Hackable text editor for the 21st century.
MIT
- Code::Blocks - Extendable, configurable IDE supporting C.
GPL 3
- CodeLite - Cross-platform IDE.
GPL 2
- Eclipse - IDE written in Java.
EPL 2
- Geany - Small and fast IDE.
GPL 2
- KDevelop - KDE IDE.
GPL 2
- Qt Creator - Cross-platform IDE written with C++ and Qt, part of theQt SDK. Supports Clang Code Model.
GPL 3 w/ exceptions
- Visual Studio Code - Code editing, redefined. Visual Studio Code.
MIT
Microsoft Windows Environment
^
Microsoft Windows Environment
- Cygwin - Designed to emulate a POSIX-compatible environmentextensively under Windows.
Licenses
- MinGW-w64 - Minimalist environment for C development on Windows with64 bit support.
Licenses
- MSYS2 - Minimal SYStem 2; aims to provide support for a POSIXenvironment on Windows, with a package manager based on Arch Linux'spacman. Packages have individual licenses, otherwise, as MinGW and Cygwin.
BSD 3-Clause
- reactos - A free Windows-compatible Operating System.
GPL 2
Profiling
^
Profiling
- gperftools - Collection of utilities for measuring and improvingperformance.
BSD 3-Clause
- gprof - Performance analysis tool. Part of GNU binutils.
Licenses
- OProfile - Statistical profiler for Linux. Can profile any code(including the kernel!) with low overhead and without recompilation.
GPL 2
- perf - Linux kernel-based profiler with a lot of functionality.
GPL 2
Text Editor Extensions
^
Text Editor Extensions
- CCompletion - Notepad++ autocompletion plugin. Works with allidentifiers recognized by Ctags. This is a download link. [
GPL 2
] - CEDET - Collection of Emacs Development Environment Tools; designedto provide IDE-like features to Emacs. Built-in.
GPL 2
- lvzixun/Clang-Complete - an autocomplete plugin for sublimetext3.
No license
- editorconfig-core-c - EditorConfig core library written in C (foruse by plugins supporting EditorConfig parsing).
License
- Flycheck - Modern syntax checking for Emacs. For C, it can use eitherGCC or Clang as a back-end.
GPL 3
- AtomLinter/linter-clang - Lint C code in Atom, using Clang.
No license
- hebaishi/linter-gcc - Lint C code in Atom, using GCC.
MIT
- Neomake - 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 commonsnippets.
EPLA
- YouCompleteMe - Code completion engine for Vim.
GPL 3
Utilities
^
Utilities
- Artistic Style - Fast and small automatic source code formatter thatsupports C.
MIT
- biicode - Dependency manager.
MIT
- ryanmjacobs/c - Compile and execute C "scripts" in one go on thecommand line. Also has shebang support.
MIT
- libav/c99-to-c89 - Tool to convert C99 code to MSVC-compatible C89.
Apache 2
- RhysU/c99sh - Run C files using hash-bang.
BSD 2-Clause
- aquynh/capstone - Dissasembly/disassembler framework.
BSD 3-clause
- ccache - Compiler cache designed to speed up recompilation.
GPL 3
- cdecl - Online service to translate C declarations into English andvice versa. [
Public domain
] - cinclude2dot - Graphs include dependencies in a project usingGraphviz.
GPL
- jbremer/darm - A light-weight and efficient disassembler written inC for the ARMv7 instruction set.
BSD 3-Clause
- jacob-carlborg/dstep - A tool for converting C and Objective-Cheaders to D modules.
Boost
- anael-seghezzi/CToy - Interactive C coding environment.
License
- distcc - Program that allows builds to be distributed among severalmachines.
GPL 3
- GNU Global - Source code tagging tool.
GPL 3
- GPP - General-purpose preprocessor. More versatile than the Cpreprocessor, but more flexible than m4.
LGPL 3
- Highlight - Converts source code to formatted text withhighlighting.
GPL 3
- include-what-you-use - Helps find unecessary inclusions and makesuggestions for fixing them. Based on LLVM/Clang (and only works with it).
License
- GNU indent - Formats C source code automatically to make it easierto read. Also converts from one style of source to another.
GPL 3
- m-schmoock/lcpp - A Lua C PreProcessor.
MIT
- mcpp - Portable C preprocessor.
2-clause BSD
- jimenezrick/patch-AuthenticAMD - Utility for patching binariesgenerated by the Intel Compiler to get the maximum performance on AMD CPUs.
GPL 3
- radare2 - unix-like reverse engineering framework and commandlinetools security.
LGPL 3
- buserror/simavr - simavr is a lean, mean and hackable AVR simulatorfor linux & OSX.
GPL 3
- SMACK - Modular software verification toolchain and aself-contained software verifier. Currently only works with programs compiledusing Clang.
License
- sickill/stderred - stderr in red.
License
- ggreer/the_silver_searcher - A code-searching tool similar to ack,but faster.
Apache 2
- unifdef - Removes #ifdef and #if directives with their delimitedtext without touching any other part of the file.
Licenses
Books
^
Books
- C in a Nushell 2E - Concise reference book for C11.
- C Pocket Reference - Concise reference book for C99.
- C: A Reference Manual 5E - Full reference book for C99.
- SEI CERT C Coding Standard - Coding recommendations from CERT.
- The C Programming Language 2E - Original book on C, by its creators.
- C Primer Plus 6E - Complete tutorial on programming in C11.
- C Programming: A Modern Approach - Book to learn the basics of C.
- Head First C - 'Head-first' style book for learning C.
- The GNU C Programming Tutorial - Beware, GNU C is not standard C. (PDF)
- 21st Century C - Programming book on C that touches tooling subject.
- Understanding and Using C Pointers - In-depth book on pointers in C.
- Algorithms in C, Parts 1-4: Fundamentals, Data Structures, Sorting, Searching
- C Interfaces and Implementations: Techniques for Creating Reusable Software
- The Standard C Library
- Let Us C
- C Programming FAQs: Frequently Asked Questions
- OpenGL SuperBible
- OpenGL Insights
- Effective C: An Introduction to Professional C Programming
- Expert C Programming: Deep C Secrets - Interesting, in-depth andentertaining look at the innards of C.
- Pointers on C
- The C Puzzle Book
Benchmarks
^
Benchmarks
- Benchmarks of the Lockless Memory Allocator
- Comparison of C/POSIX standard library implementations for Linux - Abit outdated, but shows overall tendencies
- Finding the best 64-bit simulation PRNG
- rxin/db-benchmarks - Collection of some database benchmarks, alongwith tools to parallelize the data generation.
Beginner Level
^
Beginner Level
Intermediate Level
^
Intermediate Level
- A comprehensive MPI tutorial resource
- Diving into concurrency: trying out mutexes and atomics
- Generic C reference counting
- How to write portable C without complicating your build
- Scalable C - Writing Large-Scale Distributed C
- 8 gdb tricks you should know
- 10 C99 tricks
- Introduction to OpenMP (video)
- OpenMP tutorial
- memcpy vs memmove
- MPI tutorial
- Some unknown features or tricks in C language
- The lost art of C structure packing
- What a C programmer should know about memory
- What every C programmer should know about undefined behaviour
- arjun024/hide-data-in-ptr - how to hide data inside pointers
- OpenGL Book
- Autotools Tutorial (PDF)
- C FAQ - comp.lang.c Frequently Asked Questions
- Akagi201/learning-cmake - CMake examples
- Let's build a database
- nikhilm/uvbook - An Introduction to libuv
- The ``Clockwise/Spiral Rule''
Advanced Level
^
Advanced Level
- Advanced metaprogramming in C
- Quick tutorial on implementing and debugging malloc, free, calloc, and realloc
- Bit twiddling hacks
- I do not know C
- Implementing smart pointers for the C programming language
- Inline functions in C
- Metaprogramming custom control structures in C
- Some dark corners of C (Presentation)
- Writing efficient C and C code optimization
- What every programmer should know about memory (PDF)
- Learn libuv
- Let's build a compiler
- Write a compiler
Operating Systems
^
Operating Systems
- Plan 9 - OS from Bell Labs.
- ChibiOS - RTOS with development environment.
- EtchedPixels/FUZIX - Superior rehaul of UZI.
- Harvey-OS/harvey - An OS based on Plan 9.
- SilverRainZ/OS67 - An Unix-like toy kernel.
- RIOT-OS/RIOT - OS for IoT.
- arjun024/mkernel - Very basic kernel.
- Stichting-MINIX-Research-Foundation/minix - MINIX3.
- guilleiguaran/xv6 - Mirror for Xv6 operating system.
- raphydaphy/Q-Operating-System - Ambitious and abandoned OS designedfor 64-bit CPUs.
- seL4/seL4 - Microkernel aimed to be secure and correct.
- klange/toaruos - Desktop OS with userspace, written from scratch.
- nickbjohnson4224/rhombus - OS with libc and some drivers ready.
- rswier/swieros - Kernel, compiler and userland.
- jbangert/trapcc - Example of using Intel instruction executiongimick.
- mbedmicro/mbed - OS for ARM Cortex-M.
Emulators, VMs
^
Emulators, VMs
- CTurt/Cinoop - Multiplatform Game Boy emulator.
- LIJI32/SameBoy - Game Boy and Game Boy Color emulator written in C.
- MoarVM - A VM with adaptive optimization and JIT compilation, builtfor Rakudo Perl 6.
- felixangell/mac - Virtual machine in c.
- jakogut/tinyvm - TinyVM is a small, fast, lightweight virtualmachine written in pure ANSI C.
- rsms/sol - A sunny little virtual machine.
- mgba - mGBA Game Boy Advance Emulator.
- tekknolagi/carp - Well documented VM written from scratch.
- reicast/reicast-emulator - Multiplatform Sega Dreamcast emulator.
- haldean/x6502 - 6502 emulator that one day dreams of being anAtari 2600.
- n64dev/cen64 - Cycle-Accurate Nintendo 64 Emulator.
- wkoszek/cpu60 - Example of CPU simulation in software.
- swetland/dcpu16 - Virtual Machine and Assembler for Notch's DCPU-16Architecture.
- AlexAltea/orbital - PS4 emulator.
- superzazu/8080 - Intel 8080 emulator.
UI, Windowing, Graphics
^
UI, Windowing, Graphics
- LemonBoy/bar - A featherweight bar based on xcb.
- HarveyHunt/howm - A lightweight, X11 tiling window manager thatbehaves like vim.
- chneukirchen/cwm - portable version of OpenBSD's cwm(1) windowmanager.
- mil/foo-wm - A minimal window manager that organizes windows in atree data structure, provides a socket to send commands to, and nothing more.
- pyknite/catwm - catwm is a very simple tiling window manager.
- jordansissel/xdotool - fake keyboard/mouse input, window management,and more.
- muennich/sxiv - Simple X Image Viewer.
- island-org/island - Lightweight and low-level creative codingtoolkits in C.
- robm/dzen - Dzen is a general purpose messaging, notification andmenuing program for X11.
- McNopper/OpenGL - OpenGL 3 and 4 with GLSL.
- superjer/tinyc.games - Tiny C games you can compile and run.
- DanteFalzone0/physics - An simple, interactive physics simulation.
Language Implementations
^
Language Implementations
- Fedjmike/mini-c - Dr Strangehack, or: how to write a self-hosting Ccompiler in 10 hours.
- HuoLanguage/huo - Interpreted language written in C.
- Wilfred/babyc - A toy C compiler.
- dimkr/szl - A lightweight, embeddable scripting language.
- espruino/Espruino - The Espruino JavaScript interpreter.
- fabianishere/brainfuck - Brainfuck interpreter written in C.
- feeley/gambit - Gambit is an efficient implementation of the Schemeprogramming language.
- wren-lang/wren - The Wren Programming Language.
- cksystemsteaching/selfie - An educational software system of a tinyself-compiling C compiler, a tiny self-executing RISC-V emulator, and a tinyself-hosting RISC-V hypervisor.
- darius/ichbins - A tiny self-hosting Lisp-to-C compiler.
- fragglet/yoctolisp - Tiny Scheme-like Lisp interpreter written ina weekend.
- marcobambini/gravity - Gravity Programming Language.
- justinmeza/lci - A LOLCODE interpreter written in C.
- mruby/mruby - Lightweight Ruby.
- stevedekorte/io - Io programming language.
- philburk/pforth - Portable Forth in C.
- carld/micro-lisp - A very small Lisp programming language that usedto be under 200 lines of C.
- kevinlawler/kona - Open-source implementation of the K programminglanguage.
- ndreynolds/flathead - A toy JavaScript interpreter written in C.
- bl0ckeduser/new-bpf-tools - Subset-of-C compiler targeting 32-bitx86.
- intellectualheaven/ceed - A tiny x86 compiler with ELF and PEtarget.
- janet-lang/janet - A dynamic language and bytecode vm.
- jnz/q3vm - Q3VM - Embeddable bytecode virtual machine/interpreterfor C-language input.
- tj/luna - luna programming language - a small, elegant VMimplemented in C.
- rui314/minilisp - A readable lisp in less than 1k lines of C.
- rebol/rebol - Source code for the Rebol interpreter.
- mortdeus/legacy-cc - The earliest versions of the very first ccompiler known to exist in the wild written by the late legend himself dmr.
- paladin-t/my_basic - Lightweight BASIC interpreter written instandard C in dual files. Aimed to be embeddable, extendable and portable.
- pikelang/Pike - Pike is a dynamic programming language with asyntax similar to Java and C. It is simple to learn, does not require longcompilation passes and has powerful built-in data types allowing simple andreally fast data manipulation.
- riolet/rix - Rix language combines the power of C language and theconvenience of a high level language.
- lotabout/write-a-C-interpreter - Write a simple interpreter of C.Inspired by c4 and largely based on it.
- nickdesaulniers/bf_interpreter_jit_compiler - Teach myself aboutinterpreters, JITs, and compilers using the Brainfuck language as the toylanguage.
- skx/simple.vm - Simple virtual machine which inteprets bytecode.
Challenges
^
Challenges
- trailofbits/cb-multios - DARPA Challenges Sets for Linux, Windows,and macOS.
- FreddieV4/DailyProgrammerChallenges - External Repo of Challengesfrom r/dailyprogrammer.
- Coderbyte challenges
- Project Euler
- HackerRank
- CodeChef
- CodeWars
- Codingame
- /r/DailyProgrammer
- leetcode
- eatnumber1/goal - g()()()()('al') → "gooooal"
Other Examples
^
Other Examples
- MinhasKamal/CreepyCodeCollection - A Nonsense Collection ofDisgusting Codes.
- Visgean/Zeus - Zeus trojan horse - leaked in 2011.
- andreafabrizi/prism - PRISM is an user space stealth reverse shellbackdoor, written in pure C.
- brenns10/lsh - Simple shell implementation.
- jeff-1amstudios/restful-doom - HTTP+JSON API hosted inside the 1993DOOM engine!
- chelyaev/ffmpeg-tutorial - A set of tutorials that demonstrates howto write a video player based on FFmpeg.
- rcr/rirc - A terminal IRC client in C.
- xoreaxeaxeax/movfuscator - The single instruction C compiler.
- deadbits/InsecureProgramming - Mirror of insecure programmingexamples.
- irssi/irssi - The client of the future.
- xorg62/tty-clock - Clock using lib ncurses.
- vanhauser-thc/thc-hydra - Hydra.
- posva/catimg - Fast image printing in your terminal.
- pkieltyka/stash - Steganography application that hides data withina bitmap image.
- regehr/ub-canaries - Collection of C/C++ programs that try to getcompilers to exploit undefined behavior.
- tnightingale/DTE - Dumb Terminal Emulator - Data Comm, COMP 3980.
AI
^
AI
Neural nets, machine learning, pattern recognition etc.
- cjac/cmusphinx - CMU Sphinx - Speech Recognition Toolkit.
Licenses
- 100/Cranium - A portable, header-only, artificial neural networklibrary written in C99.
MIT
- pjreddie/darknet - Convolutional Neural Networks.
License
- TheWeatherChannel/dClass - Device Classification Engine.
Apache 2
- 2hanson/DecisionTree - Decision Tree.
MIT
- yusugomori/DeepLearning - Deep Learning (several languages, Cincluded).
MIT
- encog/encog-c - C implementation of Encog - machine learningframework for Java/C#.
No license
- codeplea/genann - simple neural network library in ANSI C.
Zlib
- attractivechaos/kann - Two-file ANN library.
MIT
- Blei-Lab/lda-c - This is a C implementation of variational EM forlatent Dirichlet allocation (LDA), a topic model for text or other discretedata.
LGPL 2.1
- jppbsi/LibDEEP - Deep learning library.
No license
- H2CO3/libsprec - C library for speech recognition using the GoogleSpeech API.
License
- robwhess/opensift - Open-Source SIFT Library.
License
- dake/openVP - Voice Print Recognition in C language.
No license
- cmusphinx/pocketsphinx - Lightweight speech recognition engine,specifically tuned for handheld and mobile devices, though it works equallywell on the desktop.
BSD 2-Clause
- HIPS/Probabilistic-Backpropagation - Implementation in C and Theanoof the method Probabilistic Backpropagation for scalable Bayesian inference indeep neural networks.
BSD 3-Clause
- GHamrouni/Recommender - A C library for productrecommendations/suggestions using collaborative filtering (CF).
BSD 2-Clause
- ufoym/recursive-bf - A lightweight library for recursive bilateralfiltering.
MIT
- xiph/rnnoise - Recurrent neural network for audio noise reduction.
License
- antirez/shapeme - Evolve images using simulated annealing.
BSD 2-Clause
- symisc/sod - An Embedded Computer Vision & Machine Learning Library(CPU Optimized & IoT Capable).
GPL 3
- iunderstand/SWE - Learning Semantic Word Embeddings based onOrdinal Knowledge Constraints.
Apache 2
- glouw/tinn - The tiny neural network library.
MIT
- canyalniz/CNN-Inference-Didactic - A readable CNN Inferenceimplementation in C.
GPL 3
Algoritm Implementations
^
Algoritm Implementations
Some generic agoritms or ones with no specific attachments.
- dhuertas/AES - AES algorithm implementation in C.
No license
- mischasan/aho-corasick - A-C implementation in "C". Tight-packed(interleaved) state-transition matrix.
LGPL 3
- davidreynolds/algorithms - A repository of assorted algorithms anddata structures.
No license
- BigZaphod/AStar - C Implementation of the A* Pathfinding Algorithm.
License
- citiususc/BigBWA - Approaching the Burrows-Wheeler Aligner to BigData Technologies.
GPL 3
- TheAlgorithms/C - All Algorithms implemented in C
No license
- chaoslawful/ccard-lib - C library for estimating cardinality instreams for which it is infeasible to store all events in memory.
No license
- agl/curve25519-donna - Implementations of a fast Elliptic-curveDiffie-Hellman primitive.
License
- aimxhaisse/des - C implementation of DES.
License
- tarequeh/DES - Implementation of Data Encryption Standard in C.
MIT
- blynn/dlx - Implementation of Knuth's Algorithm X, with examplesolvers.
GPL 3
- oap/ekf-angles - Extended Kalman Filter for Accelerometer and Gyrodata.
No license
- Cyan4973/FiniteStateEntropy - Finite State Entropy and Huff0.
BSD 2-Clause
- BlackLight/fkmeans - A tiny library in C for managing kmeansclusterization algorithm over arbitrary data sets, both by manually specifyingthe number k of clusters and computing it automatically using Schwarzcriterion.
GPL 3
- kljensen/Gemoda - A generic motif discovery algorithm forsequential data.
GPL 2
- lacker/ikalman - An iPhone-friendly Kalman filter written in C.
MIT
- tsuraan/Jerasure - C Implementation of Reed-Solomon coding.
License
- jmcejuela/Levenshtein-MySQL-UDF - General Levenshtein algorithm andk-bounded levenshtein distance in linear time and constant space.
LGPL 3
- CVLearner/Mixture-of-Gaussians - Fit a Gaussian mixture model givena set of data.
MIT
- richarddurbin/pbwt - Implementation of Positional Burrows-WheelerTransform for genetic data.
License
- ntamas/plfit - Fitting power-law distributions to empirical data,according to the method of Clauset, Shalizi and Newman.
License
- Kevincav/Radix-Sort - Radix Sort with different data types.
MIT
- duckythescientist/obfuscatedLife - Conway's Game of Life in 9 linesof C.
No license
- kokke/tiny-AES-c - Small portable AES128/192/256 in C.
Unlicense
- kroitor/gjk.c - Gilbert-Johnson-Keerthi (GJK) collision detectionalgorithm in 200 lines of clean plain C.
WTFPL
- ai-ku/scode - Sphere embedding (s-code) is a variation of Euclideanembedding of co-occurence data (code).
MIT
- swenson/sort - Collection of sorting routines, which type-specializeat compile-time with a user-defined type.
MIT
- msteinbeck/tinyspline - ANSI C library for NURBS, B-Splines, andBézier curves with interfaces for C++, C#, D, Java, Lua, Octave, PHP, Python,R, and Ruby.
MIT
- ferreiradaselva/uastar - Minimal A* implementation.
Zlib
- madler/crcany - CRC calculation library.
Zlib
Argument Parsing
^
Argument Parsing
- cofyc/argparse - Command-line arguments parsing library.
MIT
- clibs/commander - Commander option parser ported to C - simple API,auto-generated --help.
MIT
- docopt/docopt.c - Implementation of a command-line option parser.
MIT
- clibs/flag - Go-style flag parsing for C.
MIT
- jibsen/parg - A single-file reimplementation of getopt with betterdefaults.
License
Calculations and Math
^
Calculations and Math
- b-k/apophenia - Library for statistical and scientific computing.
GPL 2
- fredrik-johansson/arb - Library for arbitrary-precision intervalarithmetic.
LGPL 2.1
- ATLAS - Automatically Tuned Linear Algebra Software.
License
- BLAS - Basic Linear Algebra Subprograms; a set of routines thatprovide vector and matrix operations.
License
- Lichtso/CCWT - Complex Continuous Wavelet Transformation.
MIT
- CDFLIB - Library with routines to evaluate cumulative densityfunctions for a variety of standard probability distributions.Also can compute one parameter of the CDF given the others.
No license
- ScientificC/cmathl - Pure-C Math library with a great variety ofmathematical functions and CMake build support. Seeks to be close to C89/C90compliant for portability.
MIT
- Cuba - Library for multidimensional numerical integration.
LGPL
- adis300/fft-c - A high-performance Fourier Transform from netlib'sfftpack; wrapped in a user-friendly format.
MIT
- FFTW - The Fastest Fourier Transform in the West; ahighly-optimized fast Fourier transform routine.
GPL 2
- FLINT - Fast Library for Number Theory; a library supportingarithmetic with numbers, polynomials, power series and matrices, among others.
LGPL 2.1
- gjrand - Library of random-number generation routines.
GPL 2
- GLPK - GNU Linear Programming Kit; a package designed for solvinglarge-scale linear programming, mixed integer programming and other relatedproblems.
GPL 3
- GMP - GNU Multple Precision Arithmetic Library; a library forarbitrary-precision arithmetic.
Licenses
- GNU MPC - Library for complex number arithmetic.
LGPL 3
- GNU MPFR - Library for arbitrary-precision floating-pointarithmetic.
LGPL 3
- GNU MPRIA - Portable mathematics library for multi-precisionrational interval arithmetic.
GPL 3
- GSL - The GNU Scientific Library; a sophisticated numericallibrary.
GPL3
- HdrHistogram/HdrHistogram_c - C port of the HdrHistogram.
License
- igraph- Library for creating and manipulating large graphs.
GPL2
- KISS FFT - Very simple fast Fourier transform library.
BSD
- LAPACKE - C interface to LAPACK.
License
- PARI/GP - Computer algebra system for number theory; includes acompiler to C.
GLP
- PETSc - Suite of data structures and routines for scalable parallelsolution of scientific applications modelled by partial differentialequations.
License
- PROB - Library that handles various discrete and continuousprobability density functions.
LGPL 3
- PetteriAimonen/libfixmatrix - C library for fixed point matrix,quaternion and vector calculations.
MIT
- canonizer/libgpuvm - library which simplifies host-GPU datatransfer using userspace pagefault handling.
No license
- libtom/libtommath - LibTomMath is a free open source portablenumber theoretic multiple-precision integer library written entirely in C.
Unlicense
- JuliaMath/openlibm - High quality system independent, portable,open source libm implementation.
License
- imneme/pcg-c - PCG — C Implementation.
Apache 2
- imneme/pcg-c-basic - PCG — Minimal C Implementation.
Apache 2
- libtom/tomsfastmath - TomsFastMath is a fast public domain, opensource, large integer arithmetic library written in portable ISO C.
Licenses
- cvxgrp/scs - C package that solves convex cone problems viaoperator splitting.
MIT
- SLEPc - Library for the solution of large, sparse eigenvalueproblems on parallel computers.
BSD 2-Clause
- slim-curve/slim-curve - SLIM Curve: a package for exponential curvefitting of combined spectral lifetime image data.
GPL 3
- tinyexpr - Tiny recursive-descent parser, compiler and evaluationengine for simple mathematical expressions.
Zlib
- Yeppp! - Very fast, SIMD-optimized mathematical library.
License
- PetteriAimonen/libfixmath - Cross Platform Fixed Point MathsLibrary.
MIT
- datenwolf/linmath.h - Linear math as required for computer graphics.
WTFPL
Compression
^
Compression
- Blosc/bcolz - Fast, multi-threaded, meta-compressor library.
Licenses
- kiyo-masui/bitshuffle - Filter for improving compression of typedbinary data.
License
- google/brotli - Generic lossless compression algorithm based onLZ77, Huffman coding and 2nd order context modelling.
MIT
- bzip2 - Patent-free, high-quality data compression library.
BSD 4-Clause
- Blosc/c-blosc - A blocking, shuffling and loss-less compressionlibrary that can be faster than memcpy().
Licenses
- clzip - C lzip implementation.
GPL 2
- richox/comprox - An experimental lossless data compression programwith high compression ratio.
BSD 3-Clause
- RoaringBitmap/CRoaring - Roaring bitmaps in C (and C++).
Apache 2
- adnanozsoy/CUDA_Compression - A GPU-based LZSS compressionalgorithm, highly tuned for NVIDIA GPGPUs and for streaming data, leveragingthe respective strengths of CPUs and GPUs together.
Apache 2
- centaurean/density - Superfast compression library.
BSD 3-Clause
- gildor2/fast_zlib - Improved zlib, which runs 2 to 10 times faster.
BSD 3-Clause
- Cyan4973/FiniteStateEntropy - Two efficient compression codecsoptimized for modern CPUs.
BSD 2-Clause
- rjsikarwar/gpu_compression - Nine Light weight Schemes to Compressand Decompress the data of Database Using GPU and also a planer.
No license
- atomicobject/heatshrink - data compression library forembedded/real-time systems.
ISC
- adamierymenko/huffandpuff - Minimal Huffman encoder and decoder.
Public domain
- libarchive/libarchive - Multi-format archive and compressionlibrary.
Licenses
- nih-at/libzip - A C library for reading, creating, and modifyingzip archives.
BSD 3-Clause
- inikep/lizard - Formerly LZ5. Achieves compression ratioscomparable with zip and zlib at decompression speeds of 1000MB/s and faster.
Licenses
- lz4/lz4 - Extremely Fast Compression algorithm.
Licenses
- lzo - Very fast data compression library.
GPL 2
- richgel999/miniz - Single C source file zlib-replacement library.
License
- moinakg/pcompress - A Parallelized Data Deduplicationand Compression utility.
LGPL 3
- vasi/pixz - Parallel, indexed xz compressor.
BSD 2-Clause
- mist64/pucrunch - pucrunch, an Optimizing Hybrid LZ77 RLE DataCompression Program for C64/C128/VIC-20/Plus4.
LGPL 2.1
- quicklz - Fast compression library.
Licenses
- Ed-von-Schleck/shoco - Compressor for small text strings.
MIT
- lemire/simdcomp - Simple library for compressing lists of integersusing binary packing. Makes use of SIMD instructions on x86.
BSD 3-Clause
- antirez/smaz - Small strings compression library.
BSD 3-Clause
- andikleen/snappy-c - C port of the snappy compressor.
License
- quixdb/squash - Compression abstraction library, complete withutilities.
MIT
- powturbo/TurboPFor - Fast integer compression.
GPL 2
- powturbo/TurboRLE - Fastest Run Length Encoding.
GPL 2
- kuba--/zip - A portable, simple zip library written in C.
Unlicense
- madler/zlib - Massively-spiffy yet delicately-unobtrusivecompression library.
Zlib
- zlib-ng/zlib-ng - zlib replacement with optimizations for"next generation" systems.
Zlib
- facebook/zstd - Fast real-time compression algorithm.
BSD 3-Clause
- jsvennevid/filearchive - File archive library allowing for easycreation and access to data stored inside a container through a simple API.
MIT
- ariya/FastLZ - Byte-aligned LZ77 compression.
License
Concurrency and Parallelism
^
Concurrency and Parallelism
- yosefk/checkedthreads - A simple library for parallelism, withbuilt-in checking for race conditions.
BSD 2-Clause
- FCFS RWLock - First-come first-served Readers/Writers lock for POSIXthreads.
Licenses
- sharow/libconcurrent - Concurrent programming library, usingcoroutines, for C11.
Zlib
- liburcu - Data synchronization library, which scales linearly withthe number of cores.
LGPL 2.1
- cchan - Small library for channel constructs for inter-threadcommunication.
Public Domain
- pmodels/mpich - Another implementation of MPI.
License
- open-mpi/ompi - Message passing interface implementation.
License
- GNU pth - Portable implementation for non-preemptive priority-basedscheduling for multiple threads of execution.
LGPL 2.1
- POSIX threads - The POSIX thread library.
No license
- tinycthread/tinycthread - Portable, small implementation of the C11threads API.
License
- Pithikos/C-Thread-Pool - A minimal but powerful thread pool inANSI C.
MIT
- baruch/libwire - User space threading (aka coroutines) library forC resembling GoLang and goroutines.
MIT
- bjoernknafla/amp - C portable low-level assemblies for parallelismand threading.
BSD 3-Clause
- bjoernknafla/peak - Parallelism exploration assembly kit. C toolkitto experiment with task- and data-parallelism.
BSD 3-Clause
- cloudwu/coroutine - A asymmetric coroutine library for C.
MIT
- concurrencykit/ck - Concurrency primitives, safe memory reclamationmechanisms and non-blocking (including lock-free) data structures designed toaid in the research, design and implementation of high performance concurrentsystems developed in C99+.
Licenses
- etmc/lemon - Lemon is an MPI parallel I/O library that is intendedto allow for efficient parallel I/O of both binary and metadata on massivelyparallel architectures. Data is stored in the SciDAC Lattice QCD InterchangeMessage Encapsulation format, that allows for storing large blocks of binarydata and corresponding metadata in the same file.
GPL 3
- geertj/cgreenlet - Coroutines for C/C++.
MIT
- halayli/lthread - lthread, a multicore enabled coroutine librarywritten in C.
BSD 2-Clause
- hnes/libaco - A blazing fast and lightweight C asymmetric coroutinelibrary.
Apache 2
- jtsiomb/c11threads - Trivial C11 threads.h implementation overPOSIX threads.
Public domain
- matianfu/FUNK - a c continuation library inspired by Adam Dunkel'sProtoThread.
Apache 2
- mbrossard/threadpool - A simple C Thread pool implementation.
BSD 2-Clause
- oneoo/alilua-coevent-module - epoll base coroutine module.
MIT
- ramonza/libcoro - Lightweight C coroutines.
BSD 2-Clause
- sustrik/libdill - Structured concurrency in C.
MIT
- sustrik/libmill - Go-style concurrency in C.
MIT
- stevedekorte/coroutine - C multiplatform coroutine implementationvia ucontext, fibers or setjmp.
No license
- parallella/pal - An optimized C library for math, parallelprocessing and data movement.
Apache 2
- danluu/setjmp-longjmp-ucontext-snippets - Implementing coroutines,channels, message passing, etc.
Apache 2
- Precisamento/cpthreads - Cross Platform (e.g. Windows) supportfor C11 threads.
MIT
- shiyanhui/libcsp - Concurrency C library influenced by the CSPmodel.
MIT
Cryptography
^
Cryptography
- GNU SASL - Implementation of the Simple Authentication and SecurityLayer and few common SASL mechanisms.
Licenses
- aidansteele/sphlib - Set of implementations of various hashfunctions, including several cryptographic ones.
MIT
- GnuTLS - Secure communication library, implementing SSL, TLS andDTLS.
LGPL 2.1
- libgcrypt - General-purpose cryptography library, with a range ofavailable ciphers.
Licenses
- OpenSSL - Implementation of the SSL and TLS protocols, and alsoincludes a cryptography library.
Licenses
- jedisct1/libsodium - A modern, portable and easy to use cryptolibrary.
ISC
- ARMmbed/mbedtls - An open source, portable, easy to use, readableand flexible SSL library.
License
- B-Con/crypto-algorithms - Basic implementations of standardcryptography algorithms, like AES and SHA-1.
No license
- WickrInc/wickr-crypto-c - An implementation of the Wickr SecureMessaging Protocol in C.
License
- ashwinraghav/Parallel_Open_SSL - Use your idle GPU to encrypt yourdata. Give your CPU some breathing time!
Licenses
- awslabs/s2n - s2n : an implementation of the TLS/SSL protocols.
Apache 2
- bitcoin-core/secp256k1 - Optimized C library for EC operations oncurve secp256k1.
MIT
- cloudflare/keyless - CloudFlare's Keyless SSL Server ReferenceImplementation.
Agreement
- ctz/cifra - A collection of cryptographic primitives targeted atembedded use.
License
- cyassl/cyassl - Small, fast, portable implementation of TLS/SSL forembedded devices to the cloud.
GPL 2
- eduardsui/tlse - Single C file TLS 1.2/1.3 implementation, usingtomcrypt as crypto library.
BSD 2-Clause
- h2o/picotls - TLS 1.3 implementation in C (master supports RFC8446as well as draft-26, -27, -28).
License
- jedisct1/libhydrogen - A lightweight, secure, easy-to-use cryptolibrary suitable for constrained environments.
ISC
- libressl-portable/openbsd - LibreSSL source code.
Licenses
- libtom/libtomcrypt - LibTomCrypt is a fairly comprehensive, modularand portable cryptographic toolkit that provides developers with a vast arrayof well known published block ciphers, one-way hash functions, chaining modes,pseudo-random number generators, public key cryptography and a plethora ofother routines.
Licenses
- maciejczyzewski/retter - A collection of hash functions, ciphers,tools, libraries, and materials related to cryptography.
No license
- mikeryan/crackle - Crack and decrypt BLE encryption.
BSD 2-Clause
- open-quantum-safe/liboqs - C library for quantum-resistantcryptographic algorithms.
MIT
- tbuktu/libntru - C Implementation of NTRUEncrypt.
Licenses
- trezor/trezor-crypto - Heavily optimized cryptographyalgorithms for embedded devices.
MIT
- droe/sslsplit - Transparent SSL/TLS interception.
BSD 2-Clause
- orlp/ed25519 - Portable C implementation of Ed25519, a high-speedhigh-security public-key signature system.
Zlib
- wolfSSL/wolfssl - wolfSSL (formerly CyaSSL) is a small, fast,portable implementation of TLS/SSL for embedded devices to the cloud.
GPL 2
- rg3/bcrypt - bcrypt password hash C library.
License
- LoupVaillant/Monocypher - An easy to use, easy to deploy cryptolibrary.
Licenses
- tombonner/blowfish-api - Blowfish block cipher implementation.
License
Databases
^
Databases
- priitj/whitedb - Lightweight database library, operating entirely inmain memory.
GPL 3
- mongodb/mongo-c-driver - High-performance client library forMongoDB.
Apache 2
- SQLite - Self-contained, serverless, zero-configuration,transactional SQL database engine with a C interface.
Public domain
- symisc/unqlite - Self-contained, serverless, zero-configuration,transactional NoSQL engine with a C interface.
License
- Akash91/CoSQL - A Co-Relational Key-Value Data Store.
No license
- GNOME/libgda - Libgda is a (relatively small) database accesslibrary.
GPL 2
- Softmotions/ejdb - EJDB — Embeddable JSON Database engine.
MIT
- aerospike/aerospike-client-c - Aerospike C Client.
License
- bcmpinc/dagdb - small database for storing semi-structured data.
GPL 3
- maciejczyzewski/hashbase - A fast, efficient on-disk/in-memorydatabase with many different kind of data structures.
MIT
- maxmind/libmaxminddb - C library for the MaxMind DB file format.
Apache 2
- pmwkaa/sophia - modern emeddable key-value database.
License
- redis/hiredis - Minimalistic C client for Redis.
BSD 3-Clause
- seppo0010/rlite - self-contained, serverless, zero-configuration,transactional redis-compatible database engine. rlite is to Redis what SQLiteis to SQL.
BSD 2-Clause
- sqlcipher/sqlcipher - SQLCipher is an SQLite extension thatprovides 256 bit AES encryption of database files.
License
- tglman/orientdb-c - The C client of OrientDB.
No license
- spotify/sparkey - Simple constant key/value storage library, forread-heavy systems with infrequent large bulk inserts.
Apache 2
- vrogier/ocilib - Open source C and C++ library for accessingOracle databases.
Apache 2
- symisc/vedis - An Embedded Implementation of Redis.
License
- orca-zhang/influxdb-c - C write client for InfluxDB.
MIT
- t3rm1n4l/lightkv - Key-value data storage.
No license
Data Structures and Types
^
Data Structures and Types
- recp/ds - Common Data Structures and Algorithms.
MIT
- P-p-H-d/mlib - Library for generic, but typesafe C containers.Implemented as header-only.
BSD 2-Clause
- libsrt - Soft and hard real-time data structures.
BSD 3-Clause
- nbulischeck/list.h - Implementations for single- and double-linkedlist functions.
GPL 3
- gpakosz/PackedArray - Random-access array of tightly packed unsignedintegers of any desired width. Has a SIMD-optimized implementation.
WTFPL
- swenson/vector.h - Header library for typed lists.
MIT
- 20centaurifux/datatypes - A collection of various datatypes in C(linked lists, stack, queue, red-black tree and hash table).
GPL 3
- ClickerMonkey/CDSL - A data structure library written in C.
License
- Incarnation-p-lee/libds - Unified data structure implementationlibrary of C.
GPL 2
- LPD-EPFL/ASCYLIB - Concurrent-search data-structure library withover 30 implementantions of linked lists, hash tables, skip lists, and binarysearch trees.
GPL 2
- MichaelJWelsh/cdsa - A library of generic intrusive data structuresand algorithms in ANSI C.
ISC
- ZSShen/C-Common-Data-Structures - Uniform C APIs for data structuremanipulation.
No license
- agl/critbit - Critbit trees in C.
No license
- antirez/rax - A radix tree implementation in ANSI C.
BSD 2-Clause
- armon/libart - Adaptive Radix Trees implemented in C.
BSD 3-Clause
- ashinkarov/trie - Simple implementation of trie data structure.
License
- bcopeland/em_misc - External memory data structure playground.
No license
- begeekmyfriend/bplustree - A minimal but extreme fast B+ treeindexing structure demo for billions of key-value storage.
MIT
- chrismoos/hash-ring - C hash ring library.
Apache 2
- chriso/bitset - A compressed bitset with supporting data structuresand algorithms.
LGPL
- codeprepper/data-structures - Arrays, linked lists, stacks andqueues.
MIT
- dminor/skip-quadtree - Implementation of the skip quadtree andcompressed quadtree data structures.
License
- douglascrockford/DEC64 - Decimal floating point.
No license
- fmela/libdict - C library of key-value data structures with anobject-oriented interface.
BSD 2-Clause
- fragglet/c-algorithms - A library of common data structures andalgorithms written in C.
ISC
- gnudennis/ds_c - Data Structure In C.
No license
- graphitemaster/libintrusive - Intrusive data structures for C.
Unlicense
- grundprinzip/bitcompressedvector - Provide a container for integraldata types that applies light-weight bit compression.
License
- hacatu/haclib - A utility library providing data types C shouldhave been made with such as vectors and sequences, mostly as macros.
MPL 2
- hyPiRion/c-rrb - RRB-tree implemented as a library in C.
MIT
- hyPiRion/roulette-tree - Data structure for efficientfitness-proportionate selection.
MIT
- jarun/dslib - A library of handy data structures.
GPL 3
- johnj/llds - Low-Level Data Structure - efficient data structures,and fast data access in the 2.6/3.0 kernel.
License
- jtsiomb/kdtree - A simple C library for working with KD-Trees.
License
- jvirkki/libbloom - A simple and small bloom filter implementationin plain C.
BSD 2-Clause
- ksheedlo/kmdata - Data structures for C programmers, byC programmers.
No license
- louiswins/RB-Tree - An implementation of the Red-Black Tree datastructure.
No license
- livioso/datastructures-in-C - Implementation of a some datastructures in C for educational purposes.
No license
- malbrain/Btree-source-code - A working project for High-concurrencyB-tree source code in C.
License
- michaeltyson/TPCircularBuffer - A simple, fast circular bufferimplementation.
License
- mikedlowis/data-structures - A collection of data structuresimplemented in C to be included in multiple projects.
BSD 2-Clause
- naraing/dsLib - An algorithm library with core data-sttructures andcommon algortihm implementations on those data structures.
GPL 3
- noporpoise/BitArray - C bit array structs and methods.
License
- orangejulius/cs_fundamentals - simple implementations of commondata structures/algorithms.
GPL 3
- paulasmuth/libsmatrix - thread-safe sparse matrix data structure.
MIT
- pcdavid/data-structures - Sample implementations of classical datastructures in C.
WTFPL
- petewarden/c_hashmap - A simple string hashmap in C.
Public domain
- rxi/map - A type-safe hash map implementation for C.
MIT
- rxi/vec - A type-safe dynamic array implementation for C.
MIT
- siganakis/tny - Tiny data structures that pack a punch!
License
- srdja/Collections-C - A library of generic data structures.
LGPL 3
- steven-schronk/C-Data-Structures - Collection of basic datastructures in C.
GPL 3
- wasabiz/xrope - rope data structure.
No license
- torch/tds - Torch C data structures.
License
- watmough/jwHash - Simple hash table implementation for C.
Apache 2
- zhemao/libds - Simple, memory-safe data-structures in C.
MIT
- willemt/cbuffer - A circular buffer written in C using Posix callsto create a contiguously mapped memory space.
License
- xant/libhl - Simple and fast C library implementing a thread-safeAPI to manage hash-tables, linked lists, lock-free ring buffers and queues.
LGPL 3
- yuyuyu101/C-Buffered-tree - A buffered-tree implemented indictionary type and more.
MIT
- MagerValp/AsmHeap - Heap data structure in 6502 assembler.
No license
- Snaipe/libcsptr - Smart pointers in C.
MIT
- C-Macro-Collections - Generate simple and generic data structuresusing macros.
MIT
- troydhanson/uthash - C macros for hash tables and more.
License
- begeekmyfriend/CuckooFilter - Substitute for bloom filter.
License
- bitly/dablooms - Scaling, counting, bloom filter library.
MIT
- krglaws/KyleStructs - Simple data structures written foreducational purposes.
No license
- armon/c-minheap-array - Implements a Min-Heap / Priority Queuein C using a simple array.
BSD 3-Clause
- jstimpfle/rb3ptr - Red-black tree in C.
License
Events
^
Events
- libev - Yet another event loop.
BSD 2-Clause
- libevent - Event loop replacement for network servers.
BSD 3-Clause
- Lupus/libevfibers - Small C fiber library that uses libev based event loop and libcoro based coroutine context switching.
Apache 2
- facebook/libphenom - An eventing framework for building high performance and high scalability systems in C.
Apache 2
- libuv/libuv - Cross-platform asychronous I/O.
Licenses
- ithewei/libhv - Event-loop with non-blocking IO and timer.
BSD 3-Clause
Foreign Function Interfaces
^
Foreign Function Interfaces
- GNU Libffcall - Collection of libraries for building foreignfunction interfaces.
GPL 3
- dyncall - Another foreign function interface library.
License
- atgreen/libffi - A portable foreign-function interface library.
License
- dyu/ffi-overhead - comparing the c ffi overhead on variousprogramming languages.
Apache 2
- jmckaskill/luaffi - Standalone FFI library for calling C functionsfrom lua. Compatible with the luajit FFI interface.
License
- taviso/ctypes.sh - A foreign function interface for bash.
MIT
Libraries for working with specific filetypes or classes of filetypes.
╠════ Binaries
^
Binaries
- bfd - Library for manipulating binary object files. Part of GNUbinutils.
Licenses
- 0intro/libelf - Simple library for parsing ELF files.
MIT
- fuzxxl/memf - Portable scanf/printf-like functions to marshalbinary data.
BSD 2-Clause
- nicklockwood/FastCoding - A faster and more flexible binary fileformat replacement for NSCoding, Property Lists and JSON.
License
- abiggerhammer/hammer - Parser combinators for binary formats.
GPL 2
╠════ CSV
^
CSV
- rgamble/libcsv - Simple, streaming CSV parser.
LGPL 2.1
- tadasv/csv_parser - Callback based (SAX like) CSV Parser for C.
MIT
╠════ HTML
^
HTML
- lexborisov/Modest - Modest is a fast HTML renderer implemented as apure C99 library with no outside dependencies.
LGPL 2.1
- lexborisov/myhtml - Fast C/C++ HTML 5 Parser. Using threads.
LGPL 2.1
- htacg/tidy-html5 - The granddaddy of HTML tools, with support formodern standards.
License
- google/gumbo-parser - HTML5 parsing library in C99.
Apache 2
╠════ JSON
^
JSON
- NeonMercury/jfes - JSON For Embedded Systems; simple JSON enginewithout any dependencies.
MIT
- zserge/jsmn - Minimalistic JSON parser.
MIT
- netmail-open/wjelement - Advanced JSON manipulation library, withsupport for JSON Schema.
Licenses
- DaveGamble/cJSON - Ultralightweight JSON parser in ANSI C.
MIT
- akheron/jansson - C library for encoding, decoding and manipulatingJSON data.
MIT
- armink/struct2json - A fast convert library between the JSON and Cstructure. Implement structure serialization and deserialization for C.
MIT
- cesanta/frozen - JSON parser and generator for C/C++ withscanf/printf like interface. Targeting embedded systems.
Apache 2
- cloudflare/lua-resty-json - JSON library for Lua and C.
BSD 2-Clause
- json-c/json-c - Official code repository for json-c.
License
- keenerd/jshon - JSON parser designed for maximum convenience withinthe shell.
MIT
- kgabis/parson - Lightweight JSON library written in C.
MIT
- kevinbirch/kanabo - Query JSON/YAML data with JSONPath.
License
- lloyd/yajl - A fast streaming JSON parsing library in C.
ISC
- orangeduck/json2c - Convert JSON to C data literals.
BSD 3-Clause
- quartzjer/js0n - Flexible Zero-Footprint JSON Parser in C.
Unlicense
- sheredom/json.h - JSON parser for C and C++.
Unlicense
- vincenthz/libjson - JSON parser and printer library in C. Easy tointegrate with any model.
License
- udp/json-parser - Very low footprint JSON parser written inportable ANSI.
License
- garnetius/jsong - Faster than light streaming JSON & USON parserand writer with rich and trivial to use API plus SSE optimizations.
BSD 2-Clause
- recp/json - Parses JSON files into DOM-like data structures.
MIT
- mjansson/json - Single header JSON/SJSON parser.
Unlicense
╠════ INI
^
INI
- ndevilla/iniparser - Parser for .ini files.
MIT
- madmurphy/libconfini - Yet another INI parser.
GPL 3
- benhoyt/inih - Simple .INI file parser in C, good for embeddedsystems.
License
- LloydLabs/librini - Tiny, non-libc dependant, .ini file parserprogrammed from scratch in C99.
MIT
- compuphase/minIni - A small and portable INI file library withread/write support.
Apache 2
╠════ Markdown
^
Markdown
- hoedown/hoedown - Fully standards-compliant, extension-supporting,UTF-8 aware, fast Markdown parser.
ISC
- commonmark/cmark - Library for parsing the CommonMark dialect ofMarkdown.
License
- Orc/discount- My C implementation of John Gruber's Markdown markuplanguage.
License
- commonsguy/cwac-anddown - CWAC AndDown: Markdown Utility Library.
Apache 2
- fletcher/MultiMarkdown-6 - Lightweight markup processor to produceHTML, LaTeX, and more.
License
- jgm/peg-markdown - An implementation of markdown in C, using aPEG grammar.
Licenses
- vmg/sundown - Standards compliant, fast, secure markdown processinglibrary in C.
License
╠════ XML
^
XML
- libexpat/libexpat - Stream-oriented XML parser.
License
- libxml2 - Standards-compliant, portable XML parser.
MIT
- michaelrsweet/mxml - Small XML reading and writing library.No dependencies aside from C standard library.
Apache 2
- ooxi/xml.c - Simple XML subset parser comparable to glib's Markupparser.
License
- bakulf/libmrss - C library for parsing, writing and creating RSSfiles or streams.
LGPL 2.1
- mmuszkow/librss - RSS and ATOM parsing library.
No license
- bakulf/libnxml - Library for parsing, writing and creating XML 1.0and 1.1 documents.
LGPL 2.1
- anton/rss_aggregator - Feed reader lib written in C with use oflibxml2 and utlist.
No license
╚════ Other Filetypes
^
Other Filetypes
- yaml/libyaml - Canonical source repository for LibYAML.
MIT
- mongodb/libbson - BSON utility library.
Apache 2
- martinh/libconfuse - Small configuration file parser library.
ISC
- vstakhov/libucl - Universal configuration library parser.
BSD 2-Clause
- Juniper/libxo - Allows an application to generate plain text, XML,JSON and HTML output using a common set of function calls. The applicationdecides at runtime what output style should be produced.
BSD 2-Clause
- brechtsanders/xlsxio - Cross-platform library for reading andwriting .xlsx files.
MIT
- arrbee/diff-match-patch-c - C language port ofgoogle-diff-match-patch library.
License
- hyperrealm/libconfig - C/C++ library for processing configurationfiles.
LGPL 2.1
- jedwing/CHMLib - Library for reading Microsoft ITSS/CHM formatfiles.
LGPL 2.1
- jmcnamara/libxlsxwriter - A C library for creatingExcel XLSX files.
License
- libharu/libharu - Free PDF library.
Zlib
- samtools/htslib - C library for high-throughput sequencing dataformats.
License
- vmg/houdini - API for escaping text for the web.
MIT
- trumpowen/MegaMimes - A C mime type library
MIT
Flow Control and Language Extension
^
Flow Control and Language Extension
- orangeduck/Cello - Library introducing higher-levelprogramming to C.
BSD 2-Clause
- Ragel - DSL for state machines that compiles to C.
License
- kitsune-dsu/kitsune-core - Efficient, general-purpose framework fordynamic software updating.
License
- P99 - Suite of macros to implement advanced features like defaultfunction arguments, scope-bound resources, etc.
License
- CObjectSystem/COS - C Object System.
Apache 2
- H2CO3/Sparkling - Lightweight extension language.
BSD 2-Clause
- lua/lua - Embeddable scripting programming language.
License
- Zeex/subhook - Simple hooking library for C/C++(x86 only, 32/64-bit, no dependencies).
BSD 2-Clause
- arnaudbrejeon/cspec - Behavior driven development in C.
GPL 3
- comex/substitute - A free runtime modification library.
License
- elua/elua - Highly portable version of Lua.
License
- eudoxia0/magma - Extending C with cmacro.
License
- graphitemaster/lambdapp - Anonymous functions in C.
Unlicense
- guillermocalvo/exceptions4c - Exception handling framework for C.
LGPL 3
- orangeduck/LuaAutoC - Automagically use C Functions and Structswith the Lua API.
License
- pfultz2/Cloak - A mini-preprocessor library to demostrate therecursive capabilites of the preprocessor.
Boost
- skeeto/interactive-c-demo - Demonstration of interactiveC programming.
Unlicense
- symisc/PH7 - An Embedded Implementation of PHP (C Library).
License
- yasm/yasm - Provides libyasm - embeddable YASM engine.
License
- zserge/partcl - Micro Tcl implementation.
MIT
- cesanta/mjs - Embedded JavaScript engine for C/C++.
License
- graphitemaster/incbin - Include binary files in C/C++.
Unlicense
- pkrumins/bithacks.h - bithacks.h is a C header file containinguseful bit manipulation macros.
MIT
- breckinloggins/ngtemplate - A template engine written in C designedto be syntax-compatible with Google CTemplate.
MIT
- ccxvii/mujs - An embeddable Javascript interpreter in C.
ISC
- Microsoft/checkedc - Extension to C that adds checking to detect orprevent common programming errors such as buffer overruns and out-of-boundsmemory accesses.
MIT
- hexspeakerg/ONLY_ONCE - ONLY_ONCE macro makes it so that the blockof code is only run once across threads.
MIT
- SanderMertens/flecs - An Entity Component System with a dashboard.
MIT
- akeep/scheme-to-c - A small nanopass compiler from a subset ofScheme to C.
MIT
- takanuva/ANSI-ISO-C-Exception-Handling - Exceptions in C.
LGPL 3
- small-c/obj.h - A single-header support for OOP in pure C.
MIT
- Hirrolot/poica - Features of modern programming languages in plainC11 implemented via macro system.
MIT
Engines, libraries and other helpful things specifically for making games.
╠════ Game Engines
^
Game Engines
- xonotic/darkplaces - Modified version of the Quake2 engine.
GPL 2
- ioquake/ioq3 - The Quake3 engine, freed at last.
GPL 2
- orx/orx - Portable, lightweight, plugin-based, data-driven,2D-oriented game engine.
License
- zturtleman/spearmint - Engine designed for FPS games.
GPL 3
- Gigoteur/UnicornConsole - Unicorn Console: create quick game!
MIT
- MarilynDafa/Bulllord-Engine - lightspeed lightweight elegant gameengine in pure c.
MIT
- HerculesWS/Hercules - Creation of a robust massively multiplayeronline role playing game (MMORPG) server package.
GPL 3
- Olde-Skuul/doom3do - The complete archive for DOOM for the 3DO.
MIT
- RandyGaul/AsciiEngine - Game engine written in C to create Asciiart games within the Windows console.
MIT
- littlewolf - The tiny software graphics and game engine.
MIT
- eduard-permyakov/permafrost-engine - An OpenGL 3.3 RTS game enginewritten in C.
GPL 3
- ejoy/ejoy2d - A 2D Graphics Engine for Mobile Game.
MIT
- etlegacy/etlegacy - ET: Legacy is based on the source code of theWolfenstein: Enemy Territory which was released under the GPLv3 license.
GPL 3
- fabiensanglard/chocolate_duke3D - chocolate Duke Nukem 3D.
License
- a-nikolaev/curseofwar - A Real Time Strategy game for Linux.
GPL 3
- chocolate-doom/chocolate-doom - Chocolate Doom is a Doom sourceport that is minimalist and historically accurate.
GPL 2
- cxong/cdogs-sdl - Classic overhead run-and-gun game.
GPL 2
- fogleman/Craft - A simple Minecraft clone written in C using modernOpenGL (shaders).
MIT
- id-Software/DOOM - DOOM Open Source Release.
License
- id-Software/Quake-2 - Quake 2 GPL Source Release.
GPL 2
- id-Software/Quake-III-Arena - Quake III Arena GPL Source Release.
GPL 2
- id-Software/Quake - Quake GPL Source Release.
GPL 2
- keendreams/keen - Keen Dreams on Greenlight!
GPL 2
- linleyh/liberation-circuit - Trapped in a hostile computer system,you must make a way out - RTS/coding game.
GPL 3
- martincohen/Punity - A tiny game engine in C.
MIT
- orangeduck/Corange - Pure C Game Engine.
License
- naev/naev - Naev is a 2d action/rpg space game that combineselements from the action, rpg and simulation genres.
GPL 3
- nikki93/cgame - some ideas involving games and C.
No license
- scottcgi/Mojoc - A cross-platform, open-source, pure C game enginefor mobile game.
MIT
- septag/darkhammer - darkHAMMER is a lightweight, open-source,multiplatform game engine. written in C (C99) language, supports pythonand C# bindings and lua scripts.
License
- taylor001/crown - The flexible game engine.
MIT
- theunamedguy/market-sim - A retro stock-trading game utilizinglive market data.
GPL 2
- tpoindex/crobots - CROBOTS is a programming game, for programmers(or aspiring programmers).
GPL 2
- andwn/cave-story-md - A fan port of Cave Story for theSega Mega Drive.
License
- angband/angband - A free, single-player roguelike dungeonexploration game.
License
- nesbox/tic.computer - Public TIC-80 issues tracker.
MIT
- cschied/q2vkpt - Real-time path tracer VKPT integrated into q2proQuake 2 client.
GPL 2
- ec-/Quake3e - Improved Quake III Arena engine.
GPL 2
- skullernet/q2pro - Enhanced Quake 2 client and server focused onmultiplayer.
GPL 2
- jdolan/quake2 - Classic Quake II for Mac and Linux.
GPL 2
- nothings/obbg - Block/voxel-based game.
Public domain
- bvschaik/julius - An open source re-implementation of Caesar III.
AGPL 3
- simple2d/simple2d - Simple, open-source 2D graphics for everyone.
MIT
- exezin/exengine - A C99 3D game engine.
MIT
- NightDiveStudios/shockmac - System Shock (PowerMac version OfficialGPL Release).
GPL 3
- blinry/gish - Open Source version of the award-winning physicsplatformer.
Licenses
- ambethia/aposelene - Experimental 2D Engine in C.
MIT
- klaussilveira/qengine - Retro game engine for developers that enjoycreating games like it's 1997.
GPL 2
- sebbekarlsson/coelum - Game engine for 2d and 3d written in C.
GPL 3
- bjornbytes/lovr - Virtual Reality Engine.
MIT
- EvilPudding/candle - Game engine based on GLEW and SDL.
MIT
- zauonlok/renderer - Shader-based software renderer in C89 withminimal dependencies.
MIT
- cdev-tux/q3lite - Quake 3 engine rendered in OpenGL ES.
GPL 3
- kondrak/vkQuake2 - Vulkan Quake 2 implementation.
LGPL 2
╠════ Graphics Rendering
^
Graphics Rendering
Everything related to video rendering only. Also visitawesome-opengl andawesome-vulkan.
- grimfang4/sdl-gpu - Library for high-performance, modern 2Dgraphics. Based on SDL.
MIT
- dcnieho/FreeGLUT - Alternative to the OpenGL Utility Toolkit. Allowsthe creation and management of windows with OpenGL contexts.
License
- MauriceGit/Cloth_Simulation - Cloth-Visualization viaparticle-simulation.
ISC
- MauriceGit/Partikel_accelleration_on_GPU - Particle accellerationwith OpenGL 4.3, using the compute shader to calculate particle movement ongraphics hardware.
ISC
- ands/lightmapper - A C/C++ single-file library for drop-in lightmapbaking. Just use your existing OpenGL renderer to bounce light!
Public domain
- ands/seamoptimizer - A C/C++ single-file library that minimizes thehard transition errors of disjoint edges in lightmaps.
Public domain
- ebassi/graphene - A thin layer of graphic data types.
MIT
- cacalabs/libcaca - ASCII renderer for terminal-based interfaces.
WTFPL
- OpenGL - Industry adopted 2D and 3D graphics API.
Graphics API
- OpenGL ES - Industry adopted 2D and 3D graphics API for mobile andembedded devices.
Graphics API
- OpenGL SC - Graphic and compute standard for industry requiringsystem safety certification.
Graphics API
- Vulkan - Explicit graphic and compute API for modern cross-platformdevelopment.
Graphics API
- Cairo -2D graphics library.
Licenses
- Cogl - GPU graphics and utilities API.
License
- glfw/glfw - A multi-platform library for OpenGL, OpenGL ES, Vulkan,window and input.
Zlib
- nigels-com/glew - The OpenGL Extension Wrangler Library.
License
- anoek/ex-sdl-cairo-freetype-harfbuzz - Example code which uses SDL,cairo, freetype, and harfbuzz to do ttf/otf text layout and rendering.
No license
- ashima/webgl-noise - Procedural Noise Shader Routines compatiblewith WebGL.
MIT
- grz0zrg/fbg - Lightweight C 2D graphics API agnostic library withparallelism support.
BSD 3-Clause
- ileben/ShivaVG - OpenGL based ANSI C implementation of the OpenVGstandard.
LGPL 2.1
- jpbruyere/vkvg - Vulkan vector drawing, try to stay close tocairo api.
MIT
- memononen/nanovg - Antialiased 2D vector drawing library on top ofOpenGL for UI and visualizations.
Zlib
- micahpearlman/MonkVG - OpenVG 1.1 like vector graphics APIimplementation optimized for game use currently using an OpenGL ES backendthat should be compatible with any HW that supports OpenGL ES 2.0 whichincludes most iOS and Android devices.
License
- minusinf/opengl_dataviewer - A simple OpenGL xyzw dataviewer.
GPL 3
- rougier/freetype-gl - OpenGL text using one vertex buffer, onetexture and FreeType.
License
- simple2d/simple2d - Simple, open-source 2D graphics for everyone.
MIT
- jakogut/tinyflock - A simple, high-performance, threaded, andinteractive flocking demo written in C with GLFW.
No license
- anholt/libepoxy - Library for handling OpenGL function pointermanagement.
License
- felselva/gfw - Pure C Minimal Graphics Framework (OpenGL).
Zlib
- karimnaaji/voxelizer - Header only mesh voxelizer in c99.
MIT
- kbernholm/leloup - All the C functions needed for drawingsolid 3D vector graphics.
MIT
- dr-soft/glbind - Single file OpenGL API loader.
Licenses
- dr-soft/vkbind - Single file Vulkan API loader.
Licenses
- dr-soft/minidraw - Single file 2D graphics library written in C.
Licenses
- glouw/gel - N64-like software renderer.
MIT
╚════ Gamedev Helping Libraries
^
Gamedev Helping Libraries
- sigil - Sound, Input and Graphics Integration Library; a simplealternative to other libraries for doing all those things. Various licenses,all open source.
Licenses
- SFML/CSFML - Binding for SFML in C.
License
- SDL - Cross-platform development library designed to providelow-level access to audio, keyboard, mouse, joystick and graphics hardware viaOpenGL. SDL2 is the most current version.
Zlib
- HBehrens/obj2opengl - script to convert 3D models of OBJ files toC/C++ float arrays (vertices, faces, texture) compatible with OpenGL ESglDrawArrays compatible with iPhone/iPad.
GPL 3
- Kazade/kazmath - A C math library targeted at games.
BSD 2-Clause
- R4stl1n/cAudio - 3D Audio Engine Based on Openal.
Zlib
- Tangent128/luasdl2 - A pure C binding of SDL 2.0 for Lua 5.1,Lua 5.2, and LuaJIT.
ISC
- ccore/ccore_rewrite - A cross platform low level game developmentlibrary.
BSD 3-Clause
- cloudwu/skynet - A lightweight online game framework.
MIT
- felselva/mathc - Pure C math library for 2D and 3D programming.
Zlib
- gabomdq/SDL_GameControllerDB - A community sourced database of gamecontroller mappings to be used with SDL2 Game Controller functionality.
License
- geon/gloss - A bidirectional path tracer written in C.
MIT
- jarikomppa/soloud - Free, easy, portable audio engine for games.
License
- liballeg/allegro5 - The official Allegro 5 git repository.
License
- recp/cglm - Highly Optimized Graphics Math (glm) for C.
MIT
- raysan5/raylib - A simple and easy-to-use library to enjoyvideogames programming.
Zlib
- rxi/lovedos - A framework for making 2D DOS games in Lua.
MIT
- slembcke/Chipmunk2D - A fast and lightweight 2D game physicslibrary.
MIT
- shaunlebron/blinky - Exploring peripheral vision in games(using Quake).
MIT
- nem0/OpenFBX - Lightweight open source FBX importer.
MIT
- librg/librg - Library for building simple and elegantcross-platform mmo client-server solutions.
Apache 2
- Srekel/phyxed-2d - 2d physics engine with fixed-point support.
Licenses
- recp/AssetKit - 3D asset importer/exporter/util library based onCOLLADA/glTF specs.
MIT
- olofson/audiality2 - A realtime scripted modular audio engine forvideo games and musical applications.
Zlib
- dr-soft/miniobj - Simple library for loading OBJ mesh files.
Public Domain
- dr-soft/mintaro - Framework for making simple, retro style games.
Public Domain
- SasLuca/rayfork - raylib fork introducing some changes.
No license
- jkuhlmann/cgltf - Single-file glTF 2.0 loader/writer in C99.
MIT
Geography
^
Geography
Geodata, street maps, navigation and so on
- Unidata/gempak - Analysis, display, and product generation packagefor meteorological data.
BSD 3-Clause
- evanmiller/ProjCL - Crazy-fast map projections and geodesiccalculations.
License
- olofsj/GLMap - An OpenGL ES 2.0 renderer for Openstreetmap data.
LGPL 3
- olofsj/Whichway - C library for flexible (bike, foot, car) routingin road networks from Openstreetmap data.
No license
- maxmind/geoip-api-c - GeoIP Legacy C API.
License
- navit-gps/navit - The open source (GPL v2) turn-by-turn navigationsoftware for many OS.
License
- lionsoul2014/ip2region - Offline IP location library with accuracyrate of 99.9% and 0.0x millseconds searching performance. DB file is less then5Mb with all ip address stored. binding for Java, PHP, C, Python, Nodejs,Golang, C#, lua. Binary, B-tree, Memory searching algorithm.
Apache 2
- openvenues/libpostal - A C library for parsing/normalizing streetaddresses around the world. Powered by statistical NLP and open geo data.
MIT
- propublica/simple-tiles - Simple tile generation for maps.
MIT
- simplegeo/libgeohash - A pure C implementation of the Geohashalgorithm.
BSD 3-Clause
- kosma/minmea - Lightweight GPS NMEA 0183 parser library in pure C.
WTFPL
- geocommons/geocoder - Modular Street Address Geocoder.
LGPL 3
- bauerca/gridfloat - Slice and dice USGS elevation data from thecommand line.
MIT
GUI
^
GUI
- tinyfiledialogs - Single-file library for simple dialogs. Compatiblewith many other toolkits and OSes.
Zlib
- vurtun/nuklear - A single-header ANSI C gui library.
Licenses
- andlabs/libui - Simple and portable (but not inflexible) GUI libraryin C that uses the native GUI technologies of each platform it supports.
License
- lc-soft/LCUI - A small C library for building user interfaces withC, XML and CSS.
MIT
- littlevgl/lvgl - Graphics library to create an embedded GUI witheasy-to-use graphical elements, beautiful visual effects and low memoryfootprint. It offers anti-aliasing, opacity, and animations using only oneframe buffer.
MIT
- ocornut/imgui_club - Nice things to use along dear imgui.
No license
- GTK+ - Cross-platform widget toolkit.
License
- IUP - Another cross-platform widget toolkit.
License
- Tk - Basic widget toolkit. Part of Tcl/Tk.
License
- XForms Toolkit - Widget toolkit designed for the XWindow system.
LGPL 2.1
- Clutter - UI library based on OpenGL.
LGPL 2.1
- randrew/layout - Single-file library for calculating 2D UI layoutsusing stacking boxes. Compiles as C99 or C++.
License
- cimgui/cimgui - c-api for imgui.
MIT
- elvismt/slope - A library to create charts from raw data usingcairo. Can be shown in GtkDrawingArea
LGPL 3
- DeXP/nuklear_cross - Nuklear+ (read as "Nuklear cross") is afront-end overlay for Nuklear GUI library.
Licenses
- xkbcommon/libxkbcommon - Keymap handling library for toolkits andwindow systems.
License
- raysan5/raygui - Immediate GUI library from raylib author.
Zlib
- rxi/microui - Immediate-mode UI ANSI C library.
MIT
- VincentWei/minigui - Crossplatform windowing and GUI librarytargeted for embed usage.
GPL 3
- achimdoebler/UGUI - Graphic library for embedded systems.
License
Hardware Oriented
^
Hardware Oriented
- obgm/libcoap - Implementation of the Constrained ApplicationProtocol.
License
- Genymobile/scrcpy - Display and control your Android device.
Apache 2
- Azure/azure-iot-sdk-c - A C99 SDK for connecting devices toMicrosoft Azure IoT services.
MIT
- FoxelSA/libfastcal - Fast calibration data access.
AGPL 3
- Stephane-D/SGDK - SGDK: A small, open and free development kit forthe Sega Megadrive.
MIT
- andygock/avr-uart - AVR UART C Library.
License
- anrieff/libcpuid - a small C library for x86 CPU detection andfeature extraction.
BSD 2-Clause
- coocox/cox - CoX is an peripherals library with a unified standardinterface specially for ARM Cortex M.
BSD 3-Clause
- edorfaus/TEMPered - C library and program for reading the TEMPerfamily of thermometer and hygrometer devices.
BSD 2-Clause
- google/cpu_features - A cross platform C99 library to get cpufeatures at runtime.
Apache 2
- jackmitch/libsoc - C library for interfacing with common SoCperipherals through generic kernel interfaces.
LGPL 2.1
- joan2937/pigpio - C library for the Raspberry which allows controlof the General Purpose Input Outputs (GPIO).
Unlicense
- libimobiledevice/libimobiledevice - A cross-platform protocollibrary to communicate with iOS devices.
LGPL 2.1
- libopencm3/libopencm3 - Open Source ARM cortex m microcontrollerlibrary.
GPL 3
- libusb/libusb - A cross-platform library to access USB devices.
LGPL 2.1
- micronucleus/micronucleus - ATTiny usb bootloader with a strongemphasis on bootloader compactness.
License
- nfc-tools/libnfc - Platform independent Near Field Communicationlibrary.
LGPL 3
- signal11/hidapi - A Simple library for communicating with USB andBluetooth HID devices on Linux, Mac, and Windows.
Licenses
- wiiudev/libwiiu - Build system and examples for running C codeon the Wii U.
No license
- floooh/chips - 8-bit chip and system emulators in standaloneC headers.
Zlib
- rofl0r/endianness.h - Endianness detection and conversion.
Licenses
Hashing
^
Hashing
Hash function implementations for non-cryptographic purposes.
- centaurean/spookyhash - Fast hash function.
BSD 3-Clause
- leo-yuriev/t1ha - Fast Positive Hash - a portable, fast hashfunction.
BSD 3-Clause
- Cyan4973/xxHash - Extremely fast non-cryptographic hash algorithm.
BSD 2-Clause
- PeterScott/murmur3 - Murmur3 hash in C.
Public domain
- RJ/ketama - C library for consistent hashing, and langauge bindings.
BSD 2-Clause
- cr-marcstevens/sha1collisiondetection - Library and command linetool to detect SHA-1 collision in a file.
MIT
- clibs/hash - C hash implementation based on khash.
MIT
- lemire/clhash - C library implementing fast CLHash function.
Apache 2
- mattsta/crcspeed - This make CRC be fast. Included implementations:CRC-64-Jones and CRC-16-CCITT.
BSD 3-Clause
- plashchynski/str2hex - Data formats convertion utility.
Apache 2
- tzvetkoff/hashids.c - Port of the Hashids library.
MIT
Image Processing and Computer Vision
^
Image Processing and Computer Vision
- libgd/libgd - Library for the dynamic creation of images byprogrammers.
License
- giflib - Library for reading and writing gif images.
License
- libjpeg-turbo/libjpeg-turbo - Faster library for reading andwriting JPEG files.
Licenses
- libpng - The official PNG reference library.
License
- liuliu/ccv - C-based/Cached/Core Computer Vision Library, A ModernComputer Vision Library.
License
- Phildo/pixQL - SQL for image processing.
No license
- XadillaX/byakuren - A theme color extracting library.
MIT
- ansilove/ansilove - ANSi / ASCII art to PNG converter.
BSD 2-Clause
- bluesmoon/pngtocss - Read in a gradient from a png file and spitout CSS for it.
BSD
- brendangregg/Dump2PNG - Visualize file data as a PNG.
License
- buaazp/zimg - A lightweight and high performance image storage andprocessing system.
BSD 3-Clause
- dbohdan/s2png - Store data of any kind inside PNG images.
GPL 2
- ginsweater/gif-h - Simple C++ one-header library for the creationof animated GIFs from image data.
Unlicense
- libvips/libvips - A fast image processing library with low memoryneeds.
LGPL 2.1
- mozilla/mozjpeg - Improved JPEG encoder.
Licenses
- openslide/openslide - C library for reading virtual slide images.
License
- pornel/giflossy - Lossy GIF compressor.
GPL 2
- pornel/pngquant - Lossy PNG compressor.
License
- rflynn/imgmin - Lossy image optimization.
MIT
- uclouvain/openjpeg - Official repository of the OpenJPEG project.
BSD 2-Clause
- vlfeat/vlfeat - An open library of computer vision algorithms.
BSD 2-Clause
- libspng - Secure PNG reading/writing.
BSD 2-Clause
- ImageMagick/ImageMagick - Image processing suite with C interface.
License
- saitoha/libsixel - Library implementing the SIXEL protocol,allowing beautiful graphics in your terminal.
License
- jedisct1/libpuzzle - A library to quickly find visually similarimages.
ISC
- mattes/epeg - Fast JPEG/ JPG thumbnail scaling with the minimumfuss and CPU overhead. It makes use of libjpeg features of being able to loadan image by only decoding the DCT coefficients needed to reconstruct an imageof the size desired.
License
- dr-soft/dr_pcx - Single file PCX image loader.
Public Domain
- cbraudo/qdbmp - Cross-platform C library for handling BMP files.
MIT
- lecram/gifdec - GIF decoder.
Public Domain
- gfxprim/gfxprim - Library for processing and drawing images invariety of formats.
LGPL 2.1
Integrated Debugging and Logging
^
Integrated Debugging and Logging
- gpakosz/whereami - One-file library for locating the currentexecutable on the file system.
MIT
- HardySimpson/zlog - Reliable, pure C logging library.
LGPL 2.1
- esneider/debug - One-header library for easier 'printf debugging'.
MIT
- ThrowTheSwitch/CException - Implementation of exceptions.
License
- google/pblog - Small, low overhead, structured logging libraryintended for logging formware events.
Apache 2
- 0xmalloc/c-log - a fast ,stable and thread-safe log lib(logger)for C/C++ language.
Apache 2
- Celtoys/Remotery - Single C file, Realtime CPU/GPU Profiler withRemote Web Viewer.
Apache 2
- armink/EasyLogger - A ultra-lightweight(ROM<1.6K, RAM<0.3k),high-performance C/C++ log library.
MIT
- cyrus-and/prof - Self-contained C/C++ profiler library for Linux.
License
- facebook/liblogfaf - A library that logs messages usingnon-blocking UDP datagrams.
BSD 3-Clause
- kmcallister/embedded-breakpoints - Embed GDB breakpoints in Csource code.
BSD 3-Clause
- ntpeters/SimpleLogger - Basic logger for C and C++ projects.
MIT
- openjudge/sandbox - Open-source suite of software components forC/C++ and Python developers to create automated profiling tools and watchdogprograms.
BSD 3-Clause
- rxi/log.c - A simple logging library implemented in C99.
MIT
- yosefk/checkedthreads - checkedthreads: no race condition goesunnoticed! Simple API, automatic load balancing, Valgrind-based checking.
BSD 2-Clause
- libFirm - Library that provides a graph-based intermediaterepresentation, optimizations and assembly code generation suitable for use incompilers. Comes with an example C front-end under the same license.
GPL 2
- daddinuz/watchdog - Memory tracer, leaks hunter.
MIT
- okuvshynov/b63 - Lightweight benchmarking tool for C.
Apache 2
- stephenrkell/trap-syscalls - Monitor, rewrite and/or otherwise trapsystem calls.
Licenses
- immunityinc/libptrace - An event driven multi-core processdebugging, tracing, and manipulation framework.
LGPL 2.1
I/O
^
I/O
- Lajnold/falloc - falloc creates files of a user-specified size. Ituses the posix_fallocate syscall for allocating the right size directly,instead of copying data like the commonly used dd tool does.
GPL 3
- cgaebel/pipe - A simple thread-safe FIFO in C.
MIT
- cxong/tinydir - Lightweight, portable and easy to integrate Cdirectory and file reader.
License
- reverbrain/eblob - Eblob is an append-only low-level IO library,which saves data in blob files. Created as low-level backend for elliptics.
LGPL 3
- tronkko/dirent - C/C++ library for retrieving information on filesand directories.
MIT
- jwerle/fs.c - File system API much like Node's fs module.
MIT
- zevv/duc - Library and suite of tools for inspecting disk usage.
LGPL 3
- kwhat/libuiohook - A multi-platform C library to provide globalkeyboard and mouse hooks from userland.
GPL 3
- dr-soft/dr_fs - Single file libraries for working with filesystem.
Public Domain
- mpaland/printf - Standalone printf, sprintf and (v)snprintfimplementation.
MIT
Lexing and Parsing
^
Lexing and Parsing
- GNU Bison - General-purpose parser generator that converts anannotated context-free grammar into a range of parsers.
GPL 3
- bbu/simple-interpreter - A hackable and extensible lexer, parserand interpreter for a minimalistic, imperative, C-like language.
No license
- dcreager/libpush - An arrow-based parser combinator library for C.
BSD 3-Clause
- kmussel/Moment - Natural Language Date Parser Using Lex/Yacc/C.
MIT
- skvadrik/re2c - lexer generator for C/C++.
License
- westes/flex - The Fast Lexical Analyzer - scanner generator forlexing in C and C++.
License
- orangeduck/mpc - Parser combinator library.
BSD 2-Clause
- transceptor-technology/libcleri - Libcleri is a powerful tool tobuild languages. From a built language, libcleri can automatically createparse trees, which are data structures representing how a grammar matchesinput. It also provides feedback in case the input does not match thelanguage. This can be useful for auto-completion, suggestions or errorhandling.
MIT
- dr-soft/url - URL parsing in C.
BSD 2-Clause
Memory Management
^
Memory Management
- Boehm GC - Garbage collection for C. Various licenses, all opensource.
License
- Lockless Memory Allocator - Efficient memory allocator.
GPL 3
- talloc - Hierarchical, reference-counted memory pool system withdestructors.
LGPL 3
- mattconte/tlsf - Two-Level Segregated Fit allocator; ageneral-purpose, dynamic memory allocator designed to meet real-timerequirements.
BSD 3-Clause
- jemalloc/jemalloc - General purpose malloc(3) implementation thatemphasizes fragmentation avoidance and scalable concurrency support, commonlyused in production systems.
License
- dlmalloc - Doug Lea's malloc(3) implementation, useful for academicand research purposes.
Public domain
- CCareaga/heap_allocator - A simple heap memory allocator in~200 lines.
MIT
- ivmai/bdwgc - The Boehm-Demers-Weiser conservative C/C++ GarbageCollector (libgc, bdwgc, boehm-gc).
License
- mulle-nat/mulle-allocator - Flexible C memory allocation schemewith leak checking.
BSD 3-Clause
- munificent/mark-sweep - A simple mark-sweep garbage collector in C.
MIT
- ned14/nedmalloc - Fast portable thread caching mallocimplementation written in C for multiple threads without lock contention basedon dlmalloc. Optimised for x86 and x64. Compatible with C++. Can patch itselfinto existing binaries on Windows.
Boost
- orangeduck/tgc - A Tiny Garbage Collector for C.
BSD 2-Clause
- rampantpixels/rpmalloc - Public domain cross platform lock freethread caching 32-byte aligned memory allocator implemented in C.
License
- stevedekorte/garbagecollector - Incrementall garbage collectorlibrary in C for use by high level language implementions.
BSD 3-Clause
- Simon-Swenson-8351/tralloc - A binary tree based memory allocator.
BSD 3-Clause
- Qqwy/raii_with - A simple library to provide RAII instandard-compliant C99.
MIT
- emeryberger/Malloc-Implementations - A collection of memoryallocators.
No license
- microsoft/mimalloc - Compact general purpose allocator by Microsoft.
MIT
- mjansson/rpmalloc - Cross platform lock free thread caching 16-bytealigned memory allocator.
License
- yvan-sraka/malloc - malloc implementation with reduced dependencies.
GPL 3
- AlxHnr/CRegion - Region-based memory management library.
License
Multimedia
^
Multimedia
Audio and video processing.
- jeremyevans/ape_tag_libs - Library for working with APEv2 tags.
MIT
- lieff/minimp3 - Lightweight MP3 decoder single header library.
License
- FFMPEG - Complete, cross-platform solution to record, convert andstream audio and video.
LGPL 2.1
- GStreamer - Framework for audio and visual media.
LGPL 2
- mpv-player/mpv - Media player MPV with provided library libmpv.Compile with
./waf configure --disable-cplayer --enable-libmpv-shared
tonot have the music player.License
- andrewrk/libsoundio - Library for cross-platform, real-time audioinput and output. Has a range of back-ends.
MIT
- AVbin/AVbin - Thin, cross-platform wrapper around Libav’svideo- and audio-decoding functionality, providing long-term binarycompatibility for applications and languages that need it.
LGPL 3
- PaulBatchelor/Soundpipe - A lightweight music DSP library.
MIT
- Themaister/libfmsynth - A C library which implements an FMsynthesizer.
MIT
- UniversalPrimer/flv-analyzer - Loads an FLV file into sane C datastructures and outputs fields as human readable.
GPL 3
- Vidvox/hap-qt-codec - A QuickTime codec for Hap video.
License
- acrisci/playerctl - mpris command-line controller and library forspotify, vlc, audacious, bmp, cmus, and others.
LGPL 3
- aubio/aubio - a library for audio and music analysis.
GPL 3
- cmatsuoka/libxmp - Libxmp is a library that renders module files toPCM data.
License
- cnlohr/colorchord - Chromatic Sound to Light Conversion System.
BSD 3-Clause
- csound/csound - A sound and music computing system.
LGPL 2.1
- dxjia/ffmpeg-commands-executor-library - execute ffmpeg commandsthrough a jni shared library.
Apache 2
- erikd/libsndfile - A C library for reading and writing sound filescontaining sampled audio data.
LGPL 2.1
- kfish/libfishsound - A simple programming interface for decodingand encoding audio data using Xiph.org codecs (FLAC, Speex and Vorbis).
BSD 3-Clause
- libass/libass - libass is a portable subtitle renderer for theASS/SSA (Advanced Substation Alpha/Substation Alpha) subtitle format.
ISC
- libav/libav - Collection of libraries and tools to processmultimedia content such as audio, video, subtitles and related metadata.
License
- mltframework/mlt - MLT Multimedia Framework.
LGPL 2.1
- sahib/glyr - Glyr is a music related metadata searchengine, bothwith commandline interface and C API.
LGPL 3
- simonyiszk/csdr - A simple DSP library and command-line tool forSoftware Defined Radio.
License
- xiph/flac - Free Lossless Audio Codec.
License
- xiph/opus - Modern audio compression for the internet.
License
- mhroth/tinyosc - A minimal Open Sound Control (OSC) library writtenin vanilla C.
ISC
- libao - Cross-platform audio library with a wide variety ofoutputs.
GPL 2
- libvlc - VLC player library.
Licenses
- raysan5/raudio - A simple and easy-to-use audio library based onminiaudio.
Zlib
- dr-soft/miniaudio - Single file audio playback and capturelibrary written in C.
Licenses
Multiple Purpose Libraries
^
Multiple Purpose Libraries
- parallella/pal - Optimized library for maths, parallel processingand data movement.
Apache 2
- APR - Apache Portable Runtime; another library of cross-platformutility functions.
Apache 2
- GLib - Library of utility functions and structures, designed to beportable, efficient and powerful.
LGPL 2.1
- keybuk/libnih - Lightweight library of C functions and structures.
GPL 2
- wolkykim/qlibc - Simple and powerful C library, designed as areplacement for GLib while focusing on being small and light.
License
- chutsu/cog - C common library containing common data structures,sorting algorithms and utility functions.
MIT
- cs50/libcs50 - CS50 Library for C.
MIT
- dcreager/libcork - A simple, easily embeddable cross-platform Clibrary.
BSD 3-Clause
- faragon/libsrt - C library for writing fast and safe C code,faster. It provides string, vector, bit set, set, map, hash set, and hash maphandling. Suitable for soft and hard real-time. Allows both heap and stackallocation.
BSD 3-Clause
- koanlogic/libu - LibU is a multiplatform utility library written inC, with APIs for handling memory allocation, networking and URI parsing,string manipulation, debugging, and logging in a very compact way, plus manyother miscellaneous tasks.
License
- letoram/arcan - Display Server, Multimedia Framework,Game Engine-> "Desktop Engine".
Licenses
- saprykin/plibsys - Highly portable C system library: threads andsynchronization primitives, sockets (TCP, UDP, SCTP), IPv4 and IPv6, IPC,hash functions (MD5, SHA-1, SHA-2, SHA-3, GOST), binary trees (RB, AVL) andmore. Native code performance.
MIT
- tboox/tbox - A glib-like multi-platform c library.
Apache 2
- zpl-c/zpl - Your C99 Powerkit.
Licenses
- dmw/caffeine - C Application Framework.
LGPL 2.1
- breckinloggins/libuseful - A collection of useful data structures,algorithms, and utilities for C programming.
MIT
- erimatnor/libckit - A kit of C-based utilities and data structures.
Apache 2
- pforemski/libpjf - A C library of data structures with tools(based on libasn).
GPL 3
- stevedekorte/basekit - C based OO portable data structure library.
BSD 3-Clause
- mjansson/foundation_lib - Cross-platform foundation library inC providing basic support data types and functions to write applications andgames in a platform-independent fashion.
Unlicense
- happyfish100/libfastcommon - Functions including: string, logger,chain, hash, socket, ini file reader, base64 encode / decode,url encode / decode, fast timer, skiplist, object pool etc. detail info pleasesee the c header files.
LGPL
- sabit/libcprops - C prototyping tools.
LGPL 2.1
╠════ DNS
^
DNS
- GNU adns - Advanced, easy-to-use, asynch-capable DNS client libraryand utilities.
GPL 3
- ldns - Library to simplify DNS programming.
BSD 3-Clause
- bagder/c-ares - Library for asynchronous DNS requests.
License
- farsightsec/dnstable - encoding format, library, and utilities forpassive DNS data.
Apache 2
- wahern/dns - Single file non-blocking DNS C library withoutcallbacks or external dependencies.
MIT
- libidn - Implementation of the Stringprep, Punycode and IDNAspecifications.
Licenses
- mjansson/mdns - mDNS/DNS-SD library.
Unlicense
╠════ HTTP
^
HTTP
- nodejs/http-parser - HTTP request/response parser for c.
MIT
- h2o/picohttpparser - Tiny HTTP parser.
MIT
- iafonov/multipart-parser-c - Http multipart parser implemented in C.
MIT
- solusipse/ureq - Micro C library for handling HTTP requests on lowresource systems.
MIT
- nghttp2/nghttp2 - HTTP/2 C Library.
MIT
- wg/wrk - Modern HTTP benchmarking tool.
License
^
Mail
- libquickmail - Library intended to give developers a way to sendemail from their applications. Supports multiple To/Cc/Bcc recipients andattachments without size limits.
GPL 3
- dinhviethoa/libetpan - Mail Framework for C Language.
License
- dertuxmalwieder/libvldmail - Your friendly e-mail address validationlibrary.
WTFPL
╠════ Messaging and Brokers
^
Messaging and Brokers
- nanomsg/nng - Lightweight brokerless messaging.
MIT
- alanxz/rabbitmq-c - Client library for RabbitMQ.
License
- antirez/disque - Disque is a distributed message broker.
BSD 3-Clause
- circonus-labs/fq - F@#$*&%Q (Message queue that is fast, brokered,in C and gets out of your way).
MIT
- zeromq/czmq - High-level C binding for ØMQ.
License
- nanomsg/nanomsg - C-based implementation of ZeroMQ.
License
- LiamBindle/MQTT-C - MQTT protocol implementation.
MIT
╠════ Remote Desktops
^
Remote Desktops
- FreeRDP/FreeRDP - FreeRDP is a free remote desktop protocol libraryand clients.
Apache 2
- LibVNC/libvncserver - LibVNCServer/LibVNCClient are cross-platformC libraries that allow you to easily implement VNC server or clientfunctionality in your program.
GPL 2
╠════ RPC
^
RPC
- hmng/jsonrpc-c - JSON-RPC in C.
MIT
- lopter/lightsd - A daemon with a JSON-RPC API to control yourlight bulbs.
GPL 3
- laruence/yar - RPC for C and PHP.
License
- protobuf-c/protobuf-c-rpc - Using protobuf-c for RPC.
License
╠════ TCP, UDP, Sockets
^
TCP, UDP, Sockets
- bovine/datapipe - Network TCP port forwarding.
Public domain
- sch3m4/libntoh - User-friendly C Library to perform TCP streamsreassembly and IPv4/6 defragmentation.
License
- tass-belgium/picotcp - PicoTCP is a free TCP/IP stackimplementation.
Licenses
- opendp/dpdk-odp - Open data plane on dpdk, TCP/IP stack for dpdk.
BSD
- lsalzman/enet - ENet reliable UDP networking library.
MIT
- hoxnox/rawsock_recv_example - SOCK_RAW IPPROTO_UDP socket datatransmission example.
BSD 3-Clause
- silentbicycle/socket99 - C99 wrapper for the BSD sockets API.
ISC
- fastos/fastsocket - Fastsocket is a highly scalable socket and itsunderlying networking implementation of Linux kernel.
GPL 2
- sustrik/msg_control - Helper functions for dealing with socketancillary data.
MIT
╠════ Web Servers
^
Web Servers
- taf2/libebb - Lightweight high-performance HTTP server libraryfor C.
MIT
- libhttpd - Library to add basic web server capabilities to anapplication or embedded device.
LGPL
- libmicrohttpd - Small C library that makes it easy to run an HTTPserver as part of another application.
Licenses
- risoflora/libsagui - Cross-platform C library which helps to developweb servers or frameworks.
LGPL 3
- h2o/h2o - Optimized HTTP/1, HTTP/2 high performance server/library.
MIT
- mongrel2/mongrel2 - The Mongrel2 Web Server Project.
BSD 3-Clause
- shenfeng/tiny-web-server - a tiny web server in C, for daily use.
MIT
- zyearn/zaver - Yet another fast and efficient HTTP server.
MIT
- libsoup - GNOME HTTP client/server library. Uses GObject.
LGPL 2
- criticalstack/libevhtp - Create extremely-fast and secure embeddedHTTP servers with ease.
BSD 3-Clause
- civetweb/civetweb - Embedded C/C++ web server.
Licenses
- lpereira/lwan - Experimental, scalable, high-performance HTTPserver.
GPL 2
- cesanta/mongoose - Embedded web server for C/C++.
License
- oneoo/alilua - epoll/kqueue+lua based web server.
MIT
- haywire/haywire - Haywire is an asynchronous HTTP server frameworkwritten in C that's built using the event loop based libuv platform layer thatnode.js is built on top of.
Apache 2
- davidmoreno/onion - C library to create simple HTTP servers and WebApplications.
Licenses
- wolkykim/libasyncd - Embeddable Event-based AsynchronousMessage/HTTP Server library for C/C++.
BSD 2-Clause
- balde/balde - Microframework for C based on GLib.
LGPL 2.1
- bitly/simplehttp - A family of libraries and daemons for buildingscalable web infrastructure.
MIT
- boazsegev/facil.io - Your high performance web application Cframework.
MIT
- iafonov/cosmonaut - Fast web server & micro framework implementedin C. Just for fun.
MIT
- riolet/WAFer - WAFer is a C language-based software platform forscalable server-side and networking applications. Think node.js for Cprogrammers.
GPL 2
- jeremycw/httpserver.h - Single header library for writingnon-blocking HTTP servers in C.
MIT
- lammertb/libhttp - Crossplatform HTTP and HTTPS library.
MIT
- zhaojh329/libuhttpd - Fully asynchronous HTTP server library basedon libev and http-parser for embedded Linux.
MIT
- silgy/silgy - Multipurpose asynchronous web application backendengine.
MIT
╠════ Web Service APIs
^
Web Service APIs
- sinemetu1/twitc - Mini library for interacting with the TwitterOAuth API.
MIT
- dajobe/flickcurl - Flickr C API library.
GPL 2
- Cotix/cReddit - CLI Reddit client written in C. Includes separatedlibrary.
License
- HalosGhost/shaman - A small, native C library and utility to fetchweather.
GPL 2
- PromyLOPh/pianobar - Console-based pandora.com player.
License
- Yubico/yubico-c-client - Yubico C client library.
BSD 2-Clause
- adobkin/libcapn - A simple C Library for interact with the ApplePush Notification Service (APNs).
MIT
- aws/aws-iot-device-sdk-embedded-C - SDK for connecting to AWS IoTfrom a device using embedded C.
Apache 2
- domsson/libtwirc - Twitch IRC library for Linux.
License
╠════ Websockets
^
Websockets
- tatsuhiro-t/wslay - WebSocket library. Implements version 13 of theWebSocket protocol, as described in RFC 6455.
MIT
- JonnyWhatshisface/libwebsock - Easy-to-use and powerful web socketlibrary.
LGPL 3
- m8rge/cwebsocket - Lightweight websocket server library.
MIT
- zhaojh329/libuwsc - A Lightweight and fully asynchronous WebSocketclient C library based on libubox for Embedded Linux.
LGPL 2.1
- warmcat/libwebsockets - Canonical websocket library.`License
- wbudd/RingSocket - Lockless multi-threaded C11 Linux WebSocketserver.
MIT
- clemenskresser/ezwebsocket - Websocket server library in C.
MIT
╚════ Uncategorized Networking
^
Uncategorized Networking
- libcurl - Client-side URL transfer library, supporting a wide rangeof formats.
License
- oSip - SIP implementation in C without additional dependencies.
LGPL
- rxi/dyad - Asynchronous networking library.
MIT
- 51Degrees/Device-Detection - Device detection forC / PHP / Perl / Python and Node.js - professionally maintained device data.
License
- uriparser/uriparser - Strictly RFC 3986-compliant URI parsing andhandling library.
BSD 3-Clause
- c9s/r3 - High-performance path dispatching library. It compilesyour route paths into a prefix tree (trie). By using the constructed prefixtrie in the start-up time, you may dispatch your routes with efficiency.
MIT
- versatica/OverSIP- OverSIP: the SIP framework you dreamed about.
MIT
- libssh2/libssh2 - the SSH library.
BSD 3-Clause
- rockdaboot/mget - Multithreaded metalink/file/website downloader(like Wget) and C library.
LGPL 3
- seanmiddleditch/libtelnet - Simple RFC-complient TELNETimplementation as a C library.
Public domain
- shadeslayer/libnice - Implementation of the IETF's InteractiveConnectivity Establishment (ICE) standard (RFC 5245) and the Session TraversalUtilities for NAT (STUN) standard (RFC 5389).
Licenses
- udp/lacewing - Cross-platform network I/O library for C/C++.
License
- verse/verse - Network protocol for real-time sharing betweengraphical applications.
Licenses
- the-tcpdump-group/libpcap - the LIBpcap interface to various kernelpacket capture mechanism.
BSD 3-Clause
- the-tcpdump-group/tcpdump - the TCPdump network dissector.
BSD 3-Clause
- luohaha/CSpider - A scalable and convenient crawler framework.
MIT
- nitrogenlogic/cliserver - A sample libevent-based network socketserver that presents a simple command line interface to multiple connectingclients.
BSD 2-Clause
- babelouest/ulfius - Web Framework to build REST APIs, Webservicesor any HTTP endpoint in C language. Can stream large amount of data, integrateJSON data with Jansson, and create websocket services.
LGPL 2.1
- haiwen/ccnet - Ccnet is a framework for writing networkedapplications in C.
GPL 2
- it4e/CHL - C Hypertext Library - A library for writing webapplications in C.
LGPL 3
- jorisvink/kore - An easy to use, scalable and secure webapplication framework for writing web APIs in C.
License
- monkey/duda - Duda I/O is an event-driven and high performant webservices framework which exposes a friendly C API.
Apache 2
- zeromq/zyre - Framework for proximity-based peer-to-peerapplications.
License
- Maxime2/dataparksearch - Open source, feature rich search engine.
License
- kristapsdz/kcgi - Minimal CGI and FastCGI library for C/C++.
ISC
OpenCL
^
OpenCL
OpenCL, CUDA, OpenMP and other similar APIs.
- cf4ocl - The C Framework for OpenCL.
LGPL 3
- clMathLibraries/clRNG - an OpenCL based software library containingrandom number generation functions.
License
- tuxfan/ocl-mla - OpenCL Mid-Level Abstractions.
License
- matze/oclkit - Two-file OpenCL wrapper.
GPL 3
- emrainey/OpenCL-Environment - A series of utilities aimed at makingOpenCL easier to use.
Apache 2
OS Specifics
^
OS Specifics
- symisc/libcox - Library which permits cross-platform system callsand standard utilities across different operating systems.
BSD 2-Clause
- checkpoint-restore/criu - Checkpoint/Restore In Userspace; asoftware tool (with a C API) for 'freezing' a running application to disk,then restoring it. Targeted for Linux.
Licenses
- alsa-lib - Userspace library to interact with ALSA.
LGPL 2.1
- Leandros/WindowsHModular - A modular Windows.h Header.
License
- a0rtega/pafish - Pafish is a demonstration tool that employs severaltechniques to detect sandboxes and analysis environments in the same way asmalware families do.
GPL 3
- antirez/linenoise - A small self-contained alternative to readlineand libedit.
BSD 2-Clause
- fancycode/MemoryModule - Library to load a DLL from memory.
License
- jimon/osx_app_in_plain_c - A simple showcase how to create a simpleOS X app in plain C without any Objective-C.
No license
- rvoicilas/inotify-tools - Library and a set of command-lineprograms for Linux providing a simple interface to inotify.
GPL 2
- tinyalsa/tinyalsa - Tiny library to interface with ALSA in theLinux kernel.
BSD 3-Clause
- wengkai/ACLLib - A bunch of C functions covers Win32API andprovides simpler API to beginners for programming Windows GUI applications.
GPL 3
- zardus/preeny - Some helpful preload libraries for pwning stuff.
BSD 2-Clause
Procedural Generation
^
Procedural Generation
- prideout/heman - Tiny library of image utilities dealing withheight maps, normal maps, distance fields and the like.
MIT
- JCash/voronoi - A C implementation for creating 2D voronoi diagrams.
MIT
- Srekel/the-worldinator - Procedural world generation experiment.
Licenses
- saxbophone/libsxbp - Experimental generation of 2D spiralling linesbased on input binary data.
License
- ajxs/pbp - Procedural Block Painter. Experiments in procedural artgeneration.
MIT
- Tastyep/ProceduralNoise - Useful functions for proceduralgeneration.
No license
Processes and IPC
^
Processes and IPC
- D-Bus - Interprocess communications bus.
Licenses
- bus1/dbus-broker - Linux D-Bus Message Broker.
Apache 2
- signalapp/libsignal-protocol-c - Signal Protocol C Library.
GPL 3
- sharvil/flingfd - A tiny library to send file descriptors acrossprocesses.
Apache 2
- sheredom/process.h - A simple one header solution to launchingprocesses and interacting with them for C and C++.
Unlicense
- troydhanson/kvspool - A library to support streaming dataapplications.
MIT
- xroche/coffeecatch - Tiny native POSIX signal catcher (especiallyuseful for JNI code on Android/Dalvik).
BSD 2-Clause
- samuellab/InterProcess - A compact C library to share data between processes on Windows.
GPL 3
Regex and Search
^
Regex and Search
- kkos/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.
License
- nasciiboy/RecursiveRegexpRaptor-4 - Simple and completeimplementation of regular expressions with its own sintax.
GPL 3
- laurikari/tre - POSIX-compliant, feature-full regex library.
License
- cesanta/slre - Super Light Regexp engine for C/C++.
License
- k-takata/Onigmo - Regular expressions library forked fromOniguruma.
License
- openresty/sregex - A non-backtracking NFA/DFA-based Perl-compatibleregex engine matching on large data streams.
BSD 3-Clause
Serialization
^
Serialization
- dvidelabs/flatcc - FlatBuffers compiler and library.
Apache 2
- liteserver/binn - Binary serialization format meant to be compact,fast and easy-to-use.
Apache 2
- jmckaskill/c-capnproto - Implementation of the Cap'n Protoserialization protocol.
MIT
- apache/avro - Avro data serialization system for several languages,including C.
Apache 2
- liteserver/netstring-c - Netstring encoder and decoder.
Public domain
- protobuf-c - Implementation of Google Protocol Buffer in C.
License
- ErikDubbelboer/c-pack - Simple data packing/unpacking in C.
No license
- acg/lwpb - Lightweight Protocol Buffers for C and Python.
Apache 2
- camgunz/cmp - An implementation of the MessagePack serializationformat in C.
MIT
- cloudwu/pbc - A protocol buffers library for C.
MIT
- cloudwu/sproto - Yet another protocol library like google protocolbuffers ,but simple and fast.
MIT
- dryman/opic - Fast serialization framework for C.
LGPL 3
- google/upb - Small protobuf implementation in C.
BSD 3-Clause
- greghaynes/Afproto - Serial data framing protocol.
License
- ludocode/mpack - Encoder/decoder for the MessagePack serializationformat.
MIT
- nanopb/nanopb - Protocol Buffers with small code size.
Zlib
- troydhanson/tpl - Small binary serialization library for C.
License
- clibs/dumpasn1 - Display the contents of ASN.1 encoded data.
License
- vlm/asn1c - The ASN.1 Compiler.
BSD 2-Clause
- eerimoq/pbtools - Google protobuf tools.
MIT
Source Code Collections
^
Source Code Collections
- DanielGibson/Snippets - Useful code snippets and header-onlylibraries.
Public domain
- CCAN - Modelled after Perl's CPAN, this is a big collection of Ccode.
No license
- libdjb - Collection of libraries doing various things.
License
- BurntSushi/clibs - A smattering of miscellaneous C libraries.Includes sane argument parsing, a thread-safe multi-producer/multi-consumerqueue, and implementation of common data structures (hashmaps, vectors andlinked lists).
WTFPL
- RandyGaul/cute_headers - Collection of cross-platform one-file C/C++libraries with no dependencies, primarily used for games.
Licenses
- chadjoan/C-Survival-Kit - A set of useful functions, datastructures, and macros aimed at allowing more expressive and reliable C code.Portability targets are OpenVMS and Linux.
Boost
- floooh/sokol - Minimal cross-platform standalone C headers.
Zlib
- gingerBill/gb - Single-file public domain libraries for C & C++.
Public domain
- gozfree/libraries - Basic libraries all written in c by gozfree,including network, event, config, log, hash, ipc, rpc, mem, and so on.
MIT
- mackron/dr_libs - A collection of public domain single-filelibraries for C/C++.
Public domain
- mattiasgustavsson/libs - Single-file public domain libraries forC/C++.
Public domain
- matteobertozzi/carthage - Pure C Data Structure and Utils.
BSD
- napsy/libhelper - General functions and data structures for C.
BSD 3-Clause
- niklasfrykholm/nflibs - A collection of interoperable minimalisticC libraries.`Public domain
- nothings/stb - Single-file public domain libraries for C/C++.
Licenses
- prideout/par - Single-file C libraries from Philip Allan Rideout.
MIT
- rmitton/rjm - Various single-file C libraries.
Public domain
- vurtun/mmx - single header libraries for C/C++.
No license
- yl790/algorithms-and-data-structures - Different algorithms & datastructures.
No license
- rofl0r/libulz - a collection of useful functions and datastructures to create C apps faster. focus on simplicity, ability to staticallylink and minimal binary size.
LGPL 2.1
- sdroege/snippets - Some algorithms and data structures.
LGPL 3
- lbrito1/cstuff - Algorithms & data structures in C.
GPL 2
- angelortega/mpdm - Minimum Profit Data Manager.
Public domain
- attractivechaos/klib - Small and lightweight implementations ofcommon algorithms and data structures.
MIT
- f1nalspace/final_game_tech - Game related libraries.
MIT
- QwertyQaz414/anv - Collection of header-only utility libraries.
MIT
Scientific
^
Scientific
Math mostly located inCalculations category
- GuillaumeHolley/BloomFilterTrie - A data structure for pan-genomestorage.
MIT
- noporpoise/seq_file - Library for Reading Bioinformatic SequenceData in C.
Public domain
- r0nk/corvus - Genetic BF programming.
No license
- XenonofArcticus/DynamicTrack - Access sources of dynamically-updateddata about discrete entities like GPSes, INSes, ADS-B sources.
MIT
- ericmandel/funtools - A "minimal buy-in" FITS library and utilitypackage for astronomical data analysis.
LGPL 2.1
Special Purpose
^
Special Purpose
Libraries with very narrow non-generic purpose.
- TulipCharts/tulipindicators - Library of functions for technicalanalysis of financial data.
LGPL 3
- MatthewLM/cbitcoin - Low-level bitcoin library written in C.
MIT
- RhysU/ESIO - Provides simple, high throughput input and output ofstructured data sets using parallel HDF5. ESIO is designed to support readingand writing turbulence simulation restart files within C, C++, and modernFortran applications.
LGPL 2.1
- Unidata/netcdf-c - Official GitHub repository for netCDF-C librariesand utilities.
BSD 3-Clause
- jgarzik/picocoin - A bitcoin library in C, SPV wallet & more.
License
- libtrading/libtrading - Ultra low-latency trading connectivitylibrary for C and C++.
BSD 2-Clause
- nayuki/QR-Code-generator - High-quality QR Code generator libraryin Java, JavaScript, Python, C++, C.
MIT
- qiq/Czech-morphology - Czech morphology library, using data filescompatible with PDT 2.0
License
- sleuthkit/sleuthkit - The Sleuth Kit® (TSK) is a library andcollection of command line digital forensics tools that allow you toinvestigate volume and file system data. The library can be incorporated intolarger digital forensics tools and the command line tools can be directly usedto find evidence.
Licenses
- hroptatyr/uterus - universal tick encoder library to efficientlytransport huge amounts of tick data.
BSD 3-Clause
- luke-jr/bfgminer - Modular ASIC/FPGA miner written in C, featuringoverclocking, monitoring, fan speed control and remote interface capabilities.
GPL 3
Standard Libraries
^
Standard Libraries
Implementations of the C standards
- PDCLib - The Public Domain C Library. Implements most of C99 andsome of C11.
License
- uClibc-ng - Small C library for developing embedded systems.
LGPL 2.1
- dietlibc - C standard library designed for the smallest possiblebinaries.
GPL 2
- glibc - The GNU C Library; an implementation of the C standardlibrary.
Licenses
- musl - Standard C library, compatible with POSIX 2008 and C11.Designed for static linking.
MIT
- NuxiNL/cloudlibc - CloudABI's standard C library.
BSD 2-Clause
- marssaxman/startc - Minimal freestanding C library for bare-metali386 development.
License
- olibc/olibc - Another C Library optimized for Embedded Linux.
BSD
- lpsantil/rt0 - A minimal C runtime for Linux i386 & x86_64.
BSD 2-Clause
- keith-packard/picolibc - Standard C library APIs that targetssmall embedded systems with limited RAM.
Licenses
String Manipulation
^
String Manipulation
- wooorm/levenstein.c - Levenstein distance algorithm implementation.
MIT
- wooorm/stmr.c - Porter Stemmer algorithm implementation.
MIT
- websnarf/bstrlib- The Better String Library.
BSD 3-Clause
- ICU - International Components for Unicode; a library for Unicodesupport.
License
- libunistring - Library for manipulating Unicode strings in C.
Licenses
- libgiconv - Text conversion library.
LGPL
- JuliaStrings/utf8proc - Small, clean library for processing UTF-8Unicode data.
License
- antirez/sds - Simple Dynamic Strings library for C.
BSD 2-Clause
- boyerjohn/rapidstring - Maybe the fastest string library ever.
MIT
- clibs/buffer - Tiny C string library.
MIT
- chrisjmccormick/word2vec_commented - Commented (but unaltered)version of original word2vec C implementation.
Apache 2
- fontforge/libuninameslist - A library with a large (sparse) arraymapping each unicode code point to the annotation data for it.
BSD 3-Clause
- jasonmaclafferty/String - Dynamic string data type implementation.
MIT
- josephg/librope - UTF-8 rope library for C.
MIT
- sheredom/utf8.h - Single header utf8 string functions for Cand C++.
Unlicense
- branchless-utf8 - Branchless UTF-8 decoder.
Unlicense
- g-berthiaume/strsepf - Single header string parsing function withmemory safety of strsep and the convenience of a sscanf-like interface.
MIT
- karlmcguire/sing - String ring buffer library.
MIT
Testing
^
Testing
- yhfudev/cpp-ci-unit-test - A modern minimal hassle unit testframework.
MIT
- codeplea/minctest - Unit testing microlibrary.
Zlib
- evolutional/utest - Single-header unit testing library.
Unlicense
- Tuplanolla/cheat - Very simple unit testing framework.
BSD 2-Clause
- libcheck/check - Unit testing framework for C.
LGPL 2.1
- ThrowTheSwitch/CMock - Mock/stub generator for C.
MIT
- cmocka - Unit testing framework with support for mock objects.
Apache 2
- rafael-santiago/cutest - Library for unit testing with memory leakdetection (Linux, FreeBSD and Windows).
GPL 2
- nemequ/munit - Small but full-featured unit testing framework for Cwith no dependencies.
MIT
- zorgnax/libtap - Write tests in C.
LGPL 3
- Snaipe/Criterion - A cross-platform C and C++ unit testingframework for the 21th century.
MIT
- ThrowTheSwitch/Unity - Simple Unit Testing for C.
MIT
- bvdberg/ctest - Unit test framework for software written in C.
Apache 2
- clear-code/cutter - An easy to write and debug unit testingframework for C and C++.
Licenses
- compiler-dept/speck - A small unit testing framework for C.
MIT
- joewalnes/tinytest - A tiny unit-testing framework for C.
No license
- lpabon/cmockery2 - Reviving cmockery unit test framework fromGoogle.
Apache 2
- mcandre/qc - C port of the QuickCheck unit test framework.
BSD 2-Clause
- mchochlov/Gnucash - Data model unit testing - GSoC 2011.
Licenses
- mortie/snow - A testing library for C.
MIT
- orangeduck/ptest - DRY Microtesting Framework for C.
BSD 3-Clause
- silentbicycle/greatest - A C testing library in 1 file. Nodependencies, no dynamic allocation.
ISC
- silentbicycle/theft - property-based testing for C: generate inputto find obscure bugs, then reduce to minimal failing input.
ISC
- siu/minunit - Minimal unit testing framework for C.
MIT
- stephenmathieson/describe.h - Simple BDD describe test.
MIT
- vmg/clar - What tests are made of.
ISC
- CuTest - C Unit Testing Framework.
Licenses
- eerimoq/nala - Test framework for C projects. Based on narwhal andnarmock.
MIT
- vberlier/narwhal - Framework for writing readable and maintainabletests for C programs and libraries.
MIT
- vberlier/narmock - Finds the functions mocked in your tests andgenerates mocks.
MIT
- sheredom/utest.h - Single header unit testing framework. [
Unlicense
][80-61] - Koldar/crashc - Automatic C source code testing framework.
MIT
- christophercrouzet/rexo - Unit testing framework for C and C++.
Unlicense
TUI
^
TUI
Textual User Interface
- sabotage-linux/netbsd-curses - Simplified and small version ofcurses, with the same interface.
Licenses
- ncurses - Coloured terminal UI library.
Licenses
- doches/progressbar - An easy-to-use C library for displaying textprogress bars.
BSD 3-Clause
- jwerle/progress.c - Progress display lib for c.
MIT
- nsf/termbox - Library for writing text-based user interfaces.
MIT
- alandekok/recli - A re-imagined CLI. Customizable syntax, help,permissions, data types.
BSD 2-Clause
- matthiasbock/ucurses - Very small and simple text-based userinterface (TUI) library for microcontrollers.
GPL 3
- serameo/TUI - Text User Interface using curses for UNIX.
GPL 3
- jakubfi/emui - Text user interface toolkit.
License
- nejohnson/stui - Simple Text User Interface.
BSD 3-Clause
- tboox/ltui - A cross-platform terminal ui library based on Lua.
Apache 2
- okbob/ncurses-st-menu - ncurses based library for CUA look menu.
BSD 2-Clause
- LionyxML/nocurses - A terminal screen manipulation library.
GPL 2
- seleznevae/libfort - Crossplatform library for formattedtext tables creation.
MIT
- LiquidityC/termesc - ANSI escape TUI library.
No license
- tryggth/newt - TUI library made by RedHat.
License
- serameo/TUI2 - TUI fox Unix.
No license
Uncategorized
^
Uncategorized
- recp/tm - Timer and Timeline Utils for C.
MIT
- libgit2/libgit2 - Pure C implementation of Git.
License
- ThomasHabets/monotonic_clock - Portable C library for gettingmonotonic time.
BSD 3-Clause
- graphviz - Graph Visualization Tools.
License
- h2non/semver.c - semantic version parser and serializer written inANSI C.
MIT
- libical/libical - Libical is an Open Source implementation of theiCalendar protocols and protocol data units.
Licenses
- jonpe960/ufsm - UML Statechart library in C and XMI importer.
BSD 3-Clause
- locasto/libdisorder - A simple C library for entropy measurementof byte streams and other data.
GPL 2
- lucasb-eyer/heatmap - High performance C heatmap generationlibrary. Supposed to be wrapped by higher-level languages.
MIT
- tailhook/objpath - A library that allows to traverse datastructures by path.
MIT
- pornin/CTTK - Constant-Time Toolkit.
MIT
- juliettef/IconFontCppHeaders - C, C++ headers and C# classes foricon fonts: Font Awesome, Fork Awesome, Material Design, Material Designicons, Kenney game icons and Ionicons.
Zlib
- eam/libcrange - Range parsing library for managing sets ofostnames, ips, clusters, roles and other operational data.
BSD 3-Clause
About
New changes are here:https://notabug.org/bfgeshka/awesome-c