Skip to content

Latest commit

 

History

History
139 lines (96 loc) · 3.84 KB

File metadata and controls

139 lines (96 loc) · 3.84 KB

Getting Started with QIHSE

This guide covers the shortest path from a fresh checkout to a working local QIHSE build.

For the project overview, start with the root README. For subsystem details, use the documentation hub.

1. Check the toolchain

QIHSE is a native C/C++ project targeting Linux. The build also integrates Python, OpenSSL, liburing, LuaJIT, eBPF/XDP, SQLite, and post-quantum cryptography components.

Run the built-in environment check first:

./qihse dev-setup

The launcher is the preferred entry point because it exposes the build, test, benchmark, database, server, and ISA-detection workflows in one place.

./qihse --help
./qihse status
./qihse isa-info

2. Build

The normal build automatically selects supported CPU instruction paths from the host CPU.

./qihse build

Equivalent Makefile workflow:

make clean && make

Useful alternatives:

./qihse build-ctypes
./qihse build-native
./qihse build-tui

QIHSE has scalar and older-ISA fallbacks; AVX2/AVX-512 are accelerators, not a requirement for the entire codebase. Build flags can also be overridden explicitly through the Makefile when testing a specific ISA path.

3. Run tests

./qihse test

or:

make test

Security-sensitive protocol code has additional regression, sanitizer, concurrency, TLS, ACL, and fuzz coverage. See Security and the August 2026 UWP audit.

4. Inspect the local build

./qihse status
./qihse version
./qihse check

The launcher can also start a test server or database-oriented CLI:

./qihse server
./qihse db --help

5. Python

The repository contains native Python bindings and compatibility SDKs under sdks/python/.

The launcher can start a Python environment with QIHSE importable:

./qihse python

It can also run the bundled SDK demo:

./qihse demo

A minimal vector example looks like this:

import numpy as np
import qihse

with qihse.VectorDB.create("/tmp/example-qihse", dims=128) as db:
    vectors = np.random.rand(100, 128).astype(np.float32)
    db.add_vectors(vectors, ids=list(range(100)))
    results = db.search(vectors[0], k=10)
    print(results)

QIHSE also exposes KV, document, time-series, full-text, graph, task-queue, and protocol-compatibility interfaces. See Features and Compatibility.

6. Benchmarks

Run the general benchmark workflow with:

./qihse bench

The integrated QIHSE + KEYSTONE benchmark target is:

make bench-keystone-integrated

Do not treat benchmark numbers as portable constants. CPU generation, ISA selection, dataset shape, working-set size, compiler flags, and storage configuration all materially affect results. The methodology and recorded results live under docs/benchmarks/.

7. Where to go next

Goal Documentation
Understand the major subsystems Features
See supported external protocols and compatibility layers Compatibility
Understand architecture Architecture docs
Review SQL/query internals SQL engine
Review transactions and MVCC Transactions & MVCC
Review graph/Cypher support Graph engine
Review replication and backup Replication & backup
Review operational protocols Operational protocols
Review security posture Security
Review performance methodology Benchmarks
Read the deep technical treatment Technical whitepaper