Build Absolute DB from source on Linux, macOS, ARM64, and WebAssembly. A single make release produces all three binaries with zero external dependencies.
Absolute DB has zero external library dependencies — only the system C runtime is required. The build toolchain itself needs:
| Tool | Minimum Version | Notes |
|---|---|---|
| GCC or Clang | GCC 9+ / Clang 11+ | C11 standard required |
| GNU Make | 4.0+ | BSD Make not supported |
| git | 2.20+ | For cloning and versioning |
| build-essential | Any recent | Linux: apt/dnf/pacman |
Install on Ubuntu/Debian:
sudo apt update
sudo apt install -y build-essential git
Install on Fedora/RHEL:
sudo dnf groupinstall -y "Development Tools"
sudo dnf install -y git
Install on macOS (via Xcode Command Line Tools):
xcode-select --install
emcc). For AFL++ fuzzing, install afl-fuzz. For Debian packaging, install dpkg-deb. None of these affect the main build.
git clone git@github.com:supportcall/AbsoluteDB.git
cd AbsoluteDB
The repository contains all source, tests, documentation, deployment configs, and client libraries. There are no submodules or external dependencies to fetch.
All builds are driven by a single top-level Makefile. Run make help at any time to list all available targets.
# Debug build + compile all 2,737 tests
# (no stripping, assertions enabled, fast compile)
make all
# Optimised release build with size verification
# Produces: bin/absdb (~154 KB), bin/absdb-server (~230 KB), bin/absdb-lite (~154 KB)
# Flags: -Os + LTO + strip; 0 compiler warnings enforced
make release
# Remove all build artefacts
make clean
# List all available make targets with descriptions
make help
| Target | Description |
|---|---|
make all | Debug build + all 3,292 test binaries; -Wall -Wextra -Wpedantic -Werror |
make release | Stripped, optimised binaries (-Os -flto -s); enforces binary size gates |
make clean | Remove build/, bin/, and all generated artefacts |
make bench | Run the full benchmark suite; outputs P50/P99/P999 latencies + throughput |
make wasm | Build WebAssembly target (requires emcc); output: WASM ≤ 5 MB gzip |
make deb | Build a Debian .deb package (requires dpkg-deb) |
make dist | Create a source tarball for distribution |
make collect-env | Emit a JSON report of hardware and environment details |
The full test matrix comprises 2,737 tests across 26+ suites. Run individual suites during development or the full matrix before merging.
# Core suite: 98 tests
make test
# Full matrix (all 2,737 tests)
make test && make test-advanced && make test-critical && \
make test-enterprise && make test-v6 && make test-storage && \
make test-security && make test-distributed && make test-lsm && \
make test-ops && make test-tiers && make test-workload && \
make test-perf && make test-main && make test-cluster-core && \
make test-cluster-raid && make conformance
| Target | Suite | Tests |
|---|---|---|
make test | Core | 98 |
make test-advanced | Advanced features | 471 |
make test-critical | Critical paths | 98 |
make test-enterprise | Enterprise features | 188 |
make test-v6 | v6+ features | 283 |
make test-storage | LIRS, compression, B+Tree | 55 |
make test-security | Crypto, TLS, PQC, auth | 136 |
make test-distributed | Raft, CRDT, multi-region | 168 |
make test-lsm | LSM-Tree backend | 49 |
make test-ops | Backup, PITR, restore | 55 |
make test-tiers | 4-tier licensing matrix | 257 |
make test-tier-all | All 4 tier shell scripts | 257 |
make test-workload | Workload management | 165 |
make test-perf | SIMD, JIT, parallel | 81 |
make test-main | DM Data Vault | 25 |
make test-cluster-core | Cluster core | 62 |
make test-cluster-raid | C-RAID (RAID-0/1/5) | 56 |
make conformance | SQL:2023 conformance | 150 |
Client compatibility tests require psycopg2, Node.js, and a JDK:
# Requires: pip install psycopg2-binary; npm install pg; java installed
make test-clients
All quality gates must be green before any merge to main. These run with sanitisers enabled and compile with -Wall -Wextra -Wpedantic -Werror — zero warnings are tolerated.
# AddressSanitizer: detects buffer overflows, use-after-free, heap corruption
# Must pass: 87/87 — zero ASan errors
make test-asan
# UndefinedBehaviorSanitizer: signed overflow, null deref, invalid casts
# Must pass: 87/87 — zero UBSan violations
make test-ubsan
# ThreadSanitizer: data races in concurrent code
# Must pass: 87/87 — zero data races
make test-tsan
# FIPS 203/204/205 Known Answer Tests for post-quantum cryptography
# Must show: ML-KEM-768 PASS, ML-DSA-65 PASS, SLH-DSA PASS
make pqc-kat
# SQL:2023 conformance: 150/150 = 100%
make conformance
# Combined hardening run (fuzz + asan + ubsan + conformance)
make test-hardening
# AFL++ corpus replay (requires afl-fuzz installed)
make test-fuzz
| Gate | Requirement | Current |
|---|---|---|
make test-asan | 0 memory errors | 87/87 PASS ✓ |
make test-ubsan | 0 UB violations | 87/87 PASS ✓ |
make test-tsan | 0 data races | 87/87 PASS ✓ |
make pqc-kat | ALL PASS (3 algorithms) | ALL PASS ✓ |
make conformance | 150/150 (100%) | 150/150 ✓ |
make release | CLI ≤ 12 MB, server ≤ 30 MB, lite ≤ 3 MB, 0 warnings | ~154 KB / ~230 KB / ~154 KB ✓ |
After make release, the following binaries are produced in the bin/ directory. All are statically linked against the Absolute DB library and stripped of debug symbols.
| Binary | Path | Size (stripped) | Purpose |
|---|---|---|---|
absdb | bin/absdb | ~154 KB | Full CLI: interactive SQL, admin, migration, bench |
absdb-server | bin/absdb-server | ~230 KB | Full server: all protocols, TLS, cluster, REST, gRPC |
absdb-lite | bin/absdb-lite | ~154 KB | Embedded SQL-only; no network; for IoT/edge/WASM |
libabsdb.a | build/libabsdb.a | ~50 MB | Static link library (all features, all platforms) |
absdb-lite (~154 KB) beats DuckDB embedded (~12 MB) and is feature-superior to SQLite (~600 KB). absdb-server (~230 KB) is comparable to PostgreSQL (~18 MB) while including TLS 1.3, post-quantum crypto, HNSW, BM25, Raft, and C-RAID in the same binary.
Primary development and CI platform. Full feature set including io_uring, AVX-512/AVX2/SSE4.2 SIMD, and AFL++ fuzzing. Tested on Ubuntu 22.04/24.04, Fedora 39, Debian 12, Amazon Linux 2023.
make release
# Verifies: CLI ≤ 12 MB, server ≤ 30 MB, lite ≤ 3 MB
Full support including NEON and SVE2 SIMD. Tested on AWS Graviton 3, Raspberry Pi 5 (Cortex-A76), and NVIDIA Orin. SVE2 is auto-detected at runtime — no build flag needed.
# Cross-compile on x86-64 host
make release CC=aarch64-linux-gnu-gcc
# Or build natively on ARM64 host
make release
Supported on macOS 12 Monterey and later. Apple Silicon (M1/M2/M3) uses NEON SIMD via the ARM64 kernel path. io_uring is not available on macOS; the POSIX I/O fallback is used automatically. Install via Homebrew for the easiest experience.
# Universal binary (Intel + Apple Silicon)
make release ARCH=universal
# Apple Silicon only
make release
The absdb-lite profile compiles to WebAssembly for browser embedding and Cloudflare Workers. Requires Emscripten. Output is ≤ 5 MB gzip. Persistence uses IndexedDB on browser and KV Namespace on Cloudflare Workers.
# Requires: emcc (Emscripten SDK)
make wasm
# Output: build/absdb.wasm + build/absdb.js (~3 MB, ≤ 5 MB gzip)
The absdb-lite binary runs on Raspberry Pi Zero 2 W (ARMv8 1 GHz, 512 MB RAM) and Pi 5. Idle RAM usage is ~4 MB at minimal configuration.
# Build lite binary optimised for embedded targets
make lite
# Run with minimal RAM (64 KB buffer pool)
./bin/absdb-lite --buffer-pool-mb 1 sensor.absdb
# Install to /usr/local (default prefix)
sudo make install
# Install to a custom prefix
sudo make install PREFIX=/opt/absdb
# Files installed:
# $PREFIX/bin/absdb
# $PREFIX/bin/absdb-server
# $PREFIX/bin/absdb-lite
# $PREFIX/include/absdb/
# $PREFIX/share/doc/absdb/
# Uninstall
sudo make uninstall
sudo make uninstall PREFIX=/opt/absdb
# Debian .deb package (requires dpkg-deb)
make deb
# Output: build/absdb_<VERSION>_amd64.deb
# Source tarball
make dist
# Output: build/absdb-latest.tar.gz
# Docker image
docker build -f deploy/docker/Dockerfile -t absolutedb/absdb:latest .
# Homebrew (macOS)
brew install --formula deploy/homebrew/absdb.rb
For Kubernetes deployment, see the Helm chart in deploy/kubernetes/ and the Terraform modules in deploy/terraform/.
~154 KB binary · zero external dependencies · 2,737 tests passing · SQL:2023 100%