Repository navigation
v0.25.0
Breaking changes
Each of these turns a silently wrong answer into the right one or into an error.
ORDER BYafter an aggregating orDISTINCTprojection reads only that projection's columns. A key over the grouping keys (WITH n, count(m) AS c ORDER BY c DESC, n.key) now sorts; it used to be ignored. A key that reads anything else from before the projection is a compile error.- A sort key that raises is an error, where its row used to sort as
null. - A pattern on a variable bound to
nullmatches nothing.MATCHreturns no rows where it raised; a pattern comprehension,EXISTS { }andCOUNT { }find nothing where they matched every node in the graph. - The order of a pattern comprehension's list can differ where an index seek, or a walk from the last node of the pattern, replaced a label scan. Sort the list where the order matters.
=~with a pattern that does not compile is an error, notnull.- A write whose expression fails is an error, not a success without the property.
- lora-node: an integral number parameter above 2^32 is stored as an
INTEGER, not aFLOAT.
Highlights
- lora-node: a transaction whose statement was refused before the engine ran it (an already-aborted signal, invalid options) no longer keeps the writer lock.
isOpen === falsemeans the lock is free. - Engine: a
WHEREon an indexed property inside a pattern comprehension,EXISTS { }orCOUNT { }seeks (=,IN,STARTS WITH) instead of scanning the label once per row. - lora-graphql: creates and keyed updates that connect go to the database as one call; a lookup by
@keyshares one compile across keys; relationship rules hold on fields to interfaces and unions; triggers, workers and input validation directives.
[0.25.0] - 2026-10-12
Bug fixes
- lora-graphql: The plan check passes a count-only root connection (
d0de0ac) - executor: A null pattern variable matches nothing; a subquery WHERE seeks (
46fdfe3) - analyzer: ORDER BY after an aggregation reads grouping keys, or fails (
ecd0a41) - database: A write that gives up waiting for the writer lock says so (
3c480ad) - lora-node: A statement the engine never ran rolls its transaction back (
0bf657d) - lora-graphql: Single-call updates after an independent review (
0ea1dd6) - executor: A sort key that fails is an error, not a null (
1ae3261) - lora-node: A write batch that never got the lock is forgotten (
2cfb797) - lora-graphql: Single-call creates after an independent review (
4373cba) - lora-graphql: A batched mutation's database time is counted once (
8873786) - lora-graphql: A second review of triggers and workers; check() plans mutations (
f40c73b) - lora-graphql: Triggers and workers after an independent review (
e4d9c09) - lora-node: Large integers stay integers; begin() takes timeoutMs and signal (
e6e43e7) - store: An int8 HNSW index normalises a vector before quantising it (
8b620de) - database: A failing write keeps nothing and waits no longer than its timeout (
db26a5c) - executor: A bad regex is an error; local temporals take duration arithmetic (
8e9731c) - lora-graphql: BigInt is stored as an integer; a refused scalar value is coded (
1f7fc6b) - lora-graphql: UPDATE_EDGE alone keeps the type's update mutations (
1c81b96) - lora-graphql: A keyed filter on an UNDIRECTED relationship matches both ways (
eddd1b5)
Documentation
- Serving from several threads, and the open list as it stands (
7d8057f) - Null pattern variables, ORDER BY after aggregation, subquery seeks (
e387e25) - What single-call updates measure (
ed6cfa3) - The implementation plan, the triggers design, and the list as it stands (
b76a6ad) - docs-site: Triggers and workers, OVERLOADED, and how a mutation is sent (
ad35aa3) - Remove the multi-writer plan; one writer at a time is the design (
1371514) - Validation rules for clients, tools and @cypher arguments (
5972d65) - @normalize, constrained scalars and validators (
ea21d47) - design: Input validation for lora-graphql (
aec5f24) - docs-site: The validation directives and their errors (
06117a0) - docs-site: Every directive gets its own section and an example (
f943345) - docs-site: GraphQL gets its own tab, a tutorial and worked examples (
0f44001) - lora-graphql: The tutorial project, with a test of every server (
e7d80c4)
Features
- lora-graphql: Relationship rules on a field to an interface or union (
2f9a232) - executor: Assert(condition, message) fails the statement unless the condition is true (
4409938) - lora-graphql: Check() reports what a full-text index skips; a lint for low-cardinality indexes (
3f884d8) - lora-graphql: MaxTotalCount stops a connection's count at a cap (
7a5b092) - lora-graphql: @cypher(cost:) charges a hand-written statement against maxCost (
cf521f9) - lora-graphql: Triggers, workers and a shorter hold on the writer lock (
b4554ac) - lora-graphql: Validation rules reach clients, tools and @cypher arguments (
0776fc0) - lora-graphql: @normalize, rules on custom scalars, and validators (
564fa40) - lora-graphql: Validation rules on fields (
8354bed)
Maintenance
- Remove dead code and stale comments; error messages follow the style guide (
c0440d4)
Performance
- lora-graphql: Creates and keyed updates that connect are one call (
b4d7060) - lora-graphql: One compile serves every key of a lookup by @key (
e9369fa) - lora-graphql: An update of one node by key is one call into the database (
a7d08fc) - lora-graphql: A create without relationship writes is one call into the database (
6e04df4) - lora-node: A write batch waits for the writer lock on its own thread and commits in one step (
460b82d) - lora-graphql: Sign cursors with node:crypto; the document cache is LRU (
73f09ae)
Tests
- lora-graphql: Bench scenarios for connects, bulk writes and subscribers (
99b7da7) - database: Triage the ignored tests (
bcb1613) - lora-graphql: Run the website's GraphQL pages (
168e9ce)
Assets
| Platform | Asset |
|---|---|
| Linux x86_64 | lora-server-v0.25.0-x86_64-unknown-linux-gnu.tar.gz |
| Windows x86_64 | lora-server-v0.25.0-x86_64-pc-windows-msvc.zip |
| macOS Intel | lora-server-v0.25.0-x86_64-apple-darwin.tar.gz |
| macOS Apple Silicon | lora-server-v0.25.0-aarch64-apple-darwin.tar.gz |
| Full changelog | CHANGELOG.md |
Each binary archive ships with a matching .sha256 file. An aggregated lora-server-v0.25.0-SHA256SUMS.txt is also attached.
Download, verify, and run instructions: see RELEASING.md and the README.