Documentation

Build Guide

Build Absolute DB from source on Linux, macOS, ARM64, and WebAssembly. A single make release produces all three binaries with zero external dependencies.

Prerequisites

Absolute DB has zero external library dependencies — only the system C runtime is required. The build toolchain itself needs:

ToolMinimum VersionNotes
GCC or ClangGCC 9+ / Clang 11+C11 standard required
GNU Make4.0+BSD Make not supported
git2.20+For cloning and versioning
build-essentialAny recentLinux: apt/dnf/pacman

Install on Ubuntu/Debian:

bash — install build tools (Ubuntu/Debian)
sudo apt update
sudo apt install -y build-essential git

Install on Fedora/RHEL:

bash — install build tools (Fedora/RHEL)
sudo dnf groupinstall -y "Development Tools"
sudo dnf install -y git

Install on macOS (via Xcode Command Line Tools):

bash — install build tools (macOS)
xcode-select --install
Optional: For WebAssembly builds, install Emscripten (emcc). For AFL++ fuzzing, install afl-fuzz. For Debian packaging, install dpkg-deb. None of these affect the main build.

Clone the Repository

bash — clone and enter directory
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.

Core Build Targets

All builds are driven by a single top-level Makefile. Run make help at any time to list all available targets.

bash — core build 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
TargetDescription
make allDebug build + all 3,292 test binaries; -Wall -Wextra -Wpedantic -Werror
make releaseStripped, optimised binaries (-Os -flto -s); enforces binary size gates
make cleanRemove build/, bin/, and all generated artefacts
make benchRun the full benchmark suite; outputs P50/P99/P999 latencies + throughput
make wasmBuild WebAssembly target (requires emcc); output: WASM ≤ 5 MB gzip
make debBuild a Debian .deb package (requires dpkg-deb)
make distCreate a source tarball for distribution
make collect-envEmit a JSON report of hardware and environment details

Test Targets

The full test matrix comprises 2,737 tests across 26+ suites. Run individual suites during development or the full matrix before merging.

bash — run tests
# 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
TargetSuiteTests
make testCore98
make test-advancedAdvanced features471
make test-criticalCritical paths98
make test-enterpriseEnterprise features188
make test-v6v6+ features283
make test-storageLIRS, compression, B+Tree55
make test-securityCrypto, TLS, PQC, auth136
make test-distributedRaft, CRDT, multi-region168
make test-lsmLSM-Tree backend49
make test-opsBackup, PITR, restore55
make test-tiers4-tier licensing matrix257
make test-tier-allAll 4 tier shell scripts257
make test-workloadWorkload management165
make test-perfSIMD, JIT, parallel81
make test-mainDM Data Vault25
make test-cluster-coreCluster core62
make test-cluster-raidC-RAID (RAID-0/1/5)56
make conformanceSQL:2023 conformance150

Client compatibility tests require psycopg2, Node.js, and a JDK:

bash — client compatibility
# Requires: pip install psycopg2-binary; npm install pg; java installed
make test-clients

Quality Gates

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.

bash — quality gate targets
# 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
GateRequirementCurrent
make test-asan0 memory errors87/87 PASS ✓
make test-ubsan0 UB violations87/87 PASS ✓
make test-tsan0 data races87/87 PASS ✓
make pqc-katALL PASS (3 algorithms)ALL PASS ✓
make conformance150/150 (100%)150/150 ✓
make releaseCLI ≤ 12 MB, server ≤ 30 MB, lite ≤ 3 MB, 0 warnings~154 KB / ~230 KB / ~154 KB ✓

Output Binaries

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.

BinaryPathSize (stripped)Purpose
absdbbin/absdb~154 KBFull CLI: interactive SQL, admin, migration, bench
absdb-serverbin/absdb-server~230 KBFull server: all protocols, TLS, cluster, REST, gRPC
absdb-litebin/absdb-lite~154 KBEmbedded SQL-only; no network; for IoT/edge/WASM
libabsdb.abuild/libabsdb.a~50 MBStatic link library (all features, all platforms)
Size context: 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.

Platform Notes

Linux x86-64

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.

bash — Linux x86-64 build
make release
# Verifies: CLI ≤ 12 MB, server ≤ 30 MB, lite ≤ 3 MB

Linux ARM64 (AArch64)

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.

bash — ARM64 build
# Cross-compile on x86-64 host
make release CC=aarch64-linux-gnu-gcc

# Or build natively on ARM64 host
make release

macOS (Intel and Apple Silicon)

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.

bash — macOS build
# Universal binary (Intel + Apple Silicon)
make release ARCH=universal

# Apple Silicon only
make release

WebAssembly (Browser / Cloudflare Workers)

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.

bash — WASM build
# Requires: emcc (Emscripten SDK)
make wasm

# Output: build/absdb.wasm + build/absdb.js (~3 MB, ≤ 5 MB gzip)

Raspberry Pi (Embedded / IoT)

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.

bash — minimal embedded build
# 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 & Uninstall

bash — install and uninstall
# 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

Packaging

bash — package targets
# 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/.

Continue Reading

Quick Start Testing Guide Deployment Guide

Ready to run Absolute DB?

~154 KB binary  ·  zero external dependencies  ·  2,737 tests passing  ·  SQL:2023 100%

Download Free → View Pricing All Docs