<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>readcon-db</title>
<meta name="generator" content="Org Mode" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="description" content="Mmap-backed CON and convel corpus. LMDB via Heed, xxHash3 match, Rust C C++ Python Fortran." />
<link rel="icon" href="assets/logo.svg" type="image/svg+xml" />
<link rel="stylesheet" href="css/site.css" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link href="https://fonts.googleapis.com/css2?family=Atkinson+Hyperlegible:wght@400;700&family=JetBrains+Mono:wght@500;700&display=swap" rel="stylesheet" />
</head>
<body>
<div id="content" class="content">
<a class="skip" href="#main">Skip to content</a>
<div class="rule" aria-hidden="true"></div>
<p class="kicker">CON corpus</p>
<div class="mast">
<img class="logo" src="assets/logo.svg" width="72" height="72" alt="" />
<div>
<h1 class="wordmark"><span class="read">read</span><span class="con">con</span><span class="db">-db</span></h1>
<p class="lede">Mmap-backed CON and convel. LMDB via Heed. Indexes, xxHash3 exact match, and bindings for Rust, C, C++, Python, and Fortran.</p>
</div>
</div>
<p class="cta">
<a href="docs/">Docs</a>
<a href="https://github.com/lode-org/readcon-db">Source</a>
<a href="https://github.com/lode-org/readcon-core">readcon-core</a>
</p>
<section id="outline-container-main" class="outline-2">
<h2 id="main">With readcon-core</h2>
<div class="outline-text-2" id="text-main">
<p>
<strong>core</strong> parses and writes one stream or file. <strong>db</strong> keeps thousands of
those frames, indexes them, and lets many readers mmap the same tree.
CON text stays authoritative.
</p>
</div>
</section>
<section id="outline-container-org86dccf3" class="outline-2">
<h2 id="org86dccf3">Open, ingest, select</h2>
<div class="outline-text-2" id="text-org86dccf3">
<div class="org-src-container">
<pre class="src src-rust">use readcon_db::{ConCorpus, Select};
let db = ConCorpus::open("/tmp/corpus")?;
db.append_trajectory_path(1, "run.con")?;
let keys = db.select(&Select::new().require_symbol("Cu"))?;
let h = db.frame_hash(keys[0])?;
</pre>
</div>
</div>
</section>
<section id="outline-container-org8953c09" class="outline-2">
<h2 id="org8953c09">C, Python, Fortran</h2>
<div class="outline-text-2" id="text-org8953c09">
<dl class="org-dl">
<dt><strong>C / C++</strong></dt><dd><code>include/readcon-db.h</code> – <code>rkrdb_*</code> and RAII
<code>readcon_db::Corpus</code>. MPI: <code>readcon-db-mpi.h</code> takes the caller
communicator.</dd>
<dt><strong>Python</strong></dt><dd><code>maturin develop --features python</code> → <code>readcon_db.ConCorpus</code>.</dd>
<dt><strong>Fortran</strong></dt><dd><code>fortran/ReadConDb</code> with <code>bind(C)</code> helpers.</dd>
</dl>
<footer>
<p>MIT. Companion to readcon-core. Logo and site assets under <code>assets/logo</code> and <code>website/</code>.</p>
</footer>
</div>
</section>
</div>
</body>
</html>