Xapiand is assembled from 59 standalone Kronuz libraries plus a handful of
third-party ones, all pulled in at CMake configure time through FetchContent.
Most were extracted from Xapiand’s own tree into their own repositories, so each
one is small, focused, and testable on its own. Because they’re fetched, a
network connection is required the first time you configure (see
Building from Sources ).
This page lists them by role, with a link to each repository, and shows how the
composite ones depend on each other.
Most libraries are leaves that Xapiand consumes directly. A handful are
composite : they pull their own dependencies, which is where the tree gets its
depth. asio and rapidjson are the only third-party libraries reached purely
transitively.
├── msgpack ──── atomic-shared-ptr, enum-reflection, strict-stox,
│ located-exception, perfect-hash, hashes, repr, rapidjson*
├── http ─────── radix-router, http-parser, compressors, reactor, asio*
├── cluster ──── reactor ──── asio*
├── storage ──── compressors, errno-names, strict-stox, stringified
├── flume ────── compressors
└── (50+ leaf libraries consumed directly — see the tables below)
* third-party, reached only transitively:
rapidjson → github.com/Tencent/rapidjson
asio → github.com/chriskohlhoff/asio (1.36.0)
The runtime foundation: threading, scheduling, logging, storage, and OS
abstraction.
Library Purpose threadpool C++20 thread pool with named threads scheduler Timer-wheel scheduler and debouncer logger Structured logging with categories traceback Crash backtraces + signal handling (atos / addr2line) storage Crash-safe binary volumes with WAL io POSIX file/socket I/O (EINTR-safe, portable) fs Filesystem utilities (stat, mkdir, walk) system OS abstraction (fd limits, CPU count, RSS/VSZ) cuuid UUID generation and parsing
Library Purpose reactor Asio server runtime (shared-nothing reactor pool) http HTTP/1.1 framework (routing, compression, ranges) http-parser HTTP parser (accepts custom REST verbs) radix-router Radix-tree HTTP path router msgpack MessagePack + RapidJSON adaptor + JSON-Patch url-parser URL / URI parsing cluster Cluster membership and coordination flume Message streaming / fan-out between nodes
Library Purpose soundex Soundex phonetic encoding (EN/FR/DE/ES) string-similarity Levenshtein, Jaro-Winkler, Jaccard, Sørensen-Dice, LCS double-metaphone Double Metaphone phonetic encoding htm Hierarchical Triangular Mesh (geospatial indexing)
Library Purpose endian Endian detection and swapping utype toUType (enum to underlying type)base-x Base-N encoding (Base32, Base58, …) uinteger_t Arbitrary-precision unsigned integers cartesian Cartesian coordinate math math Math helpers (abs, min, max, gcd)
Library Purpose md5 MD5 hashing sha256 SHA-256 hashing hashes Assorted non-cryptographic hash functions random Fast PRNG (xorshift128+) compressors LZ4 / zstd / deflate codecs
Library Purpose strings String utilities (split, trim, format) split String splitting and tokenization escape Character escaping (URL, JSON, HTML) repr Human-readable representation of values stringified Stringification of types char-classify Unicode character classification strict-stox Strict string-to-number conversion times ISO 8601 duration parsing/formatting datetime Date/time parsing and formatting
These are vendored from outside the Kronuz ecosystem, also via FetchContent.
Library Source Purpose RapidJSON Tencent Fast JSON parser/writer cppcodec tplgy Base-N codecs CLI11 CLIUtils Command-line argument parsing LZ4 lz4 LZ4 compression prometheus-cpp jupp0r Prometheus metrics sol2 ThePhD Lua C++ bindings Lua lua.org Scripting engine (5.4.7) asio chriskohlhoff Networking (pulled transitively by http / reactor)