2118 lines
118 KiB
HTML
2118 lines
118 KiB
HTML
<h1 id="awesome-c">Awesome C</h1>
|
||
<p>A curated list of C good stuff. This list contains <em>only</em> <a
|
||
href="https://opensource.org/osd">open source</a> code (as defined by
|
||
the linked Open Source Definition), and sellers who aren’t evil for
|
||
physical resources.</p>
|
||
<p>This is released under a Creative Commons-Attribution-ShareAlike
|
||
license, version 4 (SPDX code <code>CC-BY-SA-4.0</code>). You can find
|
||
its text in the LICENSE file.</p>
|
||
<p><strong>An important note:</strong> This project does <em>not</em>
|
||
index anything C++-related; only pure C stuff is considered.</p>
|
||
<p><strong>Note for contributors:</strong> If you want to make a pull
|
||
request, please read CONTRIBUTING.md first.</p>
|
||
<h2 id="contents">Contents</h2>
|
||
<ul>
|
||
<li><a href="#ai">AI</a></li>
|
||
<li><a href="#benchmarking">Benchmarking</a></li>
|
||
<li><a href="#build-systems">Build Systems</a></li>
|
||
<li><a href="#compilers">Compilers</a></li>
|
||
<li><a href="#compression">Compression</a></li>
|
||
<li><a href="#concurrency-and-parallelism">Concurrency and
|
||
Parallelism</a></li>
|
||
<li><a href="#crypto">Crypto</a></li>
|
||
<li><a href="#database">Database</a></li>
|
||
<li><a href="#data-structures">Data Structures</a></li>
|
||
<li><a href="#debugging">Debugging</a></li>
|
||
<li><a href="#documentation-generation">Documentation
|
||
Generation</a></li>
|
||
<li><a href="#editors">Editors</a></li>
|
||
<li><a href="#embeddable-scripting-engines">Embeddable Scripting
|
||
Engines</a></li>
|
||
<li><a href="#frameworks">Frameworks</a></li>
|
||
<li><a href="#game-programming">Game Programming</a></li>
|
||
<li><a href="#graphics">Graphics</a></li>
|
||
<li><a href="#graphical-user-interface">Graphical User
|
||
Interface</a></li>
|
||
<li><a href="#hashing">Hashing</a></li>
|
||
<li><a href="#learning-reference-and-tutorials">Learning, Reference and
|
||
Tutorials</a>
|
||
<ul>
|
||
<li><a href="#reference-resources-online">Reference resources
|
||
online</a></li>
|
||
<li><a href="#beginner-resources-online">Beginner resources
|
||
online</a></li>
|
||
<li><a href="#intermediate-resources-online">Intermediate resources
|
||
online</a></li>
|
||
<li><a href="#advanced-resources-online">Advanced resources
|
||
online</a></li>
|
||
<li><a href="#reference-books">Reference books</a></li>
|
||
<li><a href="#beginner-books">Beginner books</a></li>
|
||
<li><a href="#intermediate-books">Intermediate books</a></li>
|
||
<li><a href="#advanced-books">Advanced books</a></li>
|
||
</ul></li>
|
||
<li><a href="#lexing-and-parsing">Lexing and Parsing</a></li>
|
||
<li><a href="#memory-management">Memory Management</a></li>
|
||
<li><a href="#multimedia">Multimedia</a></li>
|
||
<li><a href="#networking-and-internet">Networking and Internet</a></li>
|
||
<li><a href="#numerical">Numerical</a></li>
|
||
<li><a href="#profiling">Profiling</a></li>
|
||
<li><a href="#regex">Regex</a></li>
|
||
<li><a href="#serialization">Serialization</a></li>
|
||
<li><a href="#source-code-collections">Source Code Collections</a></li>
|
||
<li><a href="#standard-libraries">Standard Libraries</a>
|
||
<ul>
|
||
<li><a href="#template-libraries">Template Libraries</a></li>
|
||
</ul></li>
|
||
<li><a href="#string-manipulation">String Manipulation</a></li>
|
||
<li><a href="#structured-file-processing">Structured File Processing</a>
|
||
<ul>
|
||
<li><a href="#csv">CSV</a></li>
|
||
<li><a href="#json">JSON</a></li>
|
||
<li><a href="#ini">INI</a></li>
|
||
<li><a href="#others">Others</a></li>
|
||
<li><a href="#xml">XML</a></li>
|
||
<li><a href="#yaml">YAML</a></li>
|
||
</ul></li>
|
||
<li><a href="#testing">Testing</a></li>
|
||
<li><a href="#text-editor-extensions">Text Editor Extensions</a></li>
|
||
<li><a href="#tools">Tools</a></li>
|
||
<li><a href="#utilities">Utilities</a></li>
|
||
<li><a href="#web-frameworks">Web Frameworks</a></li>
|
||
<li><a href="#windows-environments">Windows Environments</a></li>
|
||
</ul>
|
||
<h2 id="ai">AI</h2>
|
||
<p>Computer vision, neural nets, machine learning, and other similar
|
||
things. Basically, if your university calls it AI, it lives here.</p>
|
||
<ul>
|
||
<li><a href="http://libccv.org/">ccv</a> - C-based/Cached/Core Computer
|
||
Vision library; modern computer vision. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="https://100.github.io/Cranium/">Cranium</a> - Portable,
|
||
header-only ANN library in C99. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/libfann/fann">FANN</a> - Fast Artifical
|
||
Neural Network library; an implementation of neural networks. <a
|
||
href="https://spdx.org/licenses/GPL-2.0-only.html"><code>GPL-2.0-only</code></a></li>
|
||
<li><a href="https://codeplea.com/genann">Genann</a> - Simple ANN in
|
||
C89, without additional dependencies. <a
|
||
href="https://spdx.org/licenses/Zlib.html"><code>Zlib</code></a></li>
|
||
<li><a href="https://github.com/attractivechaos/kann">KANN</a> -
|
||
Two-file ANN library. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/jppbsi/LibDEEP">LibDEEP</a> - Deep
|
||
learning library. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="https://github.com/BayesWitnesses/m2cgen">m2cgen</a> - A
|
||
CLI tool to transpile trained classic ML models into a native C code
|
||
with zero dependencies. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://sod.pixlab.io/">sod</a> - An Embedded Computer
|
||
Vision & Machine Learning Library [<code>GPL-3</code>][GPL-3]</li>
|
||
</ul>
|
||
<h2 id="benchmarking">Benchmarking</h2>
|
||
<p>Comparing the performance of various subsystems across different
|
||
chip/system architectures.</p>
|
||
<ul>
|
||
<li><a href="https://github.com/okuvshynov/b63">b63</a> - Light-weight
|
||
micro-benchmarking tool for C. <a
|
||
href="https://spdx.org/licenses/Apache-2.0.html"><code>Apache-2.0</code></a></li>
|
||
</ul>
|
||
<h2 id="build-systems">Build Systems</h2>
|
||
<p>Tools that automate the building and testing of projects in C.</p>
|
||
<ul>
|
||
<li><a
|
||
href="https://www.gnu.org/software/automake/manual/html_node/GNU-Build-System.html">Autotools</a>
|
||
- Also known as the GNU build system (automake, autoconf, libtool…) is
|
||
one of the most widely used build systems (configure && make).
|
||
<a
|
||
href="https://spdx.org/licenses/GPL-1.0.html">GPL-1.0-or-later</a></li>
|
||
<li><a href="https://github.com/msune/autotools-skeleton">Autotools
|
||
project skeleton</a> - A simple autotools skeleton (template) to quickly
|
||
bootstrap new projects. <a
|
||
href="https://spdx.org/licenses/BSD-2-Clause.html"><code>BSD-2-Clause</code></a></li>
|
||
<li><a href="https://cmake.org/">CMake</a> - Cross-platform family of
|
||
tools designed to build, package and test software. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="https://www.gnu.org/software/make/">GNU Make</a> - Tool
|
||
which controls the generation of executables and other non-source files
|
||
of a program. <a
|
||
href="https://spdx.org/licenses/GPL-3.0-or-later.html"><code>GPL-3.0-or-later</code></a></li>
|
||
<li><a href="https://mesonbuild.com/">Meson</a> - Extremely fast,
|
||
user-friendly build system. Based on Ninja. <a
|
||
href="https://spdx.org/licenses/Apache-2.0.html"><code>Apache-2.0</code></a></li>
|
||
<li><a href="https://premake.github.io/">Premake</a> - Command-line
|
||
utility which reads a scripted definition of a software project and uses
|
||
it to generate project files for Visual Studio and GNU Make. Other
|
||
targets are also being worked on. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="https://www.scons.org/">SCons</a> - Software construction
|
||
tool using Python. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://xmake.io/">xmake</a> - Cross-platform build
|
||
utility. <a
|
||
href="https://spdx.org/licenses/Apache-2.0.html"><code>Apache-2.0</code></a></li>
|
||
<li><a href="https://github.com/zeromq/zproject">zproject</a> - Project
|
||
generator and build system support tool. <a
|
||
href="https://spdx.org/licenses/MPL-2.0.html"><code>MPL-2.0</code></a></li>
|
||
</ul>
|
||
<h2 id="compilers">Compilers</h2>
|
||
<p>Compilers, as well as compiler- and compilation-related tooling.</p>
|
||
<ul>
|
||
<li><a href="https://ccache.dev/">ccache</a> - Compiler cache designed
|
||
to speed up recompilation. <a
|
||
href="https://spdx.org/licenses/GPL-3.0-or-later.html"><code>GPL-3.0-or-later</code></a></li>
|
||
<li><a href="https://clang.llvm.org/">Clang</a> - Compiler for LLVM.
|
||
Supports C11. <a
|
||
href="https://spdx.org/licenses/NCSA.html"><code>NCSA</code></a></li>
|
||
<li><a href="https://git.sr.ht/~mcf/cproc">cproc</a> - A C11 compiler
|
||
using QBE as a backend. <a
|
||
href="https://spdx.org/licenses/ISC.html"><code>ISC</code></a></li>
|
||
<li><a href="https://github.com/distcc/distcc">distcc</a> - Program that
|
||
allows builds to be distributed among several machines. <a
|
||
href="https://spdx.org/licenses/GPL-2.0-or-later.html"><code>GPL-2.0-or-later</code></a></li>
|
||
<li><a href="https://pp.ipd.kit.edu/firm/">Firm</a> - Library that
|
||
provides a graph-based intermediate representation, optimizations and
|
||
assembly code generation suitable for use in compilers. Comes with an
|
||
example C front-end under the same license. <a
|
||
href="https://spdx.org/licenses/LGPL-2.1-only.html"><code>LGPL-2.1-only</code></a></li>
|
||
<li><a href="https://gcc.gnu.org/">GCC</a> - Provides a C compiler as
|
||
part of its compiler set. Supports C11. <a
|
||
href="https://spdx.org/licenses/GPL-3.0-or-later.html"><code>GPL-3.0-or-later</code></a></li>
|
||
<li><a href="http://pcc.ludd.ltu.se/">PCC</a> - Venerable compiler.
|
||
Supports C99. <a href="http://pcc.ludd.ltu.se/licenses/">Various
|
||
licenses</a>, all open source.</li>
|
||
</ul>
|
||
<h2 id="compression">Compression</h2>
|
||
<ul>
|
||
<li><a href="http://blosc.org/pages/blosc-in-depth">blosc</a> -
|
||
Extremely fast, multi-threaded, meta-compressor library. Various
|
||
licenses, all open source.</li>
|
||
<li><a href="https://github.com/google/brotli">Brotli</a> -
|
||
General-purpose lossless compression algorithm library. Has speeds
|
||
comparable to DEFLATE, but much higher compression ratios. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a>.</li>
|
||
<li><a href="http://lzip.nongnu.org/clzip.html">clzip</a> - C version of
|
||
the high-quality data compressor <a
|
||
href="http://lzip.nongnu.org/lzip.html">Lzip</a> (LZMA implementation).
|
||
<a
|
||
href="https://spdx.org/licenses/GPL-2.0-or-later.html"><code>GPL-2.0-or-later</code></a></li>
|
||
<li><a href="https://github.com/RoaringBitmap/CRoaring">CRoaring</a> - C
|
||
implementation of <a href="http://roaringbitmap.org/">Roaring
|
||
bitmaps</a>. <a
|
||
href="https://spdx.org/licenses/Apache-2.0.html"><code>Apache-2.0</code></a></li>
|
||
<li><a
|
||
href="https://github.com/Cyan4973/FiniteStateEntropy">FiniteStateEntropy</a>
|
||
- Two highly efficient compression codecs optimized for modern CPUs. <a
|
||
href="https://spdx.org/licenses/BSD-2-Clause.html"><code>BSD-2-Clause</code></a></li>
|
||
<li><a href="https://github.com/centaurean/density">DENSITY</a> -
|
||
Super-fast compression library. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="https://github.com/atomicobject/heatshrink">heatshrink</a>
|
||
- Data compression/decompression library for embedded and real-time
|
||
systems. <a
|
||
href="https://spdx.org/licenses/ISC.html"><code>ISC</code></a></li>
|
||
<li><a href="https://github.com/gildor2/fast_zlib">fast_zlib</a> -
|
||
Improved zlib, which runs 2 to 10 times faster. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="https://github.com/ariya/fastlz">fastLZ</a> -
|
||
Lightning-fast lossless compression library (LZ77 type). Embbedable on
|
||
small target like ARM Cortex-M families. Source code directly embbedable
|
||
on your project ( a pair of h/c files), no dynamic memory allocation. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a
|
||
href="https://github.com/adamierymenko/huffandpuff">huffandpuff</a> -
|
||
Minimal Huffman encoder and decoder. Public domain.</li>
|
||
<li><a href="https://github.com/maxim2266/str">libzip</a> - C library
|
||
for reading, creating and modifying zip archives. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="http://www.bzip.org/">libbzip2</a> - Patent-free,
|
||
high-quality data compression library. <a
|
||
href="https://spdx.org/licenses/BSD-4-Clause.html"><code>BSD-4-Clause</code></a></li>
|
||
<li><a href="https://github.com/inikep/lizard">Lizard</a> - Formerly
|
||
LZ5; an efficient compressor with fast decompression. Achieves
|
||
compression ratios comparable with zip and zlib at decompression speeds
|
||
of 1000MB/s and faster. <a
|
||
href="https://spdx.org/licenses/BSD-2-Clause.html"><code>BSD-2-Clause</code></a></li>
|
||
<li><a href="http://lz4.github.io/lz4/">lz4</a> - Library for an
|
||
extremely fast compression algorithm. <a
|
||
href="https://spdx.org/licenses/BSD-2-Clause.html"><code>BSD-2-Clause</code></a></li>
|
||
<li><a href="http://www.oberhumer.com/opensource/lzo/">lzo</a> - Fast
|
||
data compression library. <a
|
||
href="https://spdx.org/licenses/GPL-2.0-or-later.html"><code>GPL-2.0-or-later</code></a></li>
|
||
<li><a href="https://github.com/vasi/pixz">pixz</a> - Parallel, indexed
|
||
xz compressor. <a
|
||
href="https://spdx.org/licenses/BSD-2-Clause.html"><code>BSD-2-Clause</code></a></li>
|
||
<li><a href="http://ed-von-schleck.github.io/shoco">shoco</a> -
|
||
Compressor for small text strings. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/lemire/simdcomp">SIMDComp</a> - Simple
|
||
library for compressing lists of integers using binary packing. Makes
|
||
use of SIMD instructions on x86. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="https://github.com/antirez/smaz">smaz</a> - Efficient
|
||
string compression library. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="https://github.com/quixdb/squash">squash</a> - Compression
|
||
abstraction library, complete with some utilities. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/powturbo/TurboPFor">TurboPFor</a> -
|
||
Fastest integer compression. <a
|
||
href="https://spdx.org/licenses/GPL-2.0-or-later.html"><code>GPL-2.0-or-later</code></a></li>
|
||
<li><a href="https://github.com/powturbo/TurboRLE">TurboRLE</a> - Most
|
||
efficient run-length encoding. <a
|
||
href="https://spdx.org/licenses/GPL-2.0-or-later.html"><code>GPL-2.0-or-later</code></a></li>
|
||
<li><a href="https://github.com/kuba--/zip">zip</a> - Really really
|
||
small zip archive processing library. <a
|
||
href="https://spdx.org/licenses/Unlicense.html"><code>Unlicense</code></a></li>
|
||
<li><a href="http://zlib.net">Zlib</a> - Massively spiffy yet delicately
|
||
unobtrusive compression library. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="https://github.com/libarchive/libarchive">libarchive</a> -
|
||
libarchive is a portable, efficient C library that can read and write
|
||
streaming archives in a variety of formats. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="https://github.com/Dead2/zlib-ng">zlib-ng</a> - Zlib
|
||
replacement with optimizations for ‘next-generation’ systems. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="http://facebook.github.io/zstd/">Zstandard</a> - Fast,
|
||
lossless compression algorithm, targeting real-time compression
|
||
scenarios at zlib-level or better compression ratios. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
</ul>
|
||
<h2 id="concurrency-and-parallelism">Concurrency and Parallelism</h2>
|
||
<ul>
|
||
<li><a href="http://repo.hu/projects/cchan/">cchan</a> - Small library
|
||
for channel constructs for inter-thread communication. Public
|
||
domain.</li>
|
||
<li><a
|
||
href="https://github.com/yosefk/checkedthreads">checkedthreads</a> - A
|
||
simple library for parallelism, with built-in checking for race
|
||
conditions. <a
|
||
href="https://spdx.org/licenses/BSD-2-Clause.html"><code>BSD-2-Clause</code></a></li>
|
||
<li><a href="http://concurrencykit.org">ck</a> - Concurrency primitives,
|
||
safe memory reclamation mechanisms and non-blocking data structures. <a
|
||
href="https://spdx.org/licenses/BSD-2-Clause.html"><code>BSD-2-Clause</code></a></li>
|
||
<li><a href="http://www.shlomifish.org/rwlock/">FCFS RWLock</a> -
|
||
First-come first-served Readers/Writers lock for POSIX threads. <a
|
||
href="https://spdx.org/licenses/CC0-1.0.html"><code>CC0-1.0</code></a></li>
|
||
<li><a href="https://github.com/hnes/libaco">Libaco</a> - A blazing fast
|
||
and lightweight C asymmetric coroutine library. <a
|
||
href="https://spdx.org/licenses/Apache-2.0.html"><code>Apache-2.0</code></a></li>
|
||
<li><a href="https://github.com/sharow/libconcurrent">libconcurrent</a>
|
||
- Concurrent programming library, using coroutines, for C11. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="https://github.com/shiyanhui/libcsp">libcsp</a> - High
|
||
performance concurrency C library influenced by the CSP model. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="http://libdill.org/">libdill</a> - Library which makes
|
||
structured concurrent programming easy. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/xant/libhl">libhl</a> - Library
|
||
implementing a thread-safe API to manage a range of data structures.
|
||
Also provides some supporting functions and structures for concurrent
|
||
and lockfree programming. <a
|
||
href="https://spdx.org/licenses/LGPL-3.0-only.html"><code>LGPL-3.0-only</code></a></li>
|
||
<li><a href="http://liburcu.org/">liburcu</a> - Data synchronization
|
||
library, which scales linearly with the number of cores. <a
|
||
href="https://spdx.org/licenses/LGPL-2.1-or-later.html"><code>LGPL-2.1-or-later</code></a></li>
|
||
<li><a href="http://libmill.org/">mill</a> - Go-style concurrency. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/matze/oclkit">oclkit</a> - Two-file
|
||
OpenCL wrapper. <a
|
||
href="https://spdx.org/licenses/GPL-3.0-or-later.html"><code>GPL-3.0-or-later</code></a></li>
|
||
<li><a href="http://tuxfan.github.io/ocl-mla/">OCL-MLA</a> - OpenCL
|
||
Mid-Level Abstractions. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="https://www.openmp.org/">OpenMP</a> - Set of pragmas
|
||
designed to allow for easy parallelization of code. Standard (licensing
|
||
not applicable).</li>
|
||
<li><a href="https://github.com/open-mpi/ompi">Open MPI</a> - Message
|
||
passing interface implementation. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="https://github.com/parallella/pal">pal</a> - Optimized
|
||
library for maths, parallel processing and data movement. <a
|
||
href="https://spdx.org/licenses/Apache-2.0.html"><code>Apache-2.0</code></a></li>
|
||
<li><a href="https://gnu.org/software/pth/">pth</a> - Portable
|
||
implementation for non-preemptive priority-based scheduling for multiple
|
||
threads of execution. <a
|
||
href="https://spdx.org/licenses/GPL-3.0-or-later.html"><code>GPL-3.0-or-later</code></a></li>
|
||
<li><a href="https://en.wikipedia.org/wiki/POSIX_Threads">pthreads</a> -
|
||
POSIX thread library. Standard (no license applicable).</li>
|
||
<li><a href="https://tinycthread.github.io/">TinyCThread</a> - Portable,
|
||
small implementation of the C11 threads API. <a
|
||
href="https://spdx.org/licenses/Zlib.html"><code>Zlib</code></a></li>
|
||
</ul>
|
||
<h2 id="crypto">Crypto</h2>
|
||
<p>Mostly library implementations of well-known cryptographic algorithms
|
||
or protocols.</p>
|
||
<ul>
|
||
<li><a href="https://gnu.org/software/gsasl/">GNU SASL</a> -
|
||
Implementation of the Simple Authentication and Security Layer and a few
|
||
common SASL mechanism. <a
|
||
href="https://spdx.org/licenses/GPL-3.0-or-later.html"><code>GPL-3.0-or-later</code></a></li>
|
||
<li><a href="http://www.gnutls.org/">GnuTLS</a> - Secure communication
|
||
library, implementing SSL, TLS and DTLS. <a
|
||
href="https://spdx.org/licenses/LGPL-2.1-or-later.html"><code>LGPL-2.1-or-later</code></a></li>
|
||
<li><a href="https://gnupg.org/related_software/libgcrypt">libgcrypt</a>
|
||
- General-purpose cryptography library, with a range of available
|
||
ciphers. <a
|
||
href="https://spdx.org/licenses/LGPL-2.1-or-later.html"><code>LGPL-2.1-or-later</code></a></li>
|
||
<li><a href="https://www.openssl.org/">OpenSSL</a> - Implementation of
|
||
the SSL and TLS protocols. Also includes a cryptography library. <a
|
||
href="https://www.openssl.org/source/license.html">Dual Licensed under
|
||
the OpenSSL License and the SSLeay License</a>.</li>
|
||
<li><a href="https://openquantumsafe.org/">liboqs</a> - Library for
|
||
quantum-resistant cryptographicl algorithms. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://download.libsodium.org/doc">libsodium</a> - Modern
|
||
and easy-to-use crypto library. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://www.libtom.net">libtomcrypt</a> - Fairly
|
||
comprehensive, modular and portable cryptographic toolkit. Public
|
||
domain.</li>
|
||
<li><a href="https://tls.mbed.org/">mbed TLS</a> - Another crypto
|
||
implementation. <a
|
||
href="https://spdx.org/licenses/Apache-2.0.html"><code>Apache-2.0</code></a></li>
|
||
<li><a href="https://github.com/miracl/MIRACL">MIRACL</a> -
|
||
Multiprecision Integer and Rational Arithmetic Cryptographic Library; an
|
||
SDK for elliptic curve cryptography. <a
|
||
href="https://spdx.org/licenses/AGPL-3.0-or-later.html"><code>AGPL-3.0-or-later</code></a></li>
|
||
<li><a href="https://maciejczyzewski.github.io/retter">retter</a> -
|
||
Collection of hash functions, ciphers, tools, libraries and materials
|
||
related to cryptography and security. Public domain.</li>
|
||
<li><a href="https://github.com/awslabs/s2n">s2n</a> - C99
|
||
implementation of the TLS/SSL protocols, designed to be simple, fast and
|
||
with security as a priority. <a
|
||
href="https://spdx.org/licenses/Apache-2.0.html"><code>Apache-2.0</code></a></li>
|
||
<li><a href="http://www.saphir2.com/sphlib/">sphlib</a> - Set of
|
||
implementations of various hash functions, including several
|
||
cryptographic ones. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/trezor/trezor-crypto">trezor-crypto</a>
|
||
- Heavily optimized crypto algorithms for embedded devices. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/cjwagenius/bfish">bfish</a> - A single
|
||
include ANSI-C Blowfish ECB crypto library. Public domain.</li>
|
||
</ul>
|
||
<h2 id="database">Database</h2>
|
||
<p>Databases and data stores with C APIs.</p>
|
||
<ul>
|
||
<li><a
|
||
href="http://www.oracle.com/us/products/database/berkeley-db">BerkeleyDB</a>
|
||
- Library for a high-performance embedded database for key-value data.
|
||
<a
|
||
href="https://spdx.org/licenses/AGPL-3.0-only.html"><code>AGPL-3.0-only</code></a></li>
|
||
<li><a href="https://duckdb.org/">DuckDB</a> - Fast in-process
|
||
analytical database, with C API. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a><br />
|
||
</li>
|
||
<li><a href="https://ejdb.org/">EJDB2</a> - Embeddable JSON Database
|
||
engine. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/groonga/groonga">Groonga</a> - Columnar
|
||
store with full-text search. <a
|
||
href="https://spdx.org/licenses/LGPL-2.1-only.html"><code>LGPL-2.1-only</code></a></li>
|
||
<li><a href="https://github.com/redis/hiredis">Hiredis</a> -
|
||
Minimalistic client library for Redis. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="http://mongoc.org/">libmongoc</a> - High-performance client
|
||
library for <a href="https://www.mongodb.org/">MongoDB</a>. <a
|
||
href="https://spdx.org/licenses/Apache-2.0.html"><code>Apache-2.0</code></a></li>
|
||
<li><a href="https://www.symas.com/lmdb">LMDB</a> - Ultra-fast,
|
||
ultra-compact key-value embedded data store. <a
|
||
href="https://spdx.org/licenses/OLDAP-2.8.html"><code>OLDAP-2.8</code></a></li>
|
||
<li><a href="https://github.com/mysql/mysql-server">MySQL</a> - The
|
||
world’s most popular open source database. <a
|
||
href="https://spdx.org/licenses/GPL-2.0-only.html"><code>GPL-2.0-only</code></a></li>
|
||
<li><a href="https://www.postgresql.org/">PostgreSQL</a> - Powerful
|
||
object-relational database system. <a
|
||
href="https://spdx.org/licenses/PostgreSQL.html"><code>PostgreSQL</code></a></li>
|
||
<li><a href="https://redis.io/">Redis</a> - Advanced key-value store. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="http://sophia.systems">sophia</a> - Modern, embeddable
|
||
key-value database. <a
|
||
href="https://spdx.org/licenses/BSD-2-Clause.html"><code>BSD-2-Clause</code></a></li>
|
||
<li><a href="https://github.com/spotify/sparkey">sparkey</a> - Simple
|
||
constant key/value storage library. Designed for read-heavy loads with
|
||
infrequent, large bulk inserts. <a
|
||
href="https://spdx.org/licenses/Apache-2.0.html"><code>Apache-2.0</code></a></li>
|
||
<li><a href="https://www.sqlite.org/">SQLite</a> - Self-contained,
|
||
serverless, zero-configuration, transactional SQL database engine.
|
||
Public domain.</li>
|
||
<li><a href="https://unqlite.org/">UnQLite</a> - Self-contained,
|
||
serverless, zero-configuration, transactional NoSQL engine. <a
|
||
href="https://spdx.org/licenses/BSD-2-Clause.html"><code>BSD-2-Clause</code></a></li>
|
||
<li><a href="https://github.com/priitj/whitedb">WhiteDB</a> -
|
||
Lightweight database library, operating entirely in main memory. <a
|
||
href="https://spdx.org/licenses/GPL-3.0-or-later.html"><code>GPL-3.0-or-later</code></a></li>
|
||
</ul>
|
||
<h2 id="data-structures">Data Structures</h2>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/LeoVen/C-Macro-Collections">C-Macro-Collections</a>
|
||
- Generate simple and generic data structures using macros. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/AlexanderAgd/CLIST">CLIST</a> - Simple
|
||
and lightweight <a
|
||
href="https://en.wikipedia.org/wiki/Dynamic_array">dynamic array</a>
|
||
implementation. <a
|
||
href="https://spdx.org/licenses/BSD-2-Clause.html"><code>BSD-2-Clause</code></a></li>
|
||
<li><a href="https://github.com/srdja/Collections-C">Collections-C</a> -
|
||
Library of generic data structures. <a
|
||
href="https://spdx.org/licenses/LGPL-3.0-or-later.html"><code>LGPL-3.0-or-later</code></a></li>
|
||
<li><a href="https://github.com/recp/ds">ds</a> - Common Data Structures
|
||
and Algorithms. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://igraph.org/">igraph</a> - A graph processing
|
||
library. <a
|
||
href="https://spdx.org/licenses/GPL-2.0-or-later.html"><code>GPL-2.0-or-later</code></a></li>
|
||
<li><a href="https://github.com/jtsiomb/kdtree">kdtree</a> - Simple
|
||
library for working with KD-trees. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="http://adtinfo.org/libavl.html/index.html">libavl</a> -
|
||
Library containing a range of self-balancing binary trees. <a
|
||
href="https://spdx.org/licenses/GPL-3.0-or-later.html"><code>GPL-3.0-or-later</code></a></li>
|
||
<li><a href="https://msune.github.io/libcdada/">libcdada</a> - A small,
|
||
portable, MACRO-less library for basic data structures (list, set, map,
|
||
queue…) in C (C++ backend). <a
|
||
href="https://spdx.org/licenses/BSD-2-Clause.html"><code>BSD-2-Clause</code></a></li>
|
||
<li><a href="https://liblfds.org/">liblfds</a> - Portable lock-free data
|
||
structure library. Public domain (more exactly, whatever license you
|
||
want).</li>
|
||
<li><a href="https://faragon.github.io/libsrt.html">libsrt</a> - Soft
|
||
and hard real-time data structures. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a>.</li>
|
||
<li><a href="https://github.com/nbulischeck/list.h">list.h</a> -
|
||
Implementations for singly linked and doubly linked list functions. <a
|
||
href="https://spdx.org/licenses/GPL-3.0-only.html"><code>GPL-3.0-only</code></a></li>
|
||
<li><a href="https://github.com/P-p-H-d/mlib">M*LIB</a> - Library for
|
||
generic, but typesafe C containers. Implemented as header-only. <a
|
||
href="https://spdx.org/licenses/BSD-2-Clause.html"><code>BSD-2-Clause</code></a></li>
|
||
<li><a href="https://github.com/theck01/offbrand_lib">offbrand</a> -
|
||
Collection of generic, reference-counted data structures. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/gpakosz/PackedArray">PackedArray</a> -
|
||
Random-access array of tightly packed unsigned integers of any desired
|
||
width. Has a SIMD-optimized implementation. <a
|
||
href="https://spdx.org/licenses/WTFPL.html"><code>WTFPL</code></a></li>
|
||
<li><a href="http://jstimpfle.de/projects/rb3ptr/rb3ptr.html">rb3ptr</a>
|
||
- Red-Black tree. Exposes almost all implementation primitives, so can
|
||
be used for scenarios like augmentation, multiple compatible ordering
|
||
functions, and more. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="http://troydhanson.github.io/uthash/">uthash</a> -
|
||
Single-file hash table implementation. <a
|
||
href="https://spdx.org/licenses/BSD-1-Clause.html"><code>BSD-1-Clause</code></a></li>
|
||
<li><a href="https://github.com/swenson/vector.h">vector.h</a> - Header
|
||
library for typed lists. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
</ul>
|
||
<h2 id="debugging">Debugging</h2>
|
||
<p>Because we all have to do it sometimes. Various tools for making
|
||
debugging easier or better, as well as libraries or code that allows
|
||
better debugging work.</p>
|
||
<ul>
|
||
<li><a href="https://embed.cs.utah.edu/creduce/">C-Reduce</a> - Tool
|
||
that takes a large C file with a property of interest and automatically
|
||
produces a much smaller C file that has the same property. Intended to
|
||
help create minimal bug-demonstrating cases in complex code. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="https://www.cprover.org/cbmc/">CBMC</a> - C Bounded Model
|
||
Checker; a tool for verification of array bounds, pointer safety and
|
||
user-specified assertions. <a
|
||
href="https://spdx.org/licenses/BSD-4-Clause.html"><code>BSD-4-Clause</code></a></li>
|
||
<li><a href="http://www.gnu.org/software/cflow/">cflow</a> - Analyzes a
|
||
collection of source files and prints a graph charting control flow in
|
||
the program. <a
|
||
href="https://spdx.org/licenses/GPL-3.0-or-later.html"><code>GPL-3.0-or-later</code></a></li>
|
||
<li><a href="https://www.gnu.org/software/complexity/">Complexity</a> -
|
||
Tool for measuring the complexity of source code. <a
|
||
href="https://spdx.org/licenses/GPL-3.0-or-later.html"><code>GPL-3.0-or-later</code></a></li>
|
||
<li><a href="https://www.spinellis.gr/cscout/">CScout</a> - Source code
|
||
analyzer and refactoring browser for C programs. <a
|
||
href="https://spdx.org/licenses/GPL-3.0-only.html"><code>GPL-3.0-only</code></a></li>
|
||
<li><a href="https://www.gnu.org/software/ddd/ddd.html">DDD</a> -
|
||
Graphical front-end for a range of command-line debuggers. <a
|
||
href="https://spdx.org/licenses/GPL-3.0-or-later.html"><code>GPL-3.0-or-later</code></a></li>
|
||
<li><a href="https://github.com/esneider/debug">debug</a> - One-header
|
||
library for easier ‘printf debugging’. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="http://esbmc.org/">ESBMC</a> - Efficient SMT-based Bounded
|
||
Model Checker; a tool for verification of single and multithread
|
||
programs, user assertions, overflow, and pointer/memory safety. <a
|
||
href="https://spdx.org/licenses/Apache-2.0.html"><code>Apache-2.0</code></a></li>
|
||
<li><a href="https://www.gnu.org/software/gdb/">GDB</a> - GNU Project
|
||
debugger. <a
|
||
href="https://spdx.org/licenses/GPL-3.0-or-later.html"><code>GPL-3.0-or-later</code></a></li>
|
||
<li><a href="https://lldb.llvm.org/">lldb</a> - LLVM debugger. <a
|
||
href="https://spdx.org/licenses/NCSA.html"><code>NCSA</code></a></li>
|
||
<li><a href="https://rr-project.org/">rr</a> - Debugger that records
|
||
non-deterministic executions to allow for deterministic debugging. <a
|
||
href="https://spdx.org/licenses/BSD-2-Clause.html"><code>BSD-2-Clause</code></a></li>
|
||
<li><a href="http://www.valgrind.org/">Valgrind</a> - Range of dynamic
|
||
analysis tools, including a leak checker. <a
|
||
href="https://spdx.org/licenses/GPL-2.0-only.html"><code>GPL-2.0-only</code></a></li>
|
||
</ul>
|
||
<h2 id="documentation-generation">Documentation Generation</h2>
|
||
<ul>
|
||
<li><a href="http://www.gedanken.org.uk/software/cxref/">Cxref</a> -
|
||
Generates documentation in either LaTeX, HTML, RTF or SGML. <a
|
||
href="https://spdx.org/licenses/GPL-2.0-only.html"><code>GPL-2.0-only</code></a></li>
|
||
<li><a
|
||
href="https://hplgit.github.io/doconce/doc/web/index.html">DocOnce</a> -
|
||
Modestly tagged markup language that can be used to generate a range of
|
||
formats. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="http://www.doxygen.nl/">Doxygen</a> - De-facto standard
|
||
tool for generating documentation from annotated sources. Can generate a
|
||
large range of formats. <a
|
||
href="https://spdx.org/licenses/GPL-2.0-only.html"><code>GPL-2.0-only</code></a></li>
|
||
</ul>
|
||
<h2 id="editors">Editors</h2>
|
||
<p>Fancier, IDE-type editors. If you want a programmer’s text editor,
|
||
look elsewhere. Besides, whatever you use most likely supports C
|
||
anyway.</p>
|
||
<ul>
|
||
<li><a href="http://anjuta.org/">Anjuta DevStudio</a> - GNOME IDE. <a
|
||
href="https://spdx.org/licenses/GPL-2.0-only.html"><code>GPL-2.0-only</code></a></li>
|
||
<li><a href="http://www.codeblocks.org/">Code::Blocks</a> - Extendable,
|
||
configurable IDE supporting C. <a
|
||
href="https://spdx.org/licenses/GPL-3.0-only.html"><code>GPL-3.0-only</code></a></li>
|
||
<li><a href="https://www.codelite.org/">CodeLite</a> - Cross-platform
|
||
IDE. <a
|
||
href="https://spdx.org/licenses/GPL-2.0-only.html"><code>GPL-2.0-only</code></a></li>
|
||
<li><a href="https://www.geany.org/">Geany</a> - Small and fast IDE. <a
|
||
href="https://spdx.org/licenses/GPL-2.0-or-later.html"><code>GPL-2.0-or-later</code></a></li>
|
||
<li><a href="https://www.kdevelop.org/">KDevelop</a> - KDE IDE. <a
|
||
href="https://spdx.org/licenses/GPL-2.0-only.html"><code>GPL-2.0-only</code></a></li>
|
||
<li><a href="http://zinjai.sourceforge.net/">zinjaI</a> - Simple,
|
||
lightweight and feature-rich IDE. <a
|
||
href="https://spdx.org/licenses/GPL-3.0-only.html"><code>GPL-3.0-only</code></a></li>
|
||
</ul>
|
||
<h2 id="embeddable-scripting-engines">Embeddable Scripting Engines</h2>
|
||
<p>When C isn’t the right solution, or when you need a more dynamic
|
||
configration engine:</p>
|
||
<ul>
|
||
<li><a href="https://duktape.org/">Duktape</a> - Embeddable Javascript
|
||
engine with a focus on portability and compact footprint <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a>.</li>
|
||
<li><a href="https://github.com/metacall/core">MetaCall</a> -
|
||
Cross-platform Polyglot Runtime which supports NodeJS, JavaScript,
|
||
TypeScript, Python, Ruby, C#, Wasm, Java, Cobol and more. <a
|
||
href="https://spdx.org/licenses/Apache-2.0.html"><code>Apache-2.0</code></a></li>
|
||
</ul>
|
||
<h2 id="frameworks">Frameworks</h2>
|
||
<p>Big libraries that provide data structures and other stuff you expect
|
||
of a ‘modern’ standard library.</p>
|
||
<ul>
|
||
<li><a href="http://apr.apache.org/">APR</a> - Apache Portable Runtime;
|
||
another library of cross-platform utility functions. <a
|
||
href="https://spdx.org/licenses/Apache-2.0.html"><code>Apache-2.0</code></a></li>
|
||
<li><a href="https://fragglet.github.io/c-algorithms">C Algorithms</a> -
|
||
Collection of common algorithms and data structures. <a
|
||
href="https://spdx.org/licenses/ISC.html"><code>ISC</code></a></li>
|
||
<li><a href="http://www.eso.org/sci/software/cpl/">CPL</a> - The Common
|
||
Pipeline Library; a set of libraries designed to be a comprehensive,
|
||
efficient and robust software toolkit. <a
|
||
href="https://spdx.org/licenses/GPL-2.0-only.html"><code>GPL-2.0-only</code></a></li>
|
||
<li><a href="https://www.enlightenment.org">EFL</a> - Large collection
|
||
of useful data structures and functions. Various licenses, all open
|
||
source.</li>
|
||
<li><a href="https://wiki.gnome.org/Projects/GLib">GLib</a> - Library of
|
||
utility functions and structures, designed to be portable, efficient and
|
||
powerful. <a
|
||
href="https://spdx.org/licenses/LGPL-2.1-only.html"><code>LGPL-2.1-only</code></a></li>
|
||
<li><a href="http://attractivechaos.github.io/klib/#About">klib</a> -
|
||
Small and lightweight implementations of common algorithms and data
|
||
structures. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="http://libcork.readthedocs.io/en/0.14.0/">libcork</a> -
|
||
Utility functions and structures, designed for resource-constrained
|
||
systems. Can be embedded. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="https://github.com/keybuk/libnih">libnih</a> - Lightweight
|
||
library of functions and structures. <a
|
||
href="https://spdx.org/licenses/GPL-2.0-only.html"><code>GPL-2.0-only</code></a></li>
|
||
<li><a href="http://www.koanlogic.com/libu/">libU</a> - Small library of
|
||
basic utilities, including memory allocation, string manipulation and
|
||
logging. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="http://www.mission-base.com/peter/source/">PBL</a> - Large
|
||
library of utilities, featuring data structures, among other things. <a
|
||
href="https://spdx.org/licenses/LGPL-2.1-or-later.html"><code>LGPL-2.1-or-later</code></a></li>
|
||
<li><a href="https://github.com/saprykin/plibsys">plibsys</a> -
|
||
Cross-platform system C library. Zero third-party dependencies, uses
|
||
only native system calls. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="http://wolkykim.github.io/qlibc">qlibc</a> - Simple and
|
||
powerful library, designed as a replacement for GLib while focusing on
|
||
being small and light. <a
|
||
href="https://spdx.org/licenses/BSD-2-Clause.html"><code>BSD-2-Clause</code></a></li>
|
||
<li><a href="https://github.com/tezc/sc">sc</a> - Common libraries and
|
||
data structures for C. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/waruqi/tbox">TBOX</a> - Multi-platform
|
||
library with a large number of capabilities. <a
|
||
href="https://spdx.org/licenses/Apache-2.0.html"><code>Apache-2.0</code></a></li>
|
||
<li><a href="https://github.com/pspdev/pspsdk">pspsdk</a> - An
|
||
open-source SDK for PSP homebrew development. <a
|
||
href="https://github.com/pspdev/pspsdk/blob/master/LICENSE">Various
|
||
licences</a>.</li>
|
||
</ul>
|
||
<h2 id="game-programming">Game Programming</h2>
|
||
<p>Engines, libraries and other helpful things specifically for making
|
||
games.</p>
|
||
<ul>
|
||
<li><a href="https://liballeg.org">Allegro</a> - Cross-platform, video
|
||
game development and multimedia library. <a
|
||
href="https://spdx.org/licenses/Zlib.html"><code>Zlib</code></a></li>
|
||
<li><a href="https://github.com/recp/AssetKit">AssetKit</a> 🎨 3D asset
|
||
importer/exporter/util library based on COLLADA/glTF specs <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/tek256/astera">astera</a> - C99 Cross
|
||
Platform 2D Game Library <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/recp/cglm">cglm</a> - 📽 Optimized
|
||
OpenGL/Graphics Math (glm) for C. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="http://chipmunk-physics.net">Chipmunk2D</a> - Fast and
|
||
lightweight 2D game physics library. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/recp/cmt">cmt</a> - 🎮 C
|
||
Bindings/Wrappers for Apple’s METAL Graphics Framework. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/orangeduck/Corange">Corange</a> - Game
|
||
engine in pure C. <a
|
||
href="https://spdx.org/licenses/BSD-2-Clause.html"><code>BSD-2-Clause</code></a></li>
|
||
<li><a href="https://www.sfml-dev.org/download/csfml/">CSFML</a> -
|
||
Binding for <a href="https://www.sfml-dev.org/index.php">SFML</a>. <a
|
||
href="https://spdx.org/licenses/Zlib.html"><code>Zlib</code></a></li>
|
||
<li><a href="https://icculus.org/twilight/darkplaces/">Darkplaces</a> -
|
||
Modified version of the Quake2 engine. <a
|
||
href="https://spdx.org/licenses/GPL-2.0-only.html"><code>GPL-2.0-only</code></a></li>
|
||
<li><a href="https://github.com/anholt/libepoxy">Epoxy</a> - Library for
|
||
handling OpenGL function pointer management. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/solenum/exengine">exengine</a> - 3D game
|
||
engine in C99 with a starting template. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/SanderMertens/flecs">Flecs</a> - A
|
||
Multithreaded Entity Component System written for C89 & C99 <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/shlomif/fc-solve">Freecell Solver</a> -
|
||
Set of libraries and command-line programs for automatically solving
|
||
FreeCell and some similar variants of card Solitaire. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="http://freeglut.sourceforge.net">FreeGLUT</a> - Alternative
|
||
to the OpenGL Utility Toolkit. Allows the creation and management of
|
||
windows with OpenGL contexts. <a
|
||
href="https://spdx.org/licenses/X11.html"><code>X11</code></a></li>
|
||
<li><a href="https://www.glfw.org/">GLFW</a> - Multi-platform library
|
||
for creating windows with OpenGL contexts. <a
|
||
href="https://spdx.org/licenses/Zlib.html"><code>Zlib</code></a></li>
|
||
<li><a href="https://ioquake3.org">ioquake3</a> - Quake3 engine, freed
|
||
at last. <a
|
||
href="https://spdx.org/licenses/GPL-2.0-only.html"><code>GPL-2.0-only</code></a></li>
|
||
<li><a href="https://github.com/Kazade/kazmath">kazmath</a> - Maths
|
||
library for games. <a
|
||
href="https://spdx.org/licenses/BSD-2-Clause.html"><code>BSD-2-Clause</code></a></li>
|
||
<li><a href="https://xiph.org/ao/">libao</a> - Cross-platform audio
|
||
library with a wide variety of outputs. <a
|
||
href="https://spdx.org/licenses/GPL-2.0-or-later.html"><code>GPL-2.0-or-later</code></a></li>
|
||
<li><a href="https://github.com/librg/librg">librg</a> - Pure C99 game
|
||
networking library for building simple and elegant cross-platform
|
||
multiplayer client-server solutions. <a
|
||
href="https://spdx.org/licenses/Apache-2.0.html"><code>Apache-2.0</code></a></li>
|
||
<li><a href="https://github.com/ferreiradaselva/mathc">MATHC</a> - Math
|
||
library for 2D and 3D programming. <a
|
||
href="https://spdx.org/licenses/Zlib.html"><code>ZLib</code></a></li>
|
||
<li><a href="http://orx-project.org">Orx</a> - Portable, lightweight,
|
||
plugin-based, data-driven, 2D-oriented game engine. <a
|
||
href="https://spdx.org/licenses/Zlib.html"><code>Zlib</code></a></li>
|
||
<li><a href="https://github.com/id-Software/Quake">Quake</a> - Quake
|
||
engine. <a
|
||
href="https://spdx.org/licenses/GPL-2.0-only.html"><code>GPL-2.0-only</code></a></li>
|
||
<li><a href="https://github.com/id-Software/Quake-2">Quake2</a> - Quake2
|
||
engine. <a
|
||
href="https://spdx.org/licenses/GPL-2.0-only.html"><code>GPL-2.0-only</code></a></li>
|
||
<li><a href="https://www.raylib.com">raylib</a> - Simple and easy-to-use
|
||
library to learn video game programming. <a
|
||
href="https://spdx.org/licenses/Zlib.html"><code>Zlib</code></a></li>
|
||
<li><a href="https://github.com/libretro/RetroArch">RetroArch</a> -
|
||
Reference frontend for <a href="https://www.libretro.com/">libretro</a>.
|
||
<a
|
||
href="https://spdx.org/licenses/GPL-3.0-only.html"><code>GPL-3.0-only</code></a></li>
|
||
<li><a href="https://www.libsdl.org/">SDL2</a> - Cross-platform library
|
||
designed to provide low-level access to audio, keyboard, mouse, joystick
|
||
and graphics hardware via OpenGL. <a
|
||
href="https://spdx.org/licenses/Zlib.html"><code>Zlib</code></a></li>
|
||
<li><a href="https://github.com/grimfang4/sdl-gpu">sdl-gpu</a> - Library
|
||
for high-performance, modern 2D graphics. Based on SDL. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="http://www.libsigil.com/">SIGIL</a> - Sound, Input and
|
||
Graphics Integration Library; a simple alternative to other libraries
|
||
for doing all those things. Various licenses, all open source.</li>
|
||
<li><a href="https://github.com/ferreiradaselva/uastar">uastar</a> -
|
||
Minimal A* implementation. <a
|
||
href="https://spdx.org/licenses/Zlib.html"><code>ZLib</code></a></li>
|
||
</ul>
|
||
<h2 id="graphics">Graphics</h2>
|
||
<p>Programmatic manipulation of graphics in C; if you want to make a
|
||
GUI, the Graphical User Interface section has what you need.</p>
|
||
<ul>
|
||
<li><a href="https://github.com/recp/AssetKit">AssetKit</a> 🎨 3D asset
|
||
importer/exporter/util library based on COLLADA/glTF specs <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="http://cairographics.org/">Cairo</a> - 2D graphics library.
|
||
<a
|
||
href="https://spdx.org/licenses/LGPL-2.1-only.html"><code>LGPL-2.1-only</code></a>
|
||
or <a
|
||
href="https://spdx.org/licenses/MPL-1.1.html"><code>MPL-1.1</code></a>.</li>
|
||
<li><a href="https://github.com/recp/cmt">cmt</a> - 🎮 C
|
||
Bindings/Wrappers for Apple’s METAL Graphics Framework. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://sourceforge.net/projects/giflib/">giflib</a> -
|
||
Library for reading and writing gif images. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="http://ebassi.github.io/graphene/">graphene</a> - Thin
|
||
layer of graphical data types. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/prideout/heman">heman</a> - Tiny library
|
||
of image utilities dealing with height maps, normal maps, distance
|
||
fields and the like. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/cacalabs/libcaca">libcaca</a> - ASCII
|
||
renderer for terminal-based interfaces. <a
|
||
href="https://spdx.org/licenses/WTFPL.html"><code>WTFPL</code></a></li>
|
||
<li><a href="https://github.com/libgd/libgd">libgd</a> - Library for the
|
||
dynamic creation of images by programmers. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://pngquant.org/lib/">libimagequant</a> - Small,
|
||
portable library for high-quality conversion of RGBA images to 8-bit
|
||
indexed colour images. <a
|
||
href="https://spdx.org/licenses/GPL-3.0-or-later.html"><code>GPL-3.0-or-later</code></a></li>
|
||
<li><a href="https://libjpeg-turbo.virtualgl.org/">libjpeg-turbo</a> -
|
||
Faster library for reading and writing JPEG files. <a
|
||
href="https://www.libjpeg-turbo.org/About/License">Various
|
||
licences</a>.</li>
|
||
<li><a href="http://www.libpng.org/">libpng</a> - Official PNG reference
|
||
library. <a
|
||
href="https://spdx.org/licenses/Libpng.html"><code>Libpng</code></a></li>
|
||
<li><a
|
||
href="https://wiki.gnome.org/action/show/Projects/LibRsvg?action=show&redirect=LibRsvg">libRSVG</a>
|
||
- Library to render SVG files using Cairo. <a
|
||
href="https://spdx.org/licenses/LGPL-2.1-or-later.html"><code>LGPL-2.1-or-later</code></a></li>
|
||
<li><a href="https://github.com/saitoha/libsixel">libsixel</a> - Library
|
||
implementing the SIXEL protocol, allowing beautiful graphics in your
|
||
terminal. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://libspng.org/">libspng</a> - A simpler interface for
|
||
reading and writing PNG files. <a
|
||
href="https://spdx.org/licenses/BSD-2-Clause.html"><code>BSD-2-Clause</code></a></li>
|
||
<li><a href="https://libvips.github.io/libvips/">libvips</a> - Image
|
||
processing library. <a
|
||
href="https://spdx.org/licenses/LGPL-2.1-or-later.html"><code>LGPL-2.1-or-later</code></a></li>
|
||
<li><a href="https://gnu.org/software/libxmi/">libxmi</a> - Function
|
||
library for rasterizing 2D vector graphics. <a
|
||
href="https://spdx.org/licenses/GPL-3.0-or-later.html"><code>GPL-3.0-or-later</code></a></li>
|
||
<li><a href="https://github.com/ands/lightmapper">lightmapper</a> -
|
||
Single-file library for lightmap baking, using an existing OpenGL
|
||
renderer. Public domain.</li>
|
||
<li><a href="www.littlecms.com">little CMS</a> - A Color Management
|
||
System. It provides fast transforms between ICC profiles. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/mozilla/mozjpeg">mozjpeg</a> - Improved
|
||
JPEG encoder. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="https://github.com/memononen/nanovg">nanovg</a> -
|
||
Anti-aliased 2D vector drawing library on top of OpenGL, for UI and
|
||
visualizations. <a
|
||
href="https://spdx.org/licenses/Zlib.html"><code>Zlib</code></a></li>
|
||
<li><a href="https://www.opengl.org/">OpenGL</a> - Industry standard for
|
||
high-performance graphics, with a native C binding. <a
|
||
href="http://www.sgi.com/tech/opengl/?/license.html">Various
|
||
licenses</a>.</li>
|
||
<li><a href="https://github.com/sammycage/plutovg">PlutoVG</a> - A
|
||
standalone 2D vector graphics library in C <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://sigrok.org/wiki/Libsigrok">SAIL</a> - ⛵ The
|
||
missing small and fast image decoding library for humans (not for
|
||
machines) <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
</ul>
|
||
<h2 id="graphical-user-interface">Graphical User Interface</h2>
|
||
<p>Widget toolkits, or things meant to be used in a similar way to
|
||
them.</p>
|
||
<ul>
|
||
<li><a href="https://www.gtk.org/">GTK+</a> - Cross-platform widget
|
||
toolkit. <a
|
||
href="https://spdx.org/licenses/LGPL-2.1-only.html"><code>LGPL-2.1-only</code></a></li>
|
||
<li><a href="http://webserver2.tecgraf.puc-rio.br/iup/">IUP</a> -
|
||
Another cross-platform widget toolkit. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/rxi/microui">microui</a> - Tiny
|
||
immediate-mode UI library written in portable ANSI C. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/Immediate-Mode-UI/Nuklear">nuklear</a> -
|
||
Small, C89, single-header widget toolkit. Public domain.</li>
|
||
<li><a
|
||
href="https://sourceforge.net/projects/tinyfiledialogs/">tinyfiledialogs</a>
|
||
- Single-file library for simple dialogs. Compatible with many other
|
||
toolkits and OSes. <a
|
||
href="https://spdx.org/licenses/Zlib.html"><code>Zlib</code></a></li>
|
||
<li><a href="http://www.tcl.tk/">Tk</a> - Basic widget toolkit. Part of
|
||
Tcl/Tk. <a
|
||
href="https://spdx.org/licenses/TCL.html"><code>TCL</code></a></li>
|
||
<li><a href="http://xforms-toolkit.org/">XForms Toolkit</a> - Widget
|
||
toolkit designed for the XWindow system. <a
|
||
href="https://spdx.org/licenses/LGPL-2.1-only.html"><code>LGPL-2.1-only</code></a></li>
|
||
<li><a href="https://lvgl.io/">LVGL</a> - embedded GUI with easy-to-use
|
||
graphical elements, beautiful visuals and a low memory footprint. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/nakst/luigi">luigi</a> - A barebones
|
||
single-header GUI library for Win32, X11 and Essence. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
</ul>
|
||
<h2 id="hashing">Hashing</h2>
|
||
<p>Hash function implementations for <em>non</em>-crypto purposes.
|
||
Cryptographic hashes can be found in the Crypto section.</p>
|
||
<ul>
|
||
<li><a href="https://github.com/lemire/clhash">CLHash</a> - Library
|
||
implementing the ridiculously fast CLHash hashing function. Only works
|
||
on Intel Haswell or newer. <a
|
||
href="https://spdx.org/licenses/Apache-2.0.html"><code>Apache-2.0</code></a></li>
|
||
<li><a href="https://github.com/google/highwayhash">HighwayHash</a> -
|
||
Fast, strong, SIMD-using hash function. Also contains an implementation
|
||
of SipHash (although this is slower). <a
|
||
href="https://spdx.org/licenses/Apache-2.0.html"><code>Apache-2.0</code></a></li>
|
||
<li><a href="https://github.com/centaurean/spookyhash">SpookyHash</a> -
|
||
Extremely fast hash function. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="https://github.com/leo-yuriev/t1ha">t1ha</a> - Fast
|
||
Positive Hash - a portable, fast hash function. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="http://cyan4973.github.io/xxHash">xxHash</a> - Extremely
|
||
fast hashing algorithm. Comes in 32 and 64-bit varieties. <a
|
||
href="https://spdx.org/licenses/BSD-2-Clause.html"><code>BSD-2-Clause</code></a></li>
|
||
</ul>
|
||
<h2 id="learning-reference-and-tutorials">Learning, Reference and
|
||
Tutorials</h2>
|
||
<p>Resources for learning C programming in general, or something useful
|
||
relating to C programming.</p>
|
||
<h3 id="reference-resources-online">Reference resources online</h3>
|
||
<ul>
|
||
<li><a
|
||
href="https://locklessinc.com/benchmarks_allocator.shtml">Benchmarks of
|
||
the Lockless Memory Allocator</a></li>
|
||
<li><a href="http://c-faq.com/">C FAQ - comp.lang.c Frequently Asked
|
||
Questions</a></li>
|
||
<li><a href="http://www.etalabs.net/compare_libcs.html">Comparison of
|
||
C/POSIX standard library implementations for Linux</a></li>
|
||
<li><a href="https://port70.net/~nsz/c/c89/c89-draft.html">Draft C89
|
||
standard</a></li>
|
||
<li><a href="https://port70.net/~nsz/c/c99/n1256.html">Draft C99
|
||
standard</a></li>
|
||
<li><a href="https://port70.net/~nsz/c/c11/n1570.html">Draft C11
|
||
standard</a></li>
|
||
<li><a href="http://nullprogram.com/blog/2017/09/21/">Finding the best
|
||
64-bit simulation PRNG</a></li>
|
||
<li><a
|
||
href="https://wiki.sei.cmu.edu/confluence/display/c/SEI+CERT+C+Coding+Standard">SEI
|
||
CERT C Coding Standard</a></li>
|
||
<li><a href="https://github.com/superjer/tinyc.games">tinyc.game</a> -
|
||
Tiny C games you can compile and run RIGHT NOW http://tinyc.games <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
</ul>
|
||
<h3 id="beginner-resources-online">Beginner resources online</h3>
|
||
<ul>
|
||
<li><a
|
||
href="https://pdos.csail.mit.edu/6.828/2017/readings/pointers.pdf">A
|
||
tutorial on pointers</a></li>
|
||
<li><a href="http://nullprogram.com/blog/2017/08/20/">A tutorial on
|
||
portable Makefiles</a></li>
|
||
<li><a href="http://nethack4.org/blog/building-c.html">Building C
|
||
Projects</a></li>
|
||
<li><a href="https://en.wikibooks.org/wiki/C_Programming">C Programming
|
||
Wikibook</a></li>
|
||
<li><a
|
||
href="https://gist.github.com/eatonphil/21b3d6569f24ad164365">Introduction
|
||
to `fun’ C</a></li>
|
||
<li><a
|
||
href="https://www.recurse.com/blog/5-learning-c-with-gdb">Learning C
|
||
with GDB</a></li>
|
||
<li><a
|
||
href="https://web.archive.org/web/20170620131430/https://www.tedunangst.com/flak/post/memcpy-vs-memmove">memcpy
|
||
vs memmove</a></li>
|
||
<li><a href="https://computing.llnl.gov/tutorials/pthreads/">POSIX
|
||
Threads Programming tutorial</a> (a little dated, but most of it is
|
||
still valid and useful)</li>
|
||
<li><a href="http://www.crasseux.com/books/ctut.pdf">The GNU C
|
||
Programming Tutorial</a> (online PDF)</li>
|
||
<li><a href="http://blog.pkh.me/p/20-templating-in-c.html">Templating in
|
||
C</a></li>
|
||
<li><a href="https://marek.vavrusa.com/memory/">What a C programmer
|
||
should know about memory</a></li>
|
||
<li><a
|
||
href="https://codeforwin.org/2015/09/singly-linked-list-data-structure-in-c.html">CodeforWin:
|
||
Learn C Programming, Data Structures Tutorials and Exercises
|
||
online</a></li>
|
||
<li><a href="https://www.learn-c.org">Learn C: Free and Open-Source
|
||
Interactive C Tutorial</a></li>
|
||
<li><a href="https://github.com/helderman/htpataic">How to program a
|
||
text adventure in C</a></li>
|
||
</ul>
|
||
<h3 id="intermediate-resources-online">Intermediate resources
|
||
online</h3>
|
||
<ul>
|
||
<li><a
|
||
href="https://blogs.oracle.com/linux/8-gdb-tricks-you-should-know-v2">8
|
||
gdb tricks you should know</a></li>
|
||
<li><a href="http://blog.noctua-software.com/c-tricks.html">10 C99
|
||
tricks</a></li>
|
||
<li><a href="http://mpitutorial.com/">A comprehensive MPI tutorial
|
||
resource</a></li>
|
||
<li><a href="https://viewsourcecode.org/snaptoken/kilo/">Build Your Own
|
||
Text Editor</a></li>
|
||
<li><a href="https://jvns.ca/blog/2014/12/14/fun-with-threads/">Diving
|
||
into concurrency: trying out mutexes and atomics</a></li>
|
||
<li><a href="https://nullprogram.com/blog/2015/02/17">Generic C
|
||
reference counting</a></li>
|
||
<li><a href="https://nullprogram.com/blog/2017/03/30">How to write
|
||
portable C without complicating your build</a></li>
|
||
<li><a
|
||
href="https://www.youtube.com/playlist?list=PLLX-Q6B8xqZ8n8bwjGdzBJ25X2utwnoEG">Introduction
|
||
to OpenMP</a> (video)</li>
|
||
<li><a href="https://computing.llnl.gov/tutorials/openMP/">OpenMP
|
||
tutorial</a> (for the OpenMP3 standard)</li>
|
||
<li><a href="https://computing.llnl.gov/tutorials/mpi/">MPI
|
||
tutorial</a></li>
|
||
<li><a
|
||
href="https://hintjens.gitbooks.io/scalable-c/content/index.html">Scalable
|
||
C - Writing Large-Scale Distributed C</a></li>
|
||
<li><a
|
||
href="https://proprogramming.org/some-unknown-features-or-tricks-in-c-language/">Some
|
||
unknown features or tricks in C language</a></li>
|
||
<li><a
|
||
href="http://blog.llvm.org/2011/05/what-every-c-programmer-should-know.html">What
|
||
every C programmer should know about undefined behaviour</a></li>
|
||
</ul>
|
||
<h3 id="advanced-resources-online">Advanced resources online</h3>
|
||
<ul>
|
||
<li><a href="http://250bpm.com/blog:56">Advanced metaprogramming in
|
||
C</a></li>
|
||
<li><a href="http://danluu.com/malloc-tutorial/">A quick tutorial on
|
||
implementing and debugging malloc, free, calloc, and realloc</a></li>
|
||
<li><a href="https://graphics.stanford.edu/~seander/bithacks.html">Bit
|
||
twiddling hacks</a></li>
|
||
<li><a href="http://snaipe.me/c/c-smart-pointers/">Implementing smart
|
||
pointers for the C programming language</a></li>
|
||
<li><a href="http://www.greenend.org.uk/rjk/tech/inline.html">Inline
|
||
functions in C</a></li>
|
||
<li><a
|
||
href="https://www.chiark.greenend.org.uk/~sgtatham/mp/">Metaprogramming
|
||
custom control structures in C</a></li>
|
||
<li><a
|
||
href="https://web.archive.org/web/20170429175803/http://www.samnip.ps/thought/macro-storage-for-inverse-comma">Solving
|
||
the temporary storage problem of C macros</a></li>
|
||
<li><a
|
||
href="https://docs.google.com/presentation/d/1h49gY3TSiayLMXYmRMaAEMl05FaJ-Z6jDOWOz3EsqqQ/edit?pli=1#slide=id.gaf50702c_0153">Some
|
||
dark corners of C</a></li>
|
||
<li><a
|
||
href="https://www.codeproject.com/Articles/6154/Writing-Efficient-C-and-C-Code-Optimization">Writing
|
||
efficient C and C code optimization</a></li>
|
||
<li><a
|
||
href="https://hirrolot.github.io/posts/compiling-algebraic-data-types-in-pure-c99.html">Compiling
|
||
Algebraic Data Types in Pure C99</a></li>
|
||
</ul>
|
||
<h3 id="reference-books">Reference books</h3>
|
||
<ul>
|
||
<li><a
|
||
href="https://savedparadigms.files.wordpress.com/2014/09/harbison-s-p-steele-g-l-c-a-reference-manual-5th-ed.pdf">C:
|
||
A Reference Manual 5E</a> - Full reference book for C99.</li>
|
||
<li><a href="http://shop.oreilly.com/product/0636920033844.do">C in a
|
||
Nutshell 2E</a> - Concise reference book for C11.</li>
|
||
<li><a href="http://shop.oreilly.com/product/9780596004361.do">C Pocket
|
||
Reference</a> - Concise reference book for C99.</li>
|
||
<li><a
|
||
href="https://en.wikipedia.org/wiki/The_C_Programming_Language">The C
|
||
Programming Language 2E</a> - Original book on C, by its creators.</li>
|
||
</ul>
|
||
<h3 id="beginner-books">Beginner books</h3>
|
||
<ul>
|
||
<li><a
|
||
href="https://www.pearson.com/us/higher-education/program/Prata-C-Primer-Plus-6th-Edition/PGM4399.html">C
|
||
Primer Plus 6E</a> - Complete tutorial on programming in C11.</li>
|
||
<li><a href="http://knking.com/books/c2/index.html">C Programming: A
|
||
Modern Approach</a> - Excellent book to learn the basics of C.</li>
|
||
<li><a href="http://shop.oreilly.com/product/0636920015482.do">Head
|
||
First C</a> - ‘Head-first’ style book for learning C.</li>
|
||
</ul>
|
||
<h3 id="intermediate-books">Intermediate books</h3>
|
||
<ul>
|
||
<li><a href="http://shop.oreilly.com/product/0636920033677.do">21st
|
||
Century C</a> - Good <em>second</em> programming book on C.</li>
|
||
<li><a
|
||
href="http://shop.oreilly.com/product/0636920028000.do">Understanding
|
||
and Using C Pointers</a> - In-depth resource on pointers in
|
||
<ol start="3" type="A">
|
||
<li></li>
|
||
</ol></li>
|
||
<li><a
|
||
href="http://shop.oreilly.com/product/0636920026136.do">ZeroMQ</a> -
|
||
Book for using ZeroMQ with C.</li>
|
||
</ul>
|
||
<h3 id="advanced-books">Advanced books</h3>
|
||
<ul>
|
||
<li><a href="https://dl.acm.org/citation.cfm?id=179241">Expert C
|
||
Programming: Deep C Secrets</a> - Interesting, in-depth and entertaining
|
||
look at the innards of C.</li>
|
||
<li><a href="http://savannah.nongnu.org/projects/attr/">Modern C, Third
|
||
Edition: Covers the C23 standard</a> - In Modern C, Third Edition you’ll
|
||
learn to harness C’s full potential using the latest tools and
|
||
techniques.</li>
|
||
</ul>
|
||
<h2 id="lexing-and-parsing">Lexing and Parsing</h2>
|
||
<p>Libraries specifically for lexical analysis (or lexing) and syntactic
|
||
analysis (or parsing).</p>
|
||
<ul>
|
||
<li><a href="https://github.com/westes/flex">flex</a> - Fast lexical
|
||
analyzer generator. <a
|
||
href="https://spdx.org/licenses/BSD-2-Clause.html"><code>BSD-2-Clause</code></a></li>
|
||
<li><a href="https://www.gnu.org/software/bison/">GNU Bison</a> -
|
||
General-purpose parser generator that converts an annotated context-free
|
||
grammar into a range of parsers. <a
|
||
href="https://spdx.org/licenses/GPL-3.0-or-later.html"><code>GPL-3.0-or-later</code></a></li>
|
||
<li><a href="https://github.com/abiggerhammer/hammer">hammer</a> -
|
||
Parser combinators for binary formats. <a
|
||
href="https://spdx.org/licenses/GPL-2.0-only.html"><code>GPL-2.0-only</code></a></li>
|
||
<li><a href="https://github.com/orangeduck/mpc">mpc</a> - Parser
|
||
combinator library. <a
|
||
href="https://spdx.org/licenses/BSD-2-Clause.html"><code>BSD-2-Clause</code></a></li>
|
||
<li><a href="https://github.com/ianh/owl">owl</a> - A parser generator
|
||
for visibly pushdown languages. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="http://re2c.org/index.html">re2c</a> - Lexer generator,
|
||
producing fast lexers, with access to its internals. Public domain.</li>
|
||
</ul>
|
||
<h2 id="memory-management">Memory Management</h2>
|
||
<p>Whether a different, faster malloc or outright garbage collection,
|
||
anything to do with managing C memory lives here.</p>
|
||
<ul>
|
||
<li><a href="https://www.hboehm.info/gc/">Boehm GC</a> - Garbage
|
||
collection for C. Various licenses, all open source.</li>
|
||
<li><a href="http://jemalloc.net">jemalloc</a> - Malloc implementation
|
||
that emphasizes avoidance of fragmentation and scalable concurrency
|
||
support. <a
|
||
href="https://spdx.org/licenses/BSD-2-Clause.html"><code>BSD-2-Clause</code></a></li>
|
||
<li><a href="https://locklessinc.com/">Lockless Memory Allocator</a> -
|
||
Efficient memory allocator. <a
|
||
href="https://spdx.org/licenses/GPL-3.0-or-later.html"><code>GPL-3.0-or-later</code></a></li>
|
||
<li><a href="https://github.com/Snaipe/libcsptr">libcsptr</a> - Smart
|
||
pointers for C. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/rampantpixels/rpmalloc">rpmalloc</a> -
|
||
Thread-caching, fast memory allocator, naturally aligned on 32-byte
|
||
boundaries. Public domain.</li>
|
||
<li><a
|
||
href="https://talloc.samba.org/talloc/doc/html/index.html">talloc</a> -
|
||
Hierarchical, reference-counted memory pool system with destructors. <a
|
||
href="https://spdx.org/licenses/LGPL-3.0-or-later.html"><code>LGPL-3.0-or-later</code></a></li>
|
||
<li><a href="http://www.gii.upv.es/tlsf/">tlsf</a> - Two-Level
|
||
Segregated Fit allocator; a general-purpose, dynamic memory allocator
|
||
designed to meet real-time requirements. <a
|
||
href="https://github.com/minad/tlsf">Up-to-date implementation</a>. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
</ul>
|
||
<h2 id="multimedia">Multimedia</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/aubio/aubio">aubio</a> - Library for
|
||
audio and music analysis. <a
|
||
href="https://spdx.org/licenses/GPL-3.0-or-later.html"><code>GPL-3.0-or-later</code></a></li>
|
||
<li><a href="https://www.ffmpeg.org/">FFMPEG</a> - Complete,
|
||
cross-platform solution to record, convert and stream audio and video.
|
||
<a
|
||
href="https://spdx.org/licenses/LGPL-2.1-or-later.html"><code>LGPL-2.1-or-later</code></a></li>
|
||
<li><a href="https://gstreamer.freedesktop.org/">GStreamer</a> -
|
||
Framework for audio and visual media. <a
|
||
href="https://spdx.org/licenses/LGPL-2.1-or-later.html"><code>LGPL-2.1-or-later</code></a></li>
|
||
<li><a href="https://mpv.io">libmpv</a> - Music-playing library. <a
|
||
href="https://spdx.org/licenses/GPL-2.0-or-later.html"><code>GPL-2.0-or-later</code></a></li>
|
||
<li><a href="http://www.mega-nerd.com/libsndfile/">libsndfile</a> -
|
||
Library for reading and writing sound files. Supports many formats. <a
|
||
href="https://spdx.org/licenses/LGPL-2.1-only.html"><code>LGPL-2.1-only</code></a>
|
||
or <a
|
||
href="https://spdx.org/licenses/LGPL-3.0-only.html"><code>LGPL-3.0-only</code></a></li>
|
||
<li><a href="http://libsound.io">libsoundio</a> - Library for
|
||
cross-platform, real-time audio input and output. Has a range of
|
||
back-ends. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://wiki.videolan.org/LibVLC">libVLC</a> - Complete
|
||
multimedia library for audio and video encoding, decoding, playing and
|
||
streaming. <a
|
||
href="https://spdx.org/licenses/GPL-2.0-only.html"><code>GPL-2.0-only</code></a></li>
|
||
<li><a href="https://lodev.org/lodepng/">lodepng</a> - Simple PNG image
|
||
decoder and encoder, requiring no other dependencies. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="https://github.com/lieff/minimp3">minimp3</a> - Lightweight
|
||
MP3 decoder single header library. <a
|
||
href="https://spdx.org/licenses/CC0-1.0.html"><code>CC0-1.0</code></a></li>
|
||
<li><a
|
||
href="http://paulbatchelor.github.io/proj/soundpipe.html">Soundpipe</a>
|
||
- Lightweight music DSP library. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
</ul>
|
||
<h2 id="networking-and-internet">Networking and Internet</h2>
|
||
<p>Low-level networking and internet-related stuff. If you want
|
||
something more comprehensive and high-level, you may want the Web
|
||
Frameworks section.</p>
|
||
<ul>
|
||
<li><a href="http://lionet.info/asn1c/compiler.html">asnlc</a> -
|
||
Compiler of ASN.1 specifications into C source code. <a
|
||
href="https://spdx.org/licenses/BSD-2-Clause.html"><code>BSD-2-Clause</code></a></li>
|
||
<li><a href="https://github.com/it4e/CHL">CHL</a> - C Hypertext Library
|
||
- A library for writing web applications in C. <a
|
||
href="https://spdx.org/licenses/GPL-3.0-only.html"><code>GPL-3.0-only</code></a></li>
|
||
<li><a href="http://czmq.zeromq.org">czmq</a> - High-level binding for
|
||
ZeroMQ. <a
|
||
href="https://spdx.org/licenses/MPL-2.0.html"><code>MPL-2.0</code></a></li>
|
||
<li><a href="https://github.com/rxi/dyad">Dyad.c</a> - Lightweight,
|
||
easy, asynchronous networking library. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://www.gnu.org/software/adns/">GNU adns</a> -
|
||
Advanced, easy-to-use, asynch-capable DNS client library and utilities.
|
||
<a
|
||
href="https://spdx.org/licenses/GPL-3.0-or-later.html"><code>GPL-3.0-or-later</code></a></li>
|
||
<li><a href="https://github.com/google/gumbo-parser">gumbo-parser</a> -
|
||
HTML5 parsing library in C99. <a
|
||
href="https://spdx.org/licenses/Apache-2.0.html"><code>Apache-2.0</code></a></li>
|
||
<li><a href="https://h2o.examp1e.net/">H20</a> - A new-generation HTTP
|
||
server. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://llhttp.org">llhttp</a> - HTTP request/response
|
||
parser. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="http://www.nlnetlabs.nl/projects/ldns/index.html">ldns</a>
|
||
- Library to simplify DNS programming. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="https://curl.haxx.se/libcurl/">libcurl</a> - Client-side
|
||
URL transfer library, supporting a wide range of formats. <a
|
||
href="https://spdx.org/licenses/curl.html"><code>curl</code></a></li>
|
||
<li><a href="http://www.etpan.org">LibEtPan</a> - Mail library providing
|
||
an efficient network for IMAP, SMTP, POP and NNTP. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="http://software.schmorp.de/pkg/libev.html">libev</a> - Yet
|
||
another event loop. <a
|
||
href="https://spdx.org/licenses/BSD-2-Clause.html"><code>BSD-2-Clause</code></a></li>
|
||
<li><a href="http://libevent.org/">libevent</a> - Event loop replacement
|
||
for network servers. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="https://www.hughes.com.au/products/libhttpd/">libhttpd</a>
|
||
- Library to add basic web server capabilities to an application or
|
||
embedded device. <a
|
||
href="https://spdx.org/licenses/GPL-2.0-only.html"><code>GPL-2.0-only</code></a></li>
|
||
<li><a href="https://github.com/ithewei/libhv">libhv</a> - Cross
|
||
platform event loop library. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="https://gnu.org/software/libidn/">libidn</a> -
|
||
Implementation of the Stringprep, Punycode and IDNA specifications. <a
|
||
href="https://spdx.org/licenses/GPL-3.0-or-later.html"><code>GPL-3.0-or-later</code></a></li>
|
||
<li><a href="https://gnu.org/software/libmicrohttpd/">libmicrohttpd</a>
|
||
- Small library that makes it easy to run an HTTP server as part of
|
||
another application. <a
|
||
href="https://spdx.org/licenses/LGPL-2.1-or-later.html"><code>LGPL-2.1-or-later</code></a></li>
|
||
<li><a href="https://www.infradead.org/~tgr/libnl/">libnl</a> -
|
||
<code>libnl</code> is a collection of libraries to provie APIs to the
|
||
Netlink protocol (replacement for ioctl). It’s primary use is to
|
||
communicate with the Linux kernel, to modify networking state
|
||
(interfaces, routing etc…). <a
|
||
href="https://spdx.org/licenses/LGPL-2.1-only.html"><code>LGPL-2.1-only</code></a></li>
|
||
<li><a href="https://www.coralbits.com/libonion/">libonion</a> - HTTP
|
||
server library, designed to be easy to use. <a
|
||
href="https://spdx.org/licenses/Apache-2.0.html"><code>Apache-2.0</code></a></li>
|
||
<li><a href="https://github.com/the-tcpdump-group/libpcap">libpcap</a> -
|
||
API provides to various kernel packet capture mechanism. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a
|
||
href="http://sourceforge.net/projects/libquickmail/">libquickmail</a> -
|
||
Library intended to give developers a way to send email from their
|
||
applications. Supports multiple To/Cc/Bcc recipients and attachments
|
||
without size limits. <a
|
||
href="https://spdx.org/licenses/GPL-3.0-or-later.html"><code>GPL-3.0-or-later</code></a></li>
|
||
<li><a href="https://risoflora.github.io/libsagui/">libsagui</a> -
|
||
Library for cross-platform HTTP servers. <a
|
||
href="https://spdx.org/licenses/LGPL-3.0-or-later.html"><code>LGPL-3.0-or-later</code></a></li>
|
||
<li><a href="https://github.com/zhaojh329/libuhttpd">libuhttpd</a> - A
|
||
very flexible, lightweight and fully asynchronous HTTP server library
|
||
based on libev and http-parser for Embedded Linux. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/LibVNC/libvncserver">LibVNCServer</a> -
|
||
Cross-platform libraries to implement VNC server and/or client
|
||
functionality. <a
|
||
href="https://spdx.org/licenses/GPL-2.0-or-later.html"><code>GPL-2.0-or-later</code></a></li>
|
||
<li><a
|
||
href="https://github.com/JonnyWhatshisface/libwebsock">libwebsock</a> -
|
||
Easy-to-use and powerful web socket library. <a
|
||
href="https://spdx.org/licenses/LGPL-3.0-only.html"><code>LGPL-3.0-only</code></a></li>
|
||
<li><a href="https://github.com/zeromq/libzmq">libzmq</a> - Core ZeroMQ
|
||
library, a high-performance asynchronous messaging library, aimed at use
|
||
in distributed or concurrent applications. C API (backend C++) <a
|
||
href="https://spdx.org/licenses/GPL-3.0-or-later.html"><code>GPL-3.0-or-later</code></a>
|
||
with static linking exception</li>
|
||
<li><a href="https://lwan.ws">lwan</a> - Experimental, scalable,
|
||
high-performance HTTP server. <a
|
||
href="https://spdx.org/licenses/GPL-2.0-only.html"><code>GPL-2.0-only</code></a></li>
|
||
<li><a href="https://cesanta.com">mongoose</a> - Embedded web server. <a
|
||
href="https://spdx.org/licenses/GPL-2.0-only.html"><code>GPL-2.0-only</code></a></li>
|
||
<li><a href="https://github.com/LiamBindle/MQTT-C">MQTT-C</a> - A
|
||
portable MQTT C client for embedded systems and PCs alike. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/nanomsg/nanomsg">nanomsg</a> - C-based
|
||
implementation of ZeroMQ. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://nanomsg.github.io/nng/">NNG</a> -
|
||
nanomsg-next-generation - lightweight brokerless messaging. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://gnu.org/software/osip/">oSip</a> - SIP
|
||
implementation without additional dependencies. <a
|
||
href="https://spdx.org/licenses/LGPL-2.1-or-later.html"><code>LGPL-2.1-or-later</code></a></li>
|
||
<li><a href="https://github.com/silgy/silgy">silgy</a> - Asynchronous
|
||
HTTP(S) engine for C/C++ projects. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/silentbicycle/socket99">socket99</a> -
|
||
C99 wrapper for the BSD sockets API. <a
|
||
href="https://spdx.org/licenses/ISC.html"><code>ISC</code></a></li>
|
||
<li><a href="https://github.com/sinemetu1/twitc">twitc</a> - Mini
|
||
library for interacting with the Twitter OAuth API. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://uriparser.github.io">uriparser</a> - Strictly RFC
|
||
3986-compliant URI parsing and handling library. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="https://tatsuhiro-t.github.io/wslay/">Wslay</a> - WebSocket
|
||
library. Implements version 13 of the WebSocket protocol, as described
|
||
in RFC 6455. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/zeromq/zyre">zyre</a> - Framework for
|
||
proximity-based peer-to-peer applications. <a
|
||
href="https://spdx.org/licenses/MPL-2.0.html"><code>MPL-2.0</code></a></li>
|
||
</ul>
|
||
<h2 id="numerical">Numerical</h2>
|
||
<ul>
|
||
<li><a href="http://apophenia.info">apophenia</a> - Library for
|
||
statistical and scientific computing. <a
|
||
href="https://spdx.org/licenses/GPL-2.0-only.html"><code>GPL-2.0-only</code></a></li>
|
||
<li><a href="https://github.com/fredrik-johansson/arb">Arb</a> - Library
|
||
for arbitrary-precision interval arithmetic. <a
|
||
href="https://spdx.org/licenses/LGPL-2.1-or-later.html"><code>LGPL-2.1-or-later</code></a></li>
|
||
<li><a href="http://math-atlas.sourceforge.net/">ATLAS</a> -
|
||
Automatically Tuned Linear Algebra Software. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="https://github.com/clMathLibraries/clBLAS">clBLAS</a> -
|
||
BLAS functions written in OpenCL. <a
|
||
href="https://spdx.org/licenses/Apache-2.0.html"><code>Apache-2.0</code></a></li>
|
||
<li><a href="https://scientificc.github.io/cmathl/">cmathl</a> - Math
|
||
library with a great variety of mathematical functions with CMake build
|
||
support. Seeks to be close to C89/C90 compliant for portability. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="http://www.feynarts.de/cuba/">Cuba</a> - Library for
|
||
multidimensional numerical integration. <a
|
||
href="https://spdx.org/licenses/LGPL-3.0-only.html"><code>LGPL-3.0-only</code></a></li>
|
||
<li><a href="https://github.com/adis300/fft-c">fft-c</a> - A
|
||
high-performance Fourier Transform from netlib’s fftpack; wrapped in a
|
||
user-friendly format <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="http://www.fftw.org/">FFTW</a> - The Fastest Fourier
|
||
Transform in the West; a highly optimized fast Fourier transform
|
||
routine. <a
|
||
href="https://spdx.org/licenses/GPL-2.0-or-later.html"><code>GPL-2.0-or-later</code></a></li>
|
||
<li><a href="http://flintlib.org/">FLINT</a> - Fast Library for Number
|
||
Theory; a library supporting arithmetic with numbers, polynomials, power
|
||
series and matrices, among others. <a
|
||
href="https://spdx.org/licenses/GPL-2.0-or-later.html"><code>GPL-2.0-or-later</code></a></li>
|
||
<li><a href="https://gnu.org/software/glpk/">GLPK</a> - GNU Linear
|
||
Programming Kit; a package designed for solving large-scale linear
|
||
programming, mixed integer programming and other related problems. <a
|
||
href="https://spdx.org/licenses/GPL-3.0-or-later.html"><code>GPL-3.0-or-later</code></a></li>
|
||
<li><a href="https://gmplib.org/">GMP</a> - GNU Multple Precision
|
||
Arithmetic Library; a library for arbitrary-precision arithmetic. <a
|
||
href="https://spdx.org/licenses/GPL-2.0-only.html"><code>GPL-2.0-only</code></a>
|
||
or <a
|
||
href="https://spdx.org/licenses/LGPL-3.0-only.html"><code>LGPL-3.0-only</code></a></li>
|
||
<li><a href="http://www.multiprecision.org/mpc/">GNU MPC</a> - Library
|
||
for complex number arithmetic. <a
|
||
href="https://spdx.org/licenses/LGPL-3.0-or-later.html"><code>LGPL-3.0-or-later</code></a></li>
|
||
<li><a href="http://mpfr.loria.fr/index.html">GNU MPFR</a> - Library for
|
||
arbitrary-precision floating-point arithmetic. <a
|
||
href="https://spdx.org/licenses/LGPL-3.0-or-later.html"><code>LGPL-3.0-or-later</code></a></li>
|
||
<li><a href="https://gnu.org/software/mpria/">GNU MPRIA</a> - Portable
|
||
mathematics library for multi-precision rational interval arithmetic. <a
|
||
href="https://spdx.org/licenses/GPL-3.0-or-later.html"><code>GPL-3.0-or-later</code></a></li>
|
||
<li><a href="https://www.gnu.org/software/gsl/">GSL</a> - The GNU
|
||
Scientific Library; a sophisticated numerical library. <a
|
||
href="https://spdx.org/licenses/GPL-3.0-only.html"><code>GPL-3.0-only</code></a>.</li>
|
||
<li><a href="https://sourceforge.net/projects/kissfft/">KISS FFT</a> -
|
||
Simple fast Fourier transform library. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="http://www.netlib.org/lapack/lapacke.html">LAPACKE</a> -
|
||
Interface to <a href="http://www.netlib.org/lapack/">LAPACK</a>. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="http://www.libtom.net/LibTomMath/">LibTomMath</a> -
|
||
Portable, number-theoretic, multiple-precision integer library. Supports
|
||
algebra, digit manipulation, modular reductions, and various
|
||
number-theoretic routines. Public domain.</li>
|
||
<li><a href="http://www.libtom.net/LibTomPoly/">LibTomPoly</a> -
|
||
Polynomial-related maths library. Public domain.</li>
|
||
<li><a href="http://pari.math.u-bordeaux.fr/">PARI/GP</a> - Computer
|
||
algebra system for number theory; includes a compiler to C. <a
|
||
href="https://spdx.org/licenses/GPL-2.0-or-later.html"><code>GPL-2.0-or-later</code></a></li>
|
||
<li><a href="http://www.mcs.anl.gov/petsc/">PETSc</a> - Suite of data
|
||
structures and routines for scalable parallel solution of scientific
|
||
applications modelled by partial differential equations. <a
|
||
href="https://spdx.org/licenses/BSD-2-Clause.html"><code>BSD-2-Clause</code></a></li>
|
||
<li><a href="https://github.com/cvxgrp/scs">SCS</a> - Splitting Conic
|
||
Solver; a numerical optimization package for solving large-scale convex
|
||
cone problems. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="http://slepc.upv.es/">SLEPc</a> - Library for the solution
|
||
of large, sparse eigenvalue problems on parallel computers. <a
|
||
href="https://spdx.org/licenses/LGPL-3.0-only.html"><code>LGPL-3.0-only</code></a></li>
|
||
<li><a href="http://www.libtom.net/TomsFastMath/">TomsFastMath</a> - Set
|
||
of optimized maths operations (in assembly), suitable for cryptographic
|
||
use. Public domain.</li>
|
||
<li><a href="https://bitbucket.org/MDukhan/yeppp">Yeppp!</a> - Fast,
|
||
SIMD-optimized mathematical library. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
</ul>
|
||
<h2 id="profiling">Profiling</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/gperftools/gperftools">gperftools</a> -
|
||
Collection of utilities for measuring and improving performance. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="https://www.gnu.org/software/binutils/">gprof</a> -
|
||
Performance analysis tool. Part of GNU binutils. <a
|
||
href="https://spdx.org/licenses/GPL-3.0-or-later.html"><code>GPL-3.0-or-later</code></a></li>
|
||
<li><a href="http://oprofile.sourceforge.net/news/">OProfile</a> -
|
||
Statistical profiler for Linux. Can profile any code (including the
|
||
kernel!) with low overhead and without recompilation. <a
|
||
href="https://spdx.org/licenses/GPL-2.0-only.html"><code>GPL-2.0-only</code></a></li>
|
||
<li><a href="https://perf.wiki.kernel.org/index.php/Main_Page">perf</a>
|
||
- Linux kernel-based profiler with a lot of functionality. <a
|
||
href="https://spdx.org/licenses/GPL-2.0-only.html"><code>GPL-2.0-only</code></a></li>
|
||
</ul>
|
||
<h2 id="pdf">PDF</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/michaelrsweet/pdfio">pdfio</a> - PDFio
|
||
is a simple C library for reading and writing PDF files.<a
|
||
href="https://spdx.org/licenses/Apache-2.0.html"><code>Apache-2.0</code></a></li>
|
||
</ul>
|
||
<h2 id="regex">Regex</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/k-takata/Onigmo">Onigmo</a> - Fork of
|
||
Oniguruma, supporting more advanced regexps. <a
|
||
href="https://spdx.org/licenses/BSD-2-Clause.html"><code>BSD-2-Clause</code></a></li>
|
||
<li><a href="https://github.com/kkos/oniguruma">Oniguruma</a> - Regex
|
||
library supporting a wide range of encodings, and incorporating many
|
||
security-oriented fixes. <a
|
||
href="https://spdx.org/licenses/BSD-2-Clause.html"><code>BSD-2-Clause</code></a></li>
|
||
<li><a href="http://www.pcre.org/">PCRE</a> - Implementation of regexes
|
||
identical to that of Perl 5. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="https://github.com/cesanta/slre">SLRE</a> - Super Light
|
||
Regular Expression library; a small implementation of a subset of Perl
|
||
regex syntax. <a
|
||
href="https://spdx.org/licenses/GPL-2.0-only.html"><code>GPL-2.0-only</code></a></li>
|
||
<li><a href="https://github.com/laurikari/tre/">TRE</a> -
|
||
POSIX-compliant, feature-full regex library. <a
|
||
href="https://spdx.org/licenses/BSD-2-Clause.html"><code>BSD-2-Clause</code></a></li>
|
||
</ul>
|
||
<h2 id="serialization">Serialization</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/liteserver/binn">binn</a> - Binary
|
||
serialization format, meant to be compact, fast and easy-to-use. <a
|
||
href="https://spdx.org/licenses/Apache-2.0.html"><code>Apache-2.0</code></a></li>
|
||
<li><a href="https://github.com/jmckaskill/c-capnproto">c-capnproto</a>
|
||
- Implementation of the Cap’n Proto serialization protocol. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/camgunz/cmp">cmp</a> - Implementation of
|
||
the <a href="https://msgpack.org/">MessagePack</a> serialization
|
||
protocol. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/dvidelabs/flatcc">flatcc</a> - <a
|
||
href="https://google.github.io/flatbuffers/">FlatBuffers</a> compiler
|
||
and library. <a
|
||
href="https://spdx.org/licenses/Apache-2.0.html"><code>Apache-2.0</code></a></li>
|
||
<li><a
|
||
href="http://avro.apache.org/docs/current/api/c/index.html#_introduction_to_avro_c">libavro</a>
|
||
- Implementation of the Avro data serialization system. <a
|
||
href="https://spdx.org/licenses/Apache-2.0.html"><code>Apache-2.0</code></a></li>
|
||
<li><a href="https://github.com/ludocode/mpack">mpack</a> - Another
|
||
implementation of the <a href="https://msgpack.org/">MessagePack</a>
|
||
serialization protocol. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="http://opic.rocks/">OPIC</a> - Object Persistence in C; a
|
||
revolutionary serialization framework, with matching on-disk and
|
||
in-memory representations. <a
|
||
href="https://spdx.org/licenses/GPL-3.0-or-later.html"><code>GPL-3.0-or-later</code></a></li>
|
||
<li><a href="https://github.com/protobuf-c/protobuf-c">protobuf-c</a> -
|
||
Implementation of Google Protocol Buffer. <a
|
||
href="https://spdx.org/licenses/BSD-2-Clause.html"><code>BSD-2-Clause</code></a></li>
|
||
<li><a href="https://github.com/troydhanson/tpl">tpl</a> - Small binary
|
||
serialization library. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a
|
||
href="https://en.wikipedia.org/wiki/External_Data_Representation">xdr</a>
|
||
- External Data Representation; a standard for data serialization.
|
||
Standard (no license applicable).</li>
|
||
<li><a href="https://github.com/eerimoq/pbtools">pbtools</a> - Google
|
||
Protocol Buffers C source code generator. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
</ul>
|
||
<h2 id="source-code-collections">Source Code Collections</h2>
|
||
<p>Collections of small source code. If you want something big and
|
||
integrated, check the Frameworks section.</p>
|
||
<ul>
|
||
<li><a href="http://ccodearchive.net/">CCAN</a> - Modelled after Perl’s
|
||
CPAN, this is a big collection of code that does stuff. The full list is
|
||
<a href="http://ccodearchive.net/list.html">here</a>. Various licenses,
|
||
all open source.</li>
|
||
<li><a href="https://github.com/clibs/clib">clib</a> - Something of a
|
||
package manager. Comes with a <a
|
||
href="https://github.com/clibs/clib/wiki/Packages">bunch of libraries of
|
||
its own</a>. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://www.gnu.org/software/gnulib/">gnulib</a> -
|
||
Collection of common GNU code. Various licenses, all open source.</li>
|
||
<li><a href="http://www.fefe.de/djb/">libdjb</a> - Collection of
|
||
libraries doing various things. (Apparently) public domain.</li>
|
||
<li><a href="https://github.com/vurtun/mmx">mmx</a> - Collection of
|
||
single-header libraries. Various licenses, all open source.</li>
|
||
<li><a href="https://github.com/prideout/par">par</a> - Bunch of
|
||
single-file libraries. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/DanielGibson/Snippets/">Snippets</a> -
|
||
Useful code snippets and header-only libraries. Public domain.</li>
|
||
<li><a href="https://github.com/nothings/stb">stb</a> - Range of
|
||
single-file libraries. Public domain.</li>
|
||
<li><a href="https://github.com/RandyGaul/tinyheaders">tinyheaders</a> -
|
||
Collection of header-only libraries, primarily oriented toward game
|
||
development. <a
|
||
href="https://spdx.org/licenses/Zlib.html"><code>Zlib</code></a></li>
|
||
<li><a href="https://github.com/zpl-c/zpl">zpl</a> - C99 cross-platform
|
||
header-only library with many goodies. [<code>BSD-3-Clause</code>,
|
||
<code>Unlicense</code>][BSD-3-Clause, Unlicense]</li>
|
||
</ul>
|
||
<h2 id="standard-libraries">Standard Libraries</h2>
|
||
<p>Implementations of the (standard-mandated) C standard library.</p>
|
||
<ul>
|
||
<li><a href="https://github.com/aosp-mirror/platform_bionic">Bionic</a>
|
||
- Google’s standard library, developed for Android. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="https://github.com/NuxiNL/cloudlibc">cloudlibc</a> -
|
||
Standard library based on the concept of <a
|
||
href="https://en.wikipedia.org/wiki/Capability-based_security">capability-based
|
||
security</a>. <a
|
||
href="https://spdx.org/licenses/BSD-2-Clause.html"><code>BSD-2-Clause</code></a></li>
|
||
<li><a href="https://www.fefe.de/dietlibc/">dietlibc</a> - Standard
|
||
library designed for the smallest possible binaries. <a
|
||
href="https://spdx.org/licenses/GPL-2.0-only.html"><code>GPL-2.0-only</code></a></li>
|
||
<li><a href="https://www.gnu.org/software/libc/">glibc</a> - The GNU C
|
||
Library; an implementation of the standard library. <a
|
||
href="https://spdx.org/licenses/LGPL-2.1-only.html"><code>LGPL-2.1-only</code></a>.</li>
|
||
<li><a href="https://musl.libc.org/">musl</a> - Standard library,
|
||
compatible with POSIX 2008 and C11. Designed for static linking. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="http://pdclib.e43.eu/">PDCLib</a> - The Public Domain C
|
||
Library. Implements most of C99 and some of C11. <a
|
||
href="https://spdx.org/licenses/CC0-1.0.html"><code>CC0-1.0</code></a></li>
|
||
<li><a href="https://uclibc-ng.org/">uClibc-ng</a> - Small C library for
|
||
developing embedded systems. <a
|
||
href="https://spdx.org/licenses/LGPL-2.1-or-later.html"><code>LGPL-2.1-or-later</code></a></li>
|
||
</ul>
|
||
<h3 id="template-libraries">Template libraries</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/rurban/ctl">CTL</a> - C CONTAINER
|
||
TEMPLATE LIBRARY (CTL) <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
</ul>
|
||
<h2 id="string-manipulation">String Manipulation</h2>
|
||
<ul>
|
||
<li><a href="http://mike.steinert.ca/bstring/">bstring</a> - The Better
|
||
String Library. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="http://site.icu-project.org/">ICU</a> - International
|
||
Components for Unicode; a library for Unicode support. <a
|
||
href="https://spdx.org/licenses/ICU.html"><code>ICU</code></a></li>
|
||
<li><a href="https://github.com/wooorm/levenshtein.c">levenstein.c</a> -
|
||
<a href="https://en.wikipedia.org/wiki/Levenshtein_distance">Levenstein
|
||
distance</a> algorithm implementation. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a>.</li>
|
||
<li><a href="https://gnu.org/software/libunistring/">libunistring</a> -
|
||
Library for manipulating Unicode strings. <a
|
||
href="https://spdx.org/licenses/LGPL-3.0-only.html"><code>LGPL-3.0-only</code></a></li>
|
||
<li><a href="https://gnu.org/software/libiconv/">libgiconv</a> - Text
|
||
conversion library. <a
|
||
href="https://spdx.org/licenses/LGPL-2.1-only.html"><code>LGPL-2.1-only</code></a></li>
|
||
<li><a href="https://github.com/josephg/librope">librope</a> - UTF-8
|
||
rope (‘heavy’ string) library. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/antirez/sds">SDS</a> - Simple Dynamic
|
||
Strings; a library for handling strings in a simpler way, but one that
|
||
is compatible with normal C string functions. Available via <a
|
||
href="https://github.com/clibs/clib">clib</a>. <a
|
||
href="https://spdx.org/licenses/BSD-2-Clause.html"><code>BSD-2-Clause</code></a></li>
|
||
<li><a href="https://github.com/wooorm/stmr.c">stmr.c</a> - <a
|
||
href="http://tartarus.org/martin/PorterStemmer/">Porter Stemmer</a>
|
||
algorithm implementation. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/maxim2266/str">str</a> - Yet another
|
||
string library for C language. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a
|
||
href="https://github.com/ashvardanian/StringZilla">StringZilla</a> - Up
|
||
to 10x faster SIMD and SWAR-accelerated string search, sort, hashes,
|
||
edit distances, alignments, and generators. <a
|
||
href="https://spdx.org/licenses/Apache-2.0.html"><code>Apache-2.0</code></a></li>
|
||
<li><a href="https://github.com/sheredom/utf8.h">utf8.h</a> -
|
||
Single-header UTF-8 library, designed to mimic C-style string functions.
|
||
Public domain.</li>
|
||
<li><a href="https://github.com/JuliaLang/utf8proc">utf8proc</a> -
|
||
Library for processing UTF-8 data. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
</ul>
|
||
<h2 id="structured-file-processing">Structured File Processing</h2>
|
||
<p>This includes libraries for things like XML, JSON, CSV, and other
|
||
similar formats.</p>
|
||
<h3 id="csv">CSV</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/rgamble/libcsv">libcsv</a> - Simple,
|
||
streaming CSV parser. <a
|
||
href="https://spdx.org/licenses/LGPL-2.1-or-later.html"><code>LGPL-2.1-or-later</code></a></li>
|
||
</ul>
|
||
<h3 id="json">JSON</h3>
|
||
<ul>
|
||
<li><a href="http://www.digip.org/jansson/">Jansson</a> - Library for
|
||
encoding, decoding and manipulating JSON. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/NeonMercury/jfes">jfes</a> - JSON For
|
||
Embedded Systems; simple JSON engine without any dependencies. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://zserge.com/jsmn.html">jsmn</a> - Minimalistic JSON
|
||
parser. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/recp/json">json</a> - Simple,
|
||
low-memory-use JSON parser. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/json-c/json-c">json-c</a> - Easily work
|
||
with JSON in C. Comes with a reference-counted object model, and aims
|
||
for conformance with <a href="https://tools.ietf.org/html/rfc7159">RFC
|
||
7159</a>. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/sheredom/json.h">json.h</a> -
|
||
Single-file non-streaming JSON parser. <a
|
||
href="https://spdx.org/licenses/Unlicense.html"><code>Unlicense</code></a></li>
|
||
<li><a href="https://github.com/kgabis/parson">parson</a> - Two-file,
|
||
C89-compatible JSON parser. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/netmail-open/wjelement/">WJElement</a> -
|
||
Advanced JSON manipulation library, with support for JSON Schema. <a
|
||
href="https://spdx.org/licenses/LGPL-2.0-or-later.html"><code>LGPL-2.0-or-later</code></a>
|
||
or <a
|
||
href="https://spdx.org/licenses/LGPL-2.1-or-later.html"><code>LGPL-2.1-or-later</code></a>
|
||
or <a
|
||
href="https://spdx.org/licenses/LGPL-3.0-or-later.html"><code>LGPL-3.0-or-later</code></a></li>
|
||
<li><a href="https://lloyd.github.io/yajl/">YAJL</a> - Fast streaming
|
||
JSON parser library. <a
|
||
href="https://spdx.org/licenses/ISC.html"><code>ISC</code></a></li>
|
||
</ul>
|
||
<h3 id="ini">INI</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/benhoyt/inih">inih</a> - Small and
|
||
simple INI file parser, good for embedded systems. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="https://github.com/ndevilla/iniparser">iniparser</a> -
|
||
Parser for .ini files. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a
|
||
href="https://madmurphy.github.io/libconfini/html/index.html">libconfini</a>
|
||
- Yet another INI parser. <a
|
||
href="https://spdx.org/licenses/GPL-3.0-only.html"><code>GPL-3.0-only</code></a></li>
|
||
<li><a href="https://github.com/compuphase/minIni">minIni</a> - Small
|
||
and portable INI parser. <a
|
||
href="https://spdx.org/licenses/Apache-2.0.html"><code>Apache-2.0</code></a></li>
|
||
</ul>
|
||
<h3 id="others">Others</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/mongodb/libbson">libbson</a> - BSON
|
||
utility library. <a
|
||
href="https://spdx.org/licenses/Apache-2.0.html"><code>Apache-2.0</code></a></li>
|
||
<li><a href="https://github.com/PJK/libcbor">libcbor</a>: CBOR protocol
|
||
implementation for C and others. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/martinh/libconfuse">libconfuse</a> -
|
||
Small configuration file parser library. <a
|
||
href="https://spdx.org/licenses/ISC.html"><code>ISC</code></a></li>
|
||
<li><a href="https://github.com/0intro/libelf">libelf</a> - Simple
|
||
library for parsing ELF files. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/vstakhov/libucl">libucl</a> - Universal
|
||
configuration library parser. <a
|
||
href="https://spdx.org/licenses/BSD-2-Clause.html"><code>BSD-2-Clause</code></a></li>
|
||
<li><a href="https://github.com/Juniper/libxo">libxo</a> - Allows an
|
||
application to generate plain text, XML, JSON and HTML output using a
|
||
common set of function calls. The application decides at runtime what
|
||
output style should be produced. <a
|
||
href="https://spdx.org/licenses/BSD-2-Clause.html"><code>BSD-2-Clause</code></a></li>
|
||
</ul>
|
||
<h3 id="xml">XML</h3>
|
||
<ul>
|
||
<li><a href="http://expat.sourceforge.net/">Expat</a> - Stream-oriented
|
||
XML parser. <a href="https://spdx.org/licenses/MIT.html">MIT</a></li>
|
||
<li><a href="http://xmlsoft.org/">libxml2</a> - Standards-compliant,
|
||
portable XML parser. <a
|
||
href="https://spdx.org/licenses/MIT.html">MIT</a></li>
|
||
<li><a href="https://github.com/recp/xml">xml</a> - Simple,
|
||
low-memory-use XML parser / tokenizer. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
</ul>
|
||
<h3 id="yaml">YAML</h3>
|
||
<ul>
|
||
<li><a href="https://www.pyyaml.org/wiki/LibYAML">libYAML</a> - YAML 1.1
|
||
parser and emitter. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
</ul>
|
||
<h2 id="signal-processing">Signal Processing</h2>
|
||
<ul>
|
||
<li><a href="https://sigrok.org/wiki/Libsigrok">libsigrok</a> - signal
|
||
analysis software suite that supports various device types (such as
|
||
logic analyzers, oscilloscopes, multimeters, and more).
|
||
[<code>GPL</code>][GPL]</li>
|
||
</ul>
|
||
<h2 id="testing">Testing</h2>
|
||
<ul>
|
||
<li><a href="https://github.com/Tuplanolla/cheat">CHEAT</a> - Simple
|
||
unit testing framework. <a
|
||
href="https://spdx.org/licenses/BSD-2-Clause.html"><code>BSD-2-Clause</code></a></li>
|
||
<li><a href="https://libcheck.github.io/check">Check</a> - Unit testing
|
||
framework. <a
|
||
href="https://spdx.org/licenses/LGPL-2.1-only.html"><code>LGPL-2.1-only</code></a></li>
|
||
<li><a href="https://github.com/yhfudev/cpp-ci-unit-test.git">ciut</a> -
|
||
A modern minimal hassle unit test framework. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/vmg/clar">clar</a> - Clear and simple
|
||
unit testing framework. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="http://www.throwtheswitch.org/cmock">CMock</a> - Mock/stub
|
||
generator. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://cmocka.org/">cmocka</a> - Unit testing framework
|
||
with support for mock objects. <a
|
||
href="https://spdx.org/licenses/Apache-2.0.html"><code>Apache-2.0</code></a></li>
|
||
<li><a href="https://criterion.readthedocs.io/en/master">Criterion</a> -
|
||
KISS, non-intrusive test framework. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/bvdberg/ctest">ctest</a> - Yet another
|
||
unit testing framework. <a
|
||
href="https://spdx.org/licenses/Apache-2.0.html"><code>Apache-2.0</code></a></li>
|
||
<li><a href="http://cunit.sourceforge.net/">CUnit</a> - Another unit
|
||
testing framework. <a
|
||
href="https://spdx.org/licenses/LGPL-2.1-or-later.html"><code>LGPL-2.1-or-later</code></a></li>
|
||
<li><a href="https://github.com/silentbicycle/greatest">greatest</a> -
|
||
Unit testing library in one file, with no memory allocation. <a
|
||
href="https://spdx.org/licenses/ISC.html"><code>ISC</code></a></li>
|
||
<li><a href="https://github.com/codeplea/minctest">minctest</a> - Unit
|
||
testing microlibrary. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="https://nemequ.github.io/munit">munit</a> - Small unit
|
||
testing framework. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/eerimoq/nala">Nala</a> - A test
|
||
framework for C projects. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/christophercrouzet/rexo">Rexo</a> -
|
||
Framework for C89/C++ featuring automatic registration of tests and a
|
||
polished API. <a
|
||
href="https://spdx.org/licenses/Unlicense.html"><code>Unlicense</code></a></li>
|
||
<li><a href="https://github.com/jasmcaus/tau">Tau</a> - A Micro Unit
|
||
testing framework for C/C++ (~1k lines of code). Includes a rich set of
|
||
assertion macros, supports automatic test registration and can output to
|
||
multiple formats, like the TAP format or JUnit XML. Supported on Linux,
|
||
macOS, FreeBSD, and Windows. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/silentbicycle/theft">theft</a> -
|
||
Property-based testing (similar to <a
|
||
href="https://wiki.haskell.org/Introduction_to_QuickCheck2">Quickcheck</a>).
|
||
<a href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="http://www.throwtheswitch.org/unity">Unity</a> - Simple
|
||
unit testing framework. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/evolutional/utest">utest</a> -
|
||
Single-header unit testing library. <a
|
||
href="https://spdx.org/licenses/Unlicense.html"><code>Unlicense</code></a></li>
|
||
</ul>
|
||
<h2 id="text-editor-extensions">Text Editor Extensions</h2>
|
||
<p>While practically any decent programmer’s text editor supports C,
|
||
there are some extensions that make it more pleasant. These are labelled
|
||
by editor.</p>
|
||
<ul>
|
||
<li><a
|
||
href="http://freeweb.siol.net/rmihor/NppCCompletionPlugin.zip">CCompletion</a>
|
||
- Notepad++ autocompletion plugin. Works with all identifiers recognized
|
||
by Ctags. This is a download link. <a
|
||
href="https://spdx.org/licenses/GPL-2.0-or-later.html"><code>GPL-2.0-or-later</code></a></li>
|
||
<li><a href="http://cedet.sourceforge.net/">CEDET</a> - Collection of
|
||
Emacs Development Environment Tools; designed to provide IDE-like
|
||
features to Emacs. Built-in. <a
|
||
href="https://spdx.org/licenses/GPL-3.0-or-later.html"><code>GPL-3.0-or-later</code></a></li>
|
||
<li><a href="https://github.com/flycheck/flycheck">Flycheck</a> - Modern
|
||
syntax checking for Emacs. For C, it can use either GCC or Clang as a
|
||
back-end. <a
|
||
href="https://spdx.org/licenses/GPL-3.0-or-later.html"><code>GPL-3.0-or-later</code></a></li>
|
||
<li><a href="https://github.com/neomake/neomake">Neomake</a> - Async
|
||
:make and linting framework for Neovim/Vim. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/vim-syntastic/syntastic">Syntastic</a> -
|
||
Syntax checking and linting for Vim. <a
|
||
href="https://spdx.org/licenses/WTFPL.html"><code>WTFPL</code></a></li>
|
||
<li><a href="http://joaotavora.github.io/yasnippet/">YASnippet</a> -
|
||
Emacs code template system, with C templates for common snippets. <a
|
||
href="https://spdx.org/licenses/GPL-3.0-or-later.html"><code>GPL-3.0-or-later</code></a></li>
|
||
<li><a
|
||
href="https://github.com/ycm-core/YouCompleteMe">YouCompleteMe</a> -
|
||
Code completion engine for Vim. <a
|
||
href="https://spdx.org/licenses/GPL-3.0-only.html"><code>GPL-3.0-only</code></a></li>
|
||
</ul>
|
||
<h2 id="tools">Tools</h2>
|
||
<p>Useful programs to help you write and debug C code which are
|
||
<em>not</em> editors, libraries or compilers.</p>
|
||
<ul>
|
||
<li><a href="http://astyle.sourceforge.net/">Artistic Style</a> - Fast
|
||
and small automatic source code formatter that supports C. <a
|
||
href="https://spdx.org/licenses/LGPL-3.0-only.html"><code>LGPL-3.0-only</code></a></li>
|
||
<li><a href="https://github.com/google/sanitizers">address-sanitizer</a>
|
||
- Fast memory error detector. <a
|
||
href="https://spdx.org/licenses/Apache-2.0.html"><code>Apache-2.0</code></a></li>
|
||
<li><a href="https://projects.malikania.fr/bcc">bcc</a> - A byte array
|
||
generator to import binary files directy from C in the spirit of xxd. <a
|
||
href="https://spdx.org/licenses/ISC.html"><code>ISC</code></a></li>
|
||
<li><a href="https://github.com/ryanmjacobs/c">c</a> - Compile and
|
||
execute C “scripts” in one go on the command line. Also has shebang
|
||
support. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/RhysU/c99sh">c99sh</a> - Run C files
|
||
using hash-bang. <a
|
||
href="https://spdx.org/licenses/BSD-2-Clause.html"><code>BSD-2-Clause</code></a></li>
|
||
<li><a href="https://cdecl.org/">cdecl</a> - Online service to translate
|
||
C declarations into English and vice versa. Public domain.</li>
|
||
<li><a href="https://www.flourish.org/cinclude2dot/">cinclude2dot</a> -
|
||
Graphs include dependencies in a project using Graphviz. <a
|
||
href="https://spdx.org/licenses/GPL-1.0.html">GPL-1.0-or-later</a> or <a
|
||
href="https://spdx.org/licenses/GPL-2.0-or-later.html"><code>GPL-2.0-or-later</code></a>
|
||
or <a
|
||
href="https://spdx.org/licenses/GPL-3.0-or-later.html"><code>GPL-3.0-or-later</code></a></li>
|
||
<li><a href="https://clang.llvm.org/docs/ClangCheck.html">ClangCheck</a>
|
||
- Static analysis tool, designed to work with Clang. <a
|
||
href="https://spdx.org/licenses/NCSA.html"><code>NCSA</code></a></li>
|
||
<li><a href="https://conan.io/">conan.io</a> - Something of a package
|
||
manager for C. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a>.</li>
|
||
<li><a href="http://cppcheck.sourceforge.net/">Cppcheck</a> - Static
|
||
analysis tool. Despite the name, works well with C. <a
|
||
href="https://spdx.org/licenses/GPL-3.0-or-later.html"><code>GPL-3.0-or-later</code></a></li>
|
||
<li><a href="https://glade.gnome.org/">Glade</a> - RAD tool to enable
|
||
quick development of GTK+ GUIs. <a
|
||
href="https://spdx.org/licenses/GPL-2.0-only.html"><code>GPL-2.0-only</code></a></li>
|
||
<li><a href="https://gmsl.sourceforge.net/">GMSL</a> - GNU Make Standard
|
||
Library; a collection of additional functionality for GNU Make. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="https://www.gnu.org/software/global/">GNU Global</a> -
|
||
Source code tagging tool. <a
|
||
href="https://spdx.org/licenses/GPL-3.0-only.html"><code>GPL-3.0-only</code></a></li>
|
||
<li><a href="https://logological.org/gpp">GPP</a> - General-purpose
|
||
preprocessor. More versatile than the C preprocessor, but more flexible
|
||
than m4. <a
|
||
href="https://spdx.org/licenses/LGPL-3.0-or-later.html"><code>LGPL-3.0-or-later</code></a></li>
|
||
<li><a href="http://www.andre-simon.de/index.php">Highlight</a> -
|
||
Converts source code to formatted text with nice highlighting. <a
|
||
href="https://spdx.org/licenses/GPL-3.0-only.html"><code>GPL-3.0-only</code></a></li>
|
||
<li><a
|
||
href="https://github.com/include-what-you-use/include-what-you-use">include-what-you-use</a>
|
||
- Helps find unecessary inclusions and make suggestions for fixing them.
|
||
Based on LLVM/Clang (and only works with it). <a
|
||
href="https://spdx.org/licenses/NCSA.html"><code>NCSA</code></a></li>
|
||
<li><a href="https://github.com/graphitemaster/incbin">incbin</a> -
|
||
Include binary files in your C/C++ applications with ease <a
|
||
href="https://spdx.org/licenses/Unlicense.html"><code>Unlicense</code></a></li>
|
||
<li><a href="https://www.gnu.org/software/indent/">indent</a> - Formats
|
||
C source code automatically to make it easier to read. Also converts
|
||
from one style of source to another. <a
|
||
href="https://spdx.org/licenses/GPL-3.0-or-later.html"><code>GPL-3.0-or-later</code></a></li>
|
||
<li><a href="https://github.com/smackers/smack">SMACK</a> - Modular
|
||
software verification toolchain and a self-contained software verifier.
|
||
Currently only works with programs compiled using Clang. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="http://dotat.at/prog/unifdef/">unifdef</a> - Removes #ifdef
|
||
and #if directives with their delimited text without touching any other
|
||
part of the file. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a>
|
||
or <a
|
||
href="https://spdx.org/licenses/BSD-2-Clause.html"><code>BSD-2-Clause</code></a></li>
|
||
</ul>
|
||
<h2 id="utilities">Utilities</h2>
|
||
<p>A ‘catch-all’ category for anything that doesn’t fit well anywhere
|
||
else.</p>
|
||
<ul>
|
||
<li><a
|
||
href="https://github.com/jeremyevans/ape_tag_libs/tree/master/c">ApeTagLibs</a>
|
||
- Library for working with APEv2 tags. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/cofyc/argparse">argparse</a> -
|
||
Command-line argument parsing library, inspired by Python’s argparse
|
||
module. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="http://savannah.nongnu.org/projects/attr/">attr</a> -
|
||
Commands for manipulating filesystem extended attributes. <a
|
||
href="https://spdx.org/licenses/GPL-2.0-or-later.html"><code>GPL-2.0-or-later</code></a></li>
|
||
<li><a href="http://sourceware.org/binutils/docs/bfd/">bfd</a> - Library
|
||
for manipulating binary object files. Part of GNU binutils. <a
|
||
href="https://spdx.org/licenses/GPL-3.0-or-later.html"><code>GPL-3.0-or-later</code></a></li>
|
||
<li><a href="https://github.com/dmw/caffeine">Caffeine</a> - Library for
|
||
building daemons and services for Linux and FreeBSD systems. <a
|
||
href="https://spdx.org/licenses/LGPL-2.1-or-later.html"><code>LGPL-2.1-or-later</code></a></li>
|
||
<li><a href="http://www.throwtheswitch.org/cexception">CException</a> -
|
||
Implementation of exceptions. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a
|
||
href="https://github.com/commonmark/commonmark-spec">CommonMark</a> -
|
||
Implementation of the CommonMark spec.</li>
|
||
<li><a href="https://github.com/jart/cosmopolitan">cosmopolitan</a> -
|
||
fast portable static native textmode containers (build C programs for
|
||
Linuxin one go) <a
|
||
href="https://github.com/commonmark/commonmark-spec/blob/master/LICENSE">Variety
|
||
of licenses, all open source</a>.</li>
|
||
<li><a href="https://github.com/google/cpu_features">cpu_features</a> -
|
||
Get CPU features at runtime. <a
|
||
href="https://spdx.org/licenses/Apache-2.0.html"><code>Apache-2.0</code></a>.</li>
|
||
<li><a href="https://criu.org/Main_Page">CRIU</a> - Checkpoint/Restore
|
||
In Userspace; a software tool (with a C API) for ‘freezing’ a running
|
||
application to disk, then restoring it. <a
|
||
href="https://spdx.org/licenses/GPL-2.0-only.html"><code>GPL-2.0-only</code></a>
|
||
or <a
|
||
href="https://spdx.org/licenses/LGPL-2.1-only.html"><code>LGPL-2.1-only</code></a></li>
|
||
<li><a href="https://www.freedesktop.org/wiki/Software/dbus/">D-Bus</a>
|
||
- Simple way for applications to talk to one another. <a
|
||
href="https://spdx.org/licenses/AFL-2.1.html"><code>AFL-2.1</code></a>
|
||
or <a
|
||
href="https://spdx.org/licenses/GPL-2.0-or-later.html"><code>GPL-2.0-or-later</code></a></li>
|
||
<li><a
|
||
href="http://www.pell.portland.or.us/~orc/Code/discount/">Discount</a> -
|
||
Simple implementation of a Markdown parser. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="https://github.com/blynn/dlx">dlx</a> - Implementation of
|
||
<a href="https://en.wikipedia.org/wiki/Knuth's_Algorithm_X">Knuth’s
|
||
Algorithm X</a>, with example solvers. <a
|
||
href="https://spdx.org/licenses/GPL-3.0-or-later.html"><code>GPL-3.0-or-later</code></a></li>
|
||
<li><a href="https://github.com/docopt/docopt.c">docopt.c</a> -
|
||
Implementation of a command-line option parser. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="http://www.dyncall.org/">dyncall</a> - Another foreign
|
||
function interface library. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://gnu.org/software/freeipmi/index.html">GNU
|
||
FreeIPMI</a> - In-band and out-of-band IPMI implementation. <a
|
||
href="https://spdx.org/licenses/GPL-3.0-only.html"><code>GPL-3.0-only</code></a></li>
|
||
<li><a href="https://www.gnu.org/software/gperf/">GNU gperf</a> -
|
||
Perfect hash function generator, given a list of strings. Outputs C
|
||
code. <a
|
||
href="https://spdx.org/licenses/GPL-3.0-or-later.html"><code>GPL-3.0-or-later</code></a></li>
|
||
<li><a href="https://gnu.org/software/libffcall/">GNU Libffcall</a> -
|
||
Collection of libraries for building foreign function interfaces. <a
|
||
href="https://spdx.org/licenses/GPL-3.0-or-later.html"><code>GPL-3.0-or-later</code></a></li>
|
||
<li><a href="https://github.com/hoedown/hoedown">Hoedown</a> - Fully
|
||
standards-compliant, extension-supporting, UTF-8 aware, fast Markdown
|
||
parser. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="http://kitsune-dsu.com/">Kitsune</a> - Efficient,
|
||
general-purpose framework for dynamic software updating. <a
|
||
href="https://spdx.org/licenses/LGPL-3.0-or-later.html"><code>LGPL-3.0-or-later</code></a></li>
|
||
<li><a href="http://libcello.org/">libCello</a> - Library introducing
|
||
higher-level programming to C. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="https://github.com/jgm/cmark">libcmark</a> - Library for
|
||
parsing the CommonMark dialect of Markdown. <a
|
||
href="https://spdx.org/licenses/BSD-2-Clause.html"><code>BSD-2-Clause</code></a></li>
|
||
<li><a href="https://github.com/obgm/libcoap">libcoap</a> -
|
||
Implementation of the <a href="http://coap.technology/">Constrained
|
||
Application Protocol</a>. <a
|
||
href="https://spdx.org/licenses/GPL-2.0-or-later.html"><code>GPL-2.0-or-later</code></a>
|
||
or <a
|
||
href="https://spdx.org/licenses/BSD-2-Clause.html"><code>BSD-2-Clause</code></a></li>
|
||
<li><a href="http://libcox.symisc.net/">libcox</a> - Library which
|
||
permits cross-platform system calls and standard utilities across
|
||
different operating systems. <a
|
||
href="https://spdx.org/licenses/BSD-2-Clause.html"><code>BSD-2-Clause</code></a></li>
|
||
<li><a href="https://github.com/atgreen/libffi">libffi</a> - Portable
|
||
foreign-function interface library. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/simplegeo/libgeohash">libgeohash</a> -
|
||
Pure C implementation of the Geohash algorithm. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="https://libgit2.org/">libgit2</a> - Portable implementation
|
||
of the Git core methods, provided as a re-entrant linkable library. <a
|
||
href="https://github.com/libgit2/libgit2/blob/master/COPYING">Custom
|
||
license</a>.</li>
|
||
<li><a href="https://gnu.org/software/gss/">libgss</a> - Generic
|
||
Security Service. <a
|
||
href="https://spdx.org/licenses/GPL-3.0-or-later.html"><code>GPL-3.0-or-later</code></a></li>
|
||
<li><a
|
||
href="https://github.com/libimobiledevice/libimobiledevice">libimobiledevice</a>
|
||
- Cross-platform protocol library to communicate with iThings. <a
|
||
href="https://spdx.org/licenses/LGPL-2.1-or-later.html"><code>LGPL-2.1-or-later</code></a></li>
|
||
<li><a href="https://github.com/nfc-tools/libnfc">libnfc</a> -
|
||
Platform-independent Near-Field Communication library. <a
|
||
href="https://spdx.org/licenses/LGPL-3.0-only.html"><code>LGPL-3.0-only</code></a></li>
|
||
<li><a href="https://github.com/openvenues/libpostal">libpostal</a> -
|
||
Library for parsing and normalization of street addresses around the
|
||
world. Powered by statistical NLP and open geo data. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="http://libtrading.org/">libtrading</a> - Implementation of
|
||
network protocols for communicating with exchanges, dark pools and other
|
||
trading venues. Supports FIX, FIX/FAST and many proprietary protocols.
|
||
<a
|
||
href="https://spdx.org/licenses/BSD-2-Clause.html"><code>BSD-2-Clause</code></a></li>
|
||
<li><a href="https://libusb.info/">libusb</a> - Provides generic access
|
||
to USB devices. <a
|
||
href="https://spdx.org/licenses/LGPL-2.1-or-later.html"><code>LGPL-2.1-or-later</code></a></li>
|
||
<li><a href="http://libuv.org">libuv</a> - Cross-platform asynchronous
|
||
I/O. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a
|
||
href="https://github.com/dertuxmalwieder/libvldmail">libvldmail</a> -
|
||
Your friendly email validation library. No external dependencies (not
|
||
even regexps). <a
|
||
href="https://spdx.org/licenses/WTFPL.html"><code>WTFPL</code></a></li>
|
||
<li><a href="https://github.com/antirez/linenoise">linenoise</a> -
|
||
Small, self-contained alternative to readline and libedit. <a
|
||
href="https://spdx.org/licenses/BSD-2-Clause.html"><code>BSD-2-Clause</code></a></li>
|
||
<li><a href="https://github.com/Jorengarenar/libXDGdirs">libXDGdirs</a>
|
||
- An implementation of XDG Base Directory Specification <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://trumpowen.github.io/MegaMimes">MegaMimes</a> -
|
||
Library for getting the <a
|
||
href="https://en.wikipedia.org/wiki/MIME">MIME</a> types of a file. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://gnu.org/software/ncurses/">ncurses</a> - Coloured
|
||
terminal UI library. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a
|
||
href="https://github.com/sabotage-linux/netbsd-curses">netbsd-curses</a>
|
||
- Simplified and small version of ncurses, with the same interface. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="https://github.com/riolet/WAFer">nope.c</a> - Ultra-light
|
||
software platform for scalable server-side and networking applications
|
||
(think node.js for C programmers). <a
|
||
href="https://spdx.org/licenses/GPL-2.0-only.html"><code>GPL-2.0-only</code></a></li>
|
||
<li><a href="https://github.com/small-c/obj.h">obj.h</a> - A
|
||
single-header supports OOP in pure C. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/jibsen/parg">parg</a> - A single-file
|
||
reimplementation of <code>getopt</code> with better defaults. <a
|
||
href="https://spdx.org/licenses/CC0-1.0.html"><code>CC0-1.0</code></a></li>
|
||
<li><a href="https://github.com/cloudwu/pbc">pbc</a> - Protocol buffers
|
||
library. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/doches/progressbar">progressbar</a> -
|
||
Easy-to-use library for displaying text progress bars. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="https://github.com/alanxz/rabbitmq-c">rabbitmq-c</a> -
|
||
Client library for <a href="http://www.rabbitmq.com/">RabbitMQ</a>. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="http://www.colm.net/open-source/ragel/">Ragel</a> - DSL for
|
||
state machines that compiles to C. <a
|
||
href="https://spdx.org/licenses/GPL-2.0-only.html"><code>GPL-2.0-only</code></a></li>
|
||
<li><a href="https://remove-to-waste.info">rmw</a> - safe-remove utility
|
||
for the command line that can purge items from your waste directories
|
||
after x number of days. <a
|
||
href="https://spdx.org/licenses/GPL-3.0-or-later.html"><code>GPL-3.0-or-later</code></a></li>
|
||
<li><a href="https://github.com/sakhmatd/rogueutil">Rogueutil</a> -
|
||
Cross-platform library for creating text-based user interfaces (TUI) <a
|
||
href="https://spdx.org/licenses/Apache-2.0.html"><code>Apache-2.0</code></a></li>
|
||
<li><a href="https://github.com/swenson/sort">sort</a> - Collection of
|
||
sorting routines, which type-specialize at compile-time with a
|
||
user-defined type. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/nsf/termbox">termbox</a> - Library for
|
||
writing text-based interfaces. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/codeplea/tinyexpr">tinyexpr</a> - Tiny
|
||
recursive-descent parser, compiler and evaluation engine for simple
|
||
mathematical expressions. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="https://github.com/recp/tm">tm</a> - ⏱ Timer and Timeline
|
||
Utils for C. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://tulipindicators.org/">Tulip Indicators</a> -
|
||
Library of functions for technical analysis of financial data. <a
|
||
href="https://spdx.org/licenses/LGPL-3.0-or-later.html"><code>LGPL-3.0-or-later</code></a></li>
|
||
<li><a href="https://github.com/gpakosz/whereami">whereami</a> -
|
||
One-file library for locating the current executable on the file system.
|
||
<a
|
||
href="https://spdx.org/licenses/WTFPL.html"><code>WTFPL</code></a></li>
|
||
<li><a href="https://brechtsanders.github.io/xlsxio/">XLSX I/O</a> -
|
||
Cross-platform library for reading and writing .xlsx files. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/damian-m-g/xlsx_drone">xlsx_drone</a> -
|
||
Fast Microsoft Excel’s *.xlsx reader. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a><br />
|
||
</li>
|
||
<li><a href="http://hardysimpson.github.io/zlog/">zlog</a> - Reliable,
|
||
pure C logging library. <a
|
||
href="https://spdx.org/licenses/LGPL-2.1-only.html"><code>LGPL-2.1-only</code></a></li>
|
||
<li><a href="https://github.com/zeromq/zproto">zproto</a> - Protocol
|
||
framework for ZeroMQ. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/Hirrolot/metalang99">Metalang99</a> -
|
||
Full-blown preprocessor metaprogramming. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://github.com/Hirrolot/datatype99">Datatype99</a> -
|
||
Algebraic data types for C99. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
</ul>
|
||
<h2 id="web-frameworks">Web Frameworks</h2>
|
||
<p>Comprehensive and integrated solutions for building the next
|
||
brilliant web application in C.</p>
|
||
<ul>
|
||
<li><a href="https://github.com/Cogmasters/concord">Concord</a> - A
|
||
Discord API wrapper library written in C. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="http://facil.io/">facil.io</a> - Mini-framework for web
|
||
applications. Includes a fast HTTP and Websocket server, and also
|
||
supports custom protocols. <a
|
||
href="https://spdx.org/licenses/MIT.html"><code>MIT</code></a></li>
|
||
<li><a href="https://kristaps.bsd.lv/kcgi">kcgi</a> - CGI and FastCGI
|
||
library for C <a
|
||
href="https://spdx.org/licenses/ISC.html"><code>ISC</code></a>.</li>
|
||
<li><a href="http://www.koanlogic.com/klone/">KLone</a> - Fully
|
||
featured, multi-platform, web application development framework,
|
||
targeted especially at embedded systems and appliances. <a
|
||
href="https://spdx.org/licenses/BSD-3-Clause.html"><code>BSD-3-Clause</code></a></li>
|
||
<li><a href="https://kore.io/">Kore</a> - Easy-to-use web application
|
||
framework for writing scalable web APIs in C. <a
|
||
href="https://spdx.org/licenses/ISC.html"><code>ISC</code></a></li>
|
||
</ul>
|
||
<h2 id="windows-environments">Windows Environments</h2>
|
||
<p>Technologies designed to bring Windows into the 21st century with
|
||
respect to support for C.</p>
|
||
<ul>
|
||
<li><a href="https://cygwin.com/">Cygwin</a> - Designed to emulate a
|
||
POSIX-compatible environment extensively under Windows. <a
|
||
href="https://cygwin.com/licensing.html">Various licenses, all open
|
||
source</a>.</li>
|
||
<li><a href="http://mingw-w64.yaxm.org/doku.php/start">MinGW-w64</a> -
|
||
Minimalist environment for C development on Windows with 64 bit support.
|
||
<a href="http://mingw.org/license">Various licenses, all open
|
||
source</a>.</li>
|
||
<li><a href="http://msys2.github.io/">MSYS2</a> - Minimal SYStem 2; aims
|
||
to provide support for a POSIX environment on Windows, with a package
|
||
manager based on Arch Linux’s pacman. Packages have individual licenses,
|
||
otherwise, as MinGW and Cygwin.</li>
|
||
</ul>
|