Skip to content

Dependencies

Edit page

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.

Xapiand
├── msgpack ──── atomic-shared-ptr, enum-reflection, strict-stox,
│ located-exception, perfect-hash, hashes, repr, rapidjson*
├── http ─────── radix-router, http-parser, compressors, reactor, asio*
│ └── 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.

LibraryPurpose
threadpoolC++20 thread pool with named threads
schedulerTimer-wheel scheduler and debouncer
loggerStructured logging with categories
tracebackCrash backtraces + signal handling (atos / addr2line)
storageCrash-safe binary volumes with WAL
ioPOSIX file/socket I/O (EINTR-safe, portable)
fsFilesystem utilities (stat, mkdir, walk)
systemOS abstraction (fd limits, CPU count, RSS/VSZ)
cuuidUUID generation and parsing
LibraryPurpose
reactorAsio server runtime (shared-nothing reactor pool)
httpHTTP/1.1 framework (routing, compression, ranges)
http-parserHTTP parser (accepts custom REST verbs)
radix-routerRadix-tree HTTP path router
msgpackMessagePack + RapidJSON adaptor + JSON-Patch
url-parserURL / URI parsing
clusterCluster membership and coordination
flumeMessage streaming / fan-out between nodes
LibraryPurpose
soundexSoundex phonetic encoding (EN/FR/DE/ES)
string-similarityLevenshtein, Jaro-Winkler, Jaccard, Sørensen-Dice, LCS
double-metaphoneDouble Metaphone phonetic encoding
htmHierarchical Triangular Mesh (geospatial indexing)
LibraryPurpose
queueBounded blocking MPMC double-ended queue
stashHash table
bloom-filterBloom filter
lru-cacheLRU cache with time-to-live
LibraryPurpose
endianEndian detection and swapping
utypetoUType (enum to underlying type)
base-xBase-N encoding (Base32, Base58, …)
uinteger_tArbitrary-precision unsigned integers
cartesianCartesian coordinate math
mathMath helpers (abs, min, max, gcd)
LibraryPurpose
md5MD5 hashing
sha256SHA-256 hashing
hashesAssorted non-cryptographic hash functions
randomFast PRNG (xorshift128+)
compressorsLZ4 / zstd / deflate codecs
LibraryPurpose
stringsString utilities (split, trim, format)
splitString splitting and tokenization
escapeCharacter escaping (URL, JSON, HTML)
reprHuman-readable representation of values
stringifiedStringification of types
char-classifyUnicode character classification
strict-stoxStrict string-to-number conversion
timesISO 8601 duration parsing/formatting
datetimeDate/time parsing and formatting
LibraryPurpose
epochUnix epoch / timestamp utilities
nanosleepPortable nanosleep
errno-namesErrno → name mapping
perfect-hashCompile-time perfect hash generation
enum-reflectionEnum name reflection
lazyLazy static initialization
atomic-shared-ptrAtomic shared_ptr
iteratorsIterator helpers
allocatorsCustom memory allocators
located-exceptionSource location in exceptions
static-stringCompile-time string handling
LibraryPurpose
term-colorANSI terminal colors
fantasynameRandom name generator (Markov)
boolean-parserBoolean expression parser

These are vendored from outside the Kronuz ecosystem, also via FetchContent.

LibrarySourcePurpose
RapidJSONTencentFast JSON parser/writer
cppcodectplgyBase-N codecs
CLI11CLIUtilsCommand-line argument parsing
LZ4lz4LZ4 compression
prometheus-cppjupp0rPrometheus metrics
sol2ThePhDLua C++ bindings
Lualua.orgScripting engine (5.4.7)
asiochriskohlhoffNetworking (pulled transitively by http / reactor)