From bb2701212346da5778625c551c72ed96bff8ab25 Mon Sep 17 00:00:00 2001 From: squidfunk Date: Thu, 2 Jul 2026 22:55:32 +0200 Subject: [PATCH] chore: release v0.0.25 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary This version adds `Sequence` as the ordered relation layer on top of `Expression`, which is what makes route matching work for keyed relations like `page -> tags`. With `Sequence`, those relations can now be represented and matched as ordered paths of ids or expressions instead of as a flat one-shot lookup. That matters because routes are not just "does this id match?” anymore. They are "does this relation appear in this order, with these constraints, and possibly with gaps or intermediate steps?” So the model is: - `Id` is one concrete node in the relation - `Selector` is a pattern over one node - `Expression` is a logical combination of selectors - `Sequence` is an ordered combination of expressions - `Filter` compiles that relation matching into something fast In practice, that means if the scheduler or routing layer sees a relation like `page -> tags`, it can now match a route against that relation shape. A route can say "I care about pages that have tags”, or "I care about tags that refer back to pages”, and the ordered sequence gives the compiler enough structure to evaluate that efficiently. That is the bigger idea: routes are no longer just attached to isolated ids, they can be attached to relation paths. `Sequence` is the piece that makes those paths first-class. Signed-off-by: squidfunk --- Cargo.lock | 12 ++++++------ Cargo.toml | 10 +++++----- crates/zrx-graph/Cargo.toml | 2 +- crates/zrx-id/Cargo.toml | 2 +- crates/zrx-module/Cargo.toml | 2 +- crates/zrx-scheduler/Cargo.toml | 2 +- crates/zrx-stream/Cargo.toml | 2 +- crates/zrx/Cargo.toml | 2 +- 8 files changed, 17 insertions(+), 17 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6b42ab8a..d281da3a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -350,7 +350,7 @@ dependencies = [ [[package]] name = "zrx" -version = "0.0.24" +version = "0.0.25" dependencies = [ "zrx-diagnostic", "zrx-executor", @@ -378,7 +378,7 @@ dependencies = [ [[package]] name = "zrx-graph" -version = "0.0.12" +version = "0.0.13" dependencies = [ "ahash", "thiserror", @@ -386,7 +386,7 @@ dependencies = [ [[package]] name = "zrx-id" -version = "0.0.20" +version = "0.0.21" dependencies = [ "ahash", "globset", @@ -399,7 +399,7 @@ dependencies = [ [[package]] name = "zrx-module" -version = "0.0.8" +version = "0.0.9" dependencies = [ "thiserror", "zrx-id", @@ -412,7 +412,7 @@ version = "0.0.1" [[package]] name = "zrx-scheduler" -version = "0.0.21" +version = "0.0.22" dependencies = [ "ahash", "anyhow", @@ -447,7 +447,7 @@ dependencies = [ [[package]] name = "zrx-stream" -version = "0.0.21" +version = "0.0.22" dependencies = [ "anyhow", "thiserror", diff --git a/Cargo.toml b/Cargo.toml index 21340d2e..cbe2ba06 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,14 +40,14 @@ pedantic = { level = "warn", priority = -1 } [workspace.dependencies] zrx-diagnostic = { version = "0.0.2", path = "crates/zrx-diagnostic" } zrx-executor = { version = "0.0.6", path = "crates/zrx-executor" } -zrx-graph = { version = "0.0.12", path = "crates/zrx-graph" } -zrx-id = { version = "0.0.20", path = "crates/zrx-id" } -zrx-module = { version = "0.0.8", path = "crates/zrx-module" } +zrx-graph = { version = "0.0.13", path = "crates/zrx-graph" } +zrx-id = { version = "0.0.21", path = "crates/zrx-id" } +zrx-module = { version = "0.0.9", path = "crates/zrx-module" } zrx-path = { version = "0.0.1", path = "crates/zrx-path" } -zrx-scheduler = { version = "0.0.21", path = "crates/zrx-scheduler" } +zrx-scheduler = { version = "0.0.22", path = "crates/zrx-scheduler" } zrx-storage = { version = "0.0.4", path = "crates/zrx-storage" } zrx-store = { version = "0.0.10", path = "crates/zrx-store" } -zrx-stream = { version = "0.0.21", path = "crates/zrx-stream" } +zrx-stream = { version = "0.0.22", path = "crates/zrx-stream" } ahash = "0.8.12" anyhow = "1.0.102" diff --git a/crates/zrx-graph/Cargo.toml b/crates/zrx-graph/Cargo.toml index ffb16f3a..8d017426 100644 --- a/crates/zrx-graph/Cargo.toml +++ b/crates/zrx-graph/Cargo.toml @@ -23,7 +23,7 @@ [package] name = "zrx-graph" -version = "0.0.12" +version = "0.0.13" description = "Graph construction and traversal utilities" edition.workspace = true rust-version.workspace = true diff --git a/crates/zrx-id/Cargo.toml b/crates/zrx-id/Cargo.toml index 7e841f11..8eb6e9ee 100644 --- a/crates/zrx-id/Cargo.toml +++ b/crates/zrx-id/Cargo.toml @@ -23,7 +23,7 @@ [package] name = "zrx-id" -version = "0.0.20" +version = "0.0.21" description = "Identifier abstractions and utilities" edition.workspace = true rust-version.workspace = true diff --git a/crates/zrx-module/Cargo.toml b/crates/zrx-module/Cargo.toml index 6ff1cbd2..dfb2ebd1 100644 --- a/crates/zrx-module/Cargo.toml +++ b/crates/zrx-module/Cargo.toml @@ -23,7 +23,7 @@ [package] name = "zrx-module" -version = "0.0.8" +version = "0.0.9" description = "Module system" edition.workspace = true rust-version.workspace = true diff --git a/crates/zrx-scheduler/Cargo.toml b/crates/zrx-scheduler/Cargo.toml index 48f1c90c..98b298c9 100644 --- a/crates/zrx-scheduler/Cargo.toml +++ b/crates/zrx-scheduler/Cargo.toml @@ -23,7 +23,7 @@ [package] name = "zrx-scheduler" -version = "0.0.21" +version = "0.0.22" description = "Scheduler for workflow execution" edition.workspace = true rust-version.workspace = true diff --git a/crates/zrx-stream/Cargo.toml b/crates/zrx-stream/Cargo.toml index f3e679c2..005ec931 100644 --- a/crates/zrx-stream/Cargo.toml +++ b/crates/zrx-stream/Cargo.toml @@ -23,7 +23,7 @@ [package] name = "zrx-stream" -version = "0.0.21" +version = "0.0.22" description = "Stream interface" edition.workspace = true rust-version.workspace = true diff --git a/crates/zrx/Cargo.toml b/crates/zrx/Cargo.toml index 22baf2fb..7aff5093 100644 --- a/crates/zrx/Cargo.toml +++ b/crates/zrx/Cargo.toml @@ -23,7 +23,7 @@ [package] name = "zrx" -version = "0.0.24" +version = "0.0.25" description = "Zen Reactive Extensions" edition.workspace = true rust-version.workspace = true