This repository is the curl project, consisting of the libcurl library and the curl command-line tool. libcurl is a client-side URL transfer library supporting a wide range of protocols including HTTP, HTTPS, FTP, FTPS, SCP, SFTP, SMTP, POP3, IMAP, LDAP, MQTT, WebSocket, and many more. The curl tool provides a powerful command-line interface for making network requests with extensive options for authentication, SSL/TLS configuration, proxy support, output formatting, and scripting. The architecture is a classic C library with a public API (include/curl/) and a separate CLI tool (src/) that links against the library. Key entry points include curl_easy_perform() for synchronous transfers, curl_multi_perform() for asynchronous multiplexed transfers, and the curl command-line binary. Data flows involve URL parsing, DNS resolution (with support for c-ares, threaded, and DoH), connection establishment via a filter chain (TCP, TLS, HTTP/2, HTTP/3, SOCKS, etc.), protocol-specific handling, and response processing. External dependencies include OpenSSL, GnuTLS, wolfSSL, mbedTLS, Schannel, rustls for TLS; c-ares for async DNS; libssh2/libssh for SSH; nghttp2 for HTTP/2; ngtcp2 and quiche for HTTP/3; and various system libraries. The codebase is exceptionally well-structured, with a modular filter architecture, extensive test coverage (unit, integration, and HTTP test suites), and a strong emphasis on portability across Unix, Windows, macOS, and embedded platforms.
jq is a compiled, dependency-light C command-line tool and embeddable libjq library for transforming JSON and text streams. In production it acts as a Unix pipeline filter: it reads JSON, raw text, or JSON text sequences from stdin/files, parses them, evaluates a user-supplied filter expression, and writes transformed output to stdout. The filter language is a functional DSL compiled to a custom bytecode via a Flex lexer (src/lexer.l), Bison grammar (src/parser.y), block-based compiler (src/compile.c), and stack VM (src/execute.c) with tail-call optimization. JSON values are represented by the refcounted jv API (src/jv.c, src/jv.h), with carefully maintained UTF-8 handling and exact decimal parsing.
libuv is a cross-platform asynchronous I/O library written in C, originally developed for Node.js. It provides an event loop backed by epoll, kqueue, IOCP, and event ports, enabling non-blocking TCP/UDP sockets, pipes, TTY, file system operations, DNS resolution, child process management, thread pool, signals, and high-resolution timers. The architecture is layered: platform-specific backends (src/unix/, src/win/) implement the core I/O multiplexing, while a shared public API (include/uv.h) exposes handles, requests, and callbacks. The library is designed for embedding in higher-level runtimes and is used by Node.js, Luvit, Julia, and uvloop. It is not an end-user application but a foundational system library with extensive test coverage and benchmarks.
This is the core tree-sitter repository, providing a parser generator toolchain and an incremental parsing runtime library. In production, it consumes grammar definitions written in a JavaScript DSL or JSON format and generates standalone C parsers (or WebAssembly modules) that can parse source code incrementally at keystroke speed. The architecture comprises a minimal C library (`lib/src/`) that implements a GLR parser with error recovery, a Rust-based generator (`crates/generate/`) that compiles grammars into LR parse tables and emits C code, a CLI tool (`crates/cli/`) for developing/testing grammars and performing syntax highlighting/querying, and bindings for Rust, Node.js/TypeScript, and Web. The system is designed for integration into editors (e.g., VS Code, Neovim) and code analysis tools, offering incremental parsing, tree queries, syntax highlighting, and symbol tagging. External dependencies are minimal for the C core (none), while the Rust toolchain depends on wasmtime, QuickJS, and standard crates. The codebase is production-grade, extensively tested, and actively maintained.
This repository contains the complete source code for SQLite, a self-contained, high-reliability, embedded SQL database engine. The codebase implements a full SQL database system including a SQL parser (generated by the included Lemon parser generator), a bytecode virtual machine (VDBE) for executing prepared statements, a B-tree storage engine, a transaction manager with WAL and journaling, and a pluggable VFS (Virtual File System) layer for OS abstraction. The architecture is a monolithic C library designed for embedding into applications, with optional loadable extensions for full-text search (FTS3/4/5), R-tree spatial indexing, JSON processing, vector similarity search (vec1), and dozens of utility functions. Key entry points include the public C API defined in sqlite3.h, the command-line shell (shell.c), and the Tcl test harness. Data flows through the SQL parser to the query optimizer (where.c), which generates VDBE bytecode executed by the virtual machine, ultimately reading/writing pages through the pager and B-tree layers. External dependencies are minimal: only standard C library and optional ICU for Unicode support. The repository also includes extensive test suites, fuzz testing harnesses, and build systems for Unix, Windows, and WebAssembly.
Box2D is a mature, production-grade 2D rigid-body physics engine written in C17, designed primarily for game development. It provides a comprehensive C API for simulating rigid bodies, shapes (circles, capsules, polygons, chain segments), joints (revolute, prismatic, distance, weld, wheel, motor, etc.), sensors, and continuous collision detection (CCD). The engine is data-oriented, with a focus on determinism, multithreading, and SIMD acceleration (SSE2, AVX2, NEON). It includes a built-in scheduler for parallel constraint solving using graph coloring, and supports large worlds via double-precision coordinates. The architecture is modular: the public API is defined in `include/box2d/` with separate headers for types, math, collision, and the main `box2d.h`. The implementation in `src/` is organized into subsystems: world management, body/shape/joint creation, broad-phase collision (dynamic AABB tree), narrow-phase collision (GJK, SAT, manifold generation), constraint solving (contact solver with SIMD variants), island management, and recording/replay for deterministic debugging. The engine also provides snapshot serialization for save/load. While the core is a library, the repository includes a rich set of sample applications (using GLFW, OpenGL, and ImGui) that demonstrate every feature, a comprehensive unit test suite, and performance benchmarks. The codebase is exceptionally well-crafted, with clean abstractions, extensive validation, and a strong emphasis on correctness and performance. It is actively maintained by the original author (Erin Catto) and the community.
s2n-tls is a C99 implementation of the TLS/SSL protocols designed by AWS for simplicity, small size, and security. It supports TLS 1.2 and 1.3, including features like 0-RTT early data, session tickets, post-quantum KEMs (ML-KEM, ML-DSA), and QUIC transport integration. The library provides a public C API (api/s2n.h) and multiple libcrypto backends (OpenSSL, AWS-LC, BoringSSL, LibreSSL). Extensive formal verification (CBMC, SAW, SideTrail) and fuzz testing ensure memory safety and constant-time execution. The architecture is highly modular with a stuffer buffer abstraction, blob/array utilities, a table-driven TLS extension framework, and a robust error-handling macro system. Rust bindings are first-class, offering safe wrappers (s2n-tls), async Tokio integration (s2n-tls-tokio), an HTTP client connector for Hyper (s2n-tls-hyper), and a metrics subscriber for handshake analysis. The library is used by AWS services like S3 and KMS, and includes interoperability tests against OpenSSL, GnuTLS, Java, and rustls. It is actively maintained with a sophisticated CI pipeline covering unit, integration, fuzz, formal proof, and performance regression tests across multiple platforms and libcrypto versions.
This repository contains the SQLite embedded SQL database engine source code, mirrored from the actively maintained SQLite project. The core is a C library that parses SQL, compiles it into a custom bytecode virtual machine (VDBE), and executes it against a B-tree storage layer backed by a transactional pager and a pluggable OS abstraction (VFS). Primary entry points are the public C API in src/sqlite.h.in, the sqlite3 command-line shell built from src/shell.c.in, and the init functions of many loadable extensions.
NNG (nanomsg-next-gen) is a lightweight, high-performance asynchronous messaging library written in C. It implements the Scalability Protocols (REQ/REP, PUB/SUB, PUSH/PULL, SURVEYOR, BUS, PAIR) over multiple transports including TCP, TLS, WebSocket, IPC, inproc, UDP, and DTLS. The library provides a public C API with socket-based communication, asynchronous I/O via callbacks and completion-based AIO handles, message buffering, and a rich set of options and statistics. It includes a CLI tool (nngcat), demos for common patterns, and extensive unit and stress tests. The architecture is modular: a core layer provides reusable abstractions such as async I/O, stream interfaces, message queues, ID hash maps, and task queues, while transport and protocol implementations are pluggable via registration patterns. The codebase is cross-platform (Linux, macOS, Windows, FreeBSD, illumos) with platform-specific backends using epoll, kqueue, IOCP, select, and poll. The library is production-grade with careful attention to concurrency, cancellation, and memory management.
Flecs is a high-performance Entity Component System (ECS) framework for games and simulations, written in C99 with a C++17 wrapper. It provides a data-oriented storage model where entities are stored in archetype tables with component columns, enabling cache-efficient iteration. The framework includes a powerful query language with support for relationships, inheritance, traversal, grouping, and sorting. It features an extensive addon system covering systems (pipelines), observers, prefabs, reflection/meta, JSON serialization, an embedded scripting language (Flecs Script) with async/await, a REST API with an HTTP server, statistics/metrics, alerts, and more. Flecs has zero external dependencies and is designed for lockless multi-core scheduling. It is used in commercial games and has a large ecosystem of examples and community bindings. Architecture: The library is modular with a core C API and optional addons compiled via preprocessor flags. The C++ API provides a fluent builder pattern for constructing entities, systems, queries, and observers. Key entry points include ecs_init/flecs::world for world creation, ecs_progress for running the game loop, ecs_insert for entity creation, ecs_system for defining systems, ecs_query for cached queries, and ecs_script for running Flecs Script files. Data flows involve creating entities with components, which are stored in tables; systems iterate over matching entities each frame; observers react to component changes; and the script engine allows runtime entity manipulation. External dependencies: None. Flecs is self-contained and uses only standard C library functions.
PROJ is a generic coordinate transformation library that converts coordinates between different coordinate reference systems (CRS). It includes a comprehensive catalog of map projections (over 190), datum shifts (grid-based, Helmert, TIN), and time-dependent deformation models. The library provides both a C API and a C++ ISO19111-compliant object model, along with command-line tools (proj, cs2cs, cct, projinfo, geod, gie, projsync). The architecture is a core transformation engine that dispatches through function pointers, with a pipeline system for chaining operations. The library relies on a bundled SQLite database (proj.db) containing EPSG definitions, and supports grid files for high-accuracy transformations. It is heavily used in geospatial software (e.g., GDAL, QGIS) and compiles on Linux, macOS, Windows, and WebAssembly through Emscripten.
This repository is the well-known stb single-file public domain C/C++ library collection by Sean Barrett. It contains over 20 self-contained header-only libraries covering a wide range of functionality: image loading and writing (stb_image, stb_image_write), image resizing (stb_image_resize2), TrueType font parsing and rasterization with signed-distance fields (stb_truetype), Ogg Vorbis audio decoding (stb_vorbis), dynamic data structures (stb_ds), high-performance formatted output (stb_sprintf), rectangle packing (stb_rect_pack), text editing widget logic (stb_textedit), Perlin noise (stb_perlin), voxel rendering (stb_voxel_render), tilemap editing (stb_tilemap_editor), and many more. Each library is designed to be dropped into a project by including the header and defining an implementation macro in exactly one source file, requiring no external dependencies beyond standard C libraries. The repo also includes extensive test programs, fuzzing harnesses, and demo applications (e.g., a Minecraft-style voxel viewer, font oversampling demo). It is widely used in game development, tooling, and embedded systems due to its ease of integration and permissive licensing.
Capstone is a multi-architecture disassembly engine written in C, derived from LLVM's MC disassembler. It supports over 20 architectures including x86, ARM, AArch64, MIPS, PowerPC, RISC-V, and more. The core library provides a stable C API (cs_open, cs_disasm, cs_option, etc.) and includes per-architecture backends with mapping, disassembler, and instruction printer modules. The architecture is modular: each architecture has a Module.c that registers callbacks into a common cs_struct. The primary data flow is: user provides raw bytes and arch/mode, the engine selects the appropriate disassembler, decodes instructions into MCInst, then prints via instruction printer, optionally filling cs_detail with operand/register/group information. The repository also includes a CLI tool (cstool), extensive test suites (MC regression tests, cstest YAML-based detail tests), fuzzing harnesses, and an automated LLVM sync pipeline (auto-sync) that translates LLVM C++ disassembler code to C using tree-sitter patches. The codebase is well-structured with clean abstractions for operand models (MCInst/MCOperand), string output (SStream), and architecture-specific mapping. The auto-sync tooling is a notable engineering achievement, enabling systematic translation of LLVM backend code to C. Language bindings for Python, Java, OCaml, and others demonstrate the library's embeddability. The test infrastructure is comprehensive, covering both basic disassembly and detailed operand/register analysis. External dependencies are minimal for the core library (pure C), but the auto-sync tooling depends on Python, tree-sitter, clang-format, and lit. Overall, Capstone is a mature, actively maintained disassembly framework with high craftsmanship and reusable components.
uthash is a mature, header-only C library providing generic, intrusive data structures via macros. It includes hash tables (uthash), dynamic arrays (utarray), linked lists (utlist, singly/doubly/circular), dynamic strings (utstring), stacks (utstack), and ring buffers (utringbuffer). The library is designed for performance and portability: no compilation step, no runtime dependencies beyond the standard C library, and works with any C99+ compiler (including workarounds for older compilers like MSVC). The core design pattern embeds a small handle (e.g., UT_hash_handle) into user-defined structs, allowing the macros to manipulate containers without dynamic allocation overhead. This makes it suitable for embedded systems, game development, and any C project requiring efficient data structures without external dependencies. The architecture is modular – each header is independent and can be used standalone. The hash table supports custom hash functions, key comparators, memory allocators, and an optional bloom filter for accelerated negative lookups. Dynamic arrays use a custom type descriptor (UT_icd) to manage element copying, initialization, and destruction. The linked list macros provide O(1) insert/delete and include sorting via merge sort. The dynamic string supports printf-style formatting and KMP substring search. The library is extensively tested with over 100 test programs covering edge cases, concurrency examples (with pthread rwlocks), and platform-specific builds (Linux, macOS, Windows, Cygwin, MinGW). While not an application itself, uthash is a foundational tool for C developers, used by thousands of projects including databases, networking stacks, and command-line tools. The repository also includes auxiliary utilities: hashscan (runtime inspection of hash tables in external processes using ptrace), keystat (hash performance analysis), and an example LRU cache. The codebase is stable (v2.4.0) with active maintenance via GitHub Actions and issue tracking.
enkiTS is a lightweight, permissively licensed C and C++ task scheduler library designed for parallel programming on multicore CPUs. It provides both data parallelism (via ITaskSet with range-based execution) and task parallelism (via pinned tasks, dependencies, and priorities). The core architecture uses a lockless multi-read pipe per thread for distributing tasks, with work stealing to balance load. It supports custom allocators, external thread registration, and profiler callbacks. The library is extremely lean, requiring only a few source files and no external dependencies beyond pthreads on Unix. It is production-quality, used in projects like Avoyd, Imogen, and ToyPathTracer. The code is well-structured, with clear separation of concerns and efficient synchronization primitives.
igraph is a high-performance C library for complex network analysis and graph theory. It provides a comprehensive suite of graph algorithms including centrality measures (PageRank, betweenness, eigenvector), community detection (Leiden, Infomap, label propagation, walktrap), isomorphism (VF2, BLISS), shortest paths, flows, cliques, motifs, graph layout (Fruchterman-Reingold, Kamada-Kawai, DRL, Sugiyama), and random graph generation (Erdos-Renyi, Barabasi-Albert, stochastic block models). The library is designed for efficiency and portability, with a stable C API that serves as the backend for higher-level interfaces in R (igraph), Python (python-igraph), and Mathematica (IGraphM). The architecture is a monolithic C library with optional C++ components for performance-critical algorithms (e.g., PRPACK for PageRank, DRL layout, BLISS isomorphism). It includes a rich set of internal data structures (vectors, matrices, sparse matrices, heaps, tries, prefix sum trees) and a robust error handling framework using IGRAPH_CHECK and IGRAPH_FINALLY macros. The library supports multiple graph file formats (GML, GraphML, Pajek, LGL, NCOL, DL, DIMACS) and provides attribute handling for vertex/edge metadata. Key strengths include extensive testing (unit tests, regression tests, benchmarks, fuzzing via OSS-Fuzz), reproducible random number generation (PCG, MT19937), and a well-documented API with semantic versioning. The codebase is actively maintained with frequent releases and a clear deprecation policy. While primarily a C library, it integrates external solvers (ARPACK, LAPACK, GLPK) and bundled vendor code (cliquer, bliss, plfit) for specialized algorithms.
This repository provides a single-header C/C++ library (utf8.h) for UTF-8 string manipulation. It implements a comprehensive set of functions mirroring the standard C string.h and strings.h APIs, but operating on UTF-8 encoded strings with codepoint-aware semantics. The library includes functions for length calculation (utf8len), comparison (utf8cmp, utf8casecmp), concatenation (utf8cat), searching (utf8chr, utf8str, utf8casestr), validation (utf8valid, utf8makevalid), case conversion (utf8lwr, utf8upr), and codepoint extraction (utf8codepoint, utf8rcodepoint). It supports C++14 constexpr for many functions and C++20 char8_t. The code is highly portable, tested across multiple compilers (gcc, clang, MSVC, tcc) and platforms (Linux, macOS, Windows), and includes extensive unit tests covering edge cases like invalid sequences, truncated strings, and case mapping for Latin, Greek, and Cyrillic scripts. The library is self-contained with no external dependencies beyond the standard C library.
OpenCC (Open Chinese Convert) is a deterministic, dictionary-based Chinese text conversion library and CLI tool that converts between Simplified Chinese, Traditional Chinese, and regional variants (Taiwan, Hong Kong, Japan), including experimental Small Seal Script (Unicode 18.0). It is used in production by input method engines (RIME, fcitx), dictionary tools (GoldenDict), and NLP pipelines for text normalization and preprocessing. The core is a C++ library with a plugin-based segmentation system (built-in mmseg, optional jieba). Conversion is config-driven via JSON files that define normalization, segmentation, and a chain of dictionary groups with match policies (short_circuit, union). Dictionaries are compiled from text files into binary formats (marisa-trie .ocd2, legacy .ocd). The library exposes C, C++, Python (pybind11), and Node.js (N-API) APIs. A CLI tool provides conversion, inspection, ambiguity detection, and dictionary management. Data flows: text input is segmented, then each segment is looked up in a chain of dictionaries (character, phrase, regional variants). The first match is used (short_circuit) or all matches are unioned. The result is reassembled. The system supports streaming conversion with bounded memory via chunked processing. External dependencies include marisa-trie, darts-clone, rapidjson, pybind11, Google Test, and Google Benchmark; optional jieba (C++ fork) for segmentation plugin.
HTTrack is a mature, production-grade website mirroring/offline browsing tool written in C. It recursively downloads websites to a local directory, rewriting links to enable offline browsing. The system includes a command-line interface (httrack), a web-based GUI (htsserver), a caching proxy (proxytrack), and a shared library (libhttrack). The core engine manages multi-threaded HTTP/HTTPS/FTP downloads, incremental updates via a zip-based cache, WARC/WACZ archival output, and robust link filtering. The architecture is monolithic but modularized into loosely coupled subsystems (caching, URL naming, HTML parsing, content decoding, robots.txt handling, etc.). Key entry points are in src/httrack.c, src/htsserver.c, and src/proxy/main.c. Data flows: user-provided URL seeds → DNS resolution → HTTP fetch → HTML parsing → link extraction → deduplication → resource download → local mirror tree or WARC output. External dependencies include zlib (required), OpenSSL (optional for WARC digests), and iconv (optional for charset conversion). The codebase is extensively tested with integration tests, fuzz harnesses, and self-tests; it also includes a standalone reusable test HTTP server and a WARC validator.
nDPI is a production-grade open-source deep packet inspection (DPI) library written in C, developed primarily by ntop.org. It identifies hundreds of network protocols by inspecting packet payloads using static signatures, heuristics, state machines, and machine learning classifiers. The library extracts rich metadata (TLS fingerprints, DNS queries, HTTP headers, etc.), computes flow risks (malware, DGA, obfuscation, anomalies), and supports output serialization in JSON, CSV, or TLV formats. It is designed to be embedded into network monitoring applications such as ntopng, nProbe, and Wireshark (via a Lua extcap plugin), and also ships as a standalone CLI tool (ndpiReader) and Python bindings. The codebase is well-structured with a modular dissector pattern, extensive fuzzing infrastructure, and a comprehensive test suite. While the primary focus is on library reuse, it also contains research-grade components like DGA detection models (scikit-learn/TensorFlow) and time-series anomaly detection, giving it a hybrid character leaning heavily toward a software library.