Repository navigation
v1.2.2 — 2026-08-10
Release Notes
Drop-in replacement for v1.2.1. No file-format changes, no public API changes.
Bug fixes
-
Two handles on one file in the same process (#304):
FileLock::acquiretreated a lock file whose holder PID equalled our own as stale, deleted it, and opened anyway — on the theory that it could only be a leaked handle. The far more likely cause is a handle that is open and in use right now elsewhere in the process, so the "self-heal" silently produced two liveFileBackends on one file. Each caches its ownheader.page_count, allocates new pages from that count, and bounds-checksread_pageagainst it, so the two page tables diverge. That — not an allocation off-by-one — is the source of the intermittentPage N out of bounds (total pages: M). It also corrupted the lock itself: whichever handle dropped first ranFileLock::dropand removed the lock file that by then belonged to the survivor, leaving a live handle unlocked and admitting other processes too. A lock held by our own PID is now refused with an error naming the same-process case; a lock held by a different, dead process is still reclaimed as before. Behaviour change: callers that relied on reopening a path they already hold open now get an error instead of silent corruption, and should reuse the existing handle (Minigrafis cheap to clone and all clones share one database). -
String comparison in predicates:
[(< ?a ?b)],>,<=and>=now order two strings lexicographically instead of failing. Previously every ordering predicate routed throughto_float_pair, which errors on non-numeric operands, so a string comparison silently matched no rows — and because both directions returned nothing, a range filter dropped the entire relation rather than partitioning it. This most often bit ISO-8601 timestamps stored as strings. The predicate path now agrees withvalue_lt/value_cmp, whichmin,maxand:order-byalready use. Mixed-type comparison (string vs number) remains an error, and NaN comparisons remain false.
Download minigraf 1.2.2
| File | Platform | Checksum |
|---|---|---|
| minigraf-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| minigraf-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| minigraf-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| minigraf-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| minigraf-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |