aboutsummaryrefslogtreecommitdiffstats
path: root/README.org
diff options
context:
space:
mode:
Diffstat (limited to 'README.org')
-rw-r--r--README.org18
1 files changed, 17 insertions, 1 deletions
diff --git a/README.org b/README.org
index 9ed3cb4..bf17fc4 100644
--- a/README.org
+++ b/README.org
@@ -30,12 +30,28 @@ The NT kernel is a good model for a dedicated database kernel for three reasons.
* Current Status
-The open-handle pipeline is wired end-to-end and cursors pull tuples lazily from the storage backend one page at a time through the Tarski FOL engine. The active backend (=SqliteBackend=) keeps a =kv(hash, value)= table for content-addressed tuple data and a =relation_index(path, hash)= table for relation membership. =InMemoryBackend= provides the same interface for tests.
+The open-handle pipeline is wired end-to-end and cursors pull tuples lazily from the storage backend one page at a time through the Tarski FOL engine. The active backend (=SqliteBackend=) keeps a single =kv(hash, value)= table for content-addressed tuple data. Relation membership is tracked by a sorted Merkle B-tree (=Merkle=) whose nodes are stored in the same KV table; only the root hash per relation is held in memory. =InMemoryBackend= provides the same interface for tests.
+
+An =extern "C"= API (=RNT_C_API.h=) exposes the full manager pipeline to OCaml via ctypes, enabling Sakura to use this kernel as its storage and query execution layer.
Several manager features are still being designed: dual ref counting, type callbacks, trie-based object lookup, and the namespace reparse layer. These are specified in header comments.
* Building
+** Unix / macOS with Nix
+
+The easiest Unix path is the Nix development shell. It provides CMake, Ninja,
+SQLite, PicoSHA2 headers, Catch2, and debugger tooling.
+
+#+begin_src shell
+nix develop
+cmake -S . -B _build -G Ninja -DCMAKE_BUILD_TYPE=Debug
+cmake --build _build
+ctest --test-dir _build --output-on-failure
+#+end_src
+
+** Windows with Visual Studio / MSVC
+
Requires MSVC, CMake 3.10 or later, and vcpkg. Dependencies (=sqlite3= and =picosha2=) are fetched and built automatically during CMake configure via the vcpkg manifest.
#+begin_src shell