diff --git a/.sampo/changesets/borrow-local-scopes.md b/.sampo/changesets/borrow-local-scopes.md deleted file mode 100644 index e83595b3..00000000 --- a/.sampo/changesets/borrow-local-scopes.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -cargo/nash-can: minor ---- - -Borrow module data and local binding maps during canonicalization instead of cloning the full environment at each scope. Preserve shadowing, diagnostics, and error recovery. diff --git a/.sampo/changesets/bounded-trait-lookup.md b/.sampo/changesets/bounded-trait-lookup.md deleted file mode 100644 index 58ad172d..00000000 --- a/.sampo/changesets/bounded-trait-lookup.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -cargo/nash-can: patch -cargo/nash-solve: patch ---- - -Use ordered map ranges for trait candidate lookup, evidence construction, entailment, and missing-implementation suggestions. Preserve candidate order without a second index. diff --git a/.sampo/changesets/concise-source-aware-diagnostics.md b/.sampo/changesets/concise-source-aware-diagnostics.md deleted file mode 100644 index f865e3ac..00000000 --- a/.sampo/changesets/concise-source-aware-diagnostics.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -cargo/nash-parse: minor -cargo/nash-constrain: minor -cargo/nash-solve: patch -cargo/nash-report: minor -cargo/nash-language-server: minor -cargo/nash-cli: minor ---- - -Use concise diagnostics with full expected/actual type comparisons, expectation-origin labels, and stable codes independent of display titles. Retain parser opening positions for closing-delimiter reports. Support arbitrary secondary labels and related reports across source files. - -Extend diagnostic JSON with code, severity, labels, suggestions, and related reports. JSON messages now contain styled prose without embedded source drawings; consumers should render the structured labels. LSP diagnostic codes now use stable identifiers instead of titles and include secondary and related source locations. diff --git a/.sampo/changesets/direct-ast-inference.md b/.sampo/changesets/direct-ast-inference.md deleted file mode 100644 index 134f2807..00000000 --- a/.sampo/changesets/direct-ast-inference.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -cargo/nash-constrain: minor -cargo/nash-solve: minor -cargo/nash-driver: patch -cargo/nash-report: patch ---- - -Infer directly from the canonical AST into the existing union-find and predicate engine. Remove the allocated constraint tree and intermediate inference Type, preserving schemes, evidence, rank ownership, recursive-group sequencing, and complete diagnostics. Pass canonical modules directly to the solver. diff --git a/.sampo/changesets/parser-accumulators.md b/.sampo/changesets/parser-accumulators.md deleted file mode 100644 index 13ddfa4e..00000000 --- a/.sampo/changesets/parser-accumulators.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -cargo/nash-parse: patch ---- - -Accumulate function arguments and binary operators without cloning partial chains. Keep parser arena allocation linear in operator-chain length. diff --git a/.sampo/changesets/parser-nesting.md b/.sampo/changesets/parser-nesting.md deleted file mode 100644 index 672a284c..00000000 --- a/.sampo/changesets/parser-nesting.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -cargo/nash-parse: patch -cargo/nash-report: patch ---- - -Report excessive expression, pattern, and type nesting before stack exhaustion. Parse flat sequences and nested comments with loops. diff --git a/.sampo/changesets/parser-text-input.md b/.sampo/changesets/parser-text-input.md deleted file mode 100644 index 7fbdd36b..00000000 --- a/.sampo/changesets/parser-text-input.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -cargo/nash-parse: minor -cargo/nash-driver: patch ---- - -Require UTF-8 text at the parser boundary instead of arbitrary bytes. Remove unchecked string conversions and pass source text directly from the driver. diff --git a/.sampo/changesets/remove-interface-cache.md b/.sampo/changesets/remove-interface-cache.md deleted file mode 100644 index d69d9a05..00000000 --- a/.sampo/changesets/remove-interface-cache.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -cargo/nash-driver: minor ---- - -Remove unused disk interface-cache APIs, serialization, and cache metadata. Preserve in-memory exports, kind contracts, and fingerprints returned by compilation. diff --git a/.sampo/changesets/source-coordinates.md b/.sampo/changesets/source-coordinates.md deleted file mode 100644 index 07d57908..00000000 --- a/.sampo/changesets/source-coordinates.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -cargo/nash-region: minor -cargo/nash-source: minor -cargo/nash-parse: minor -cargo/nash-can: patch -cargo/nash-report: minor -cargo/nash-language-server: patch ---- - -Use source-sized coordinates and diagnostic widths throughout parsing and reporting. Check LSP coordinate conversion instead of truncating. Reject oversized Unicode escapes without integer overflow, and make arbitrary lookahead offsets safe. diff --git a/Cargo.lock b/Cargo.lock index e724ba38..a7f88650 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1883,7 +1883,7 @@ dependencies = [ [[package]] name = "nash-ast" -version = "0.7.0" +version = "0.7.1" dependencies = [ "bumpalo", "nash-region", @@ -1892,7 +1892,7 @@ dependencies = [ [[package]] name = "nash-can" -version = "0.6.1" +version = "0.7.0" dependencies = [ "bumpalo", "indoc", @@ -1905,7 +1905,7 @@ dependencies = [ [[package]] name = "nash-cli" -version = "0.3.0" +version = "0.4.0" dependencies = [ "clap", "color-print", @@ -1941,7 +1941,7 @@ dependencies = [ [[package]] name = "nash-constrain" -version = "0.4.1" +version = "0.5.0" dependencies = [ "bumpalo", "nash-ast", @@ -1950,7 +1950,7 @@ dependencies = [ [[package]] name = "nash-driver" -version = "0.5.0" +version = "0.6.0" dependencies = [ "async-trait", "bumpalo", @@ -1975,7 +1975,7 @@ dependencies = [ [[package]] name = "nash-language-server" -version = "0.3.0" +version = "0.4.0" dependencies = [ "nash-driver", "nash-region", @@ -1989,7 +1989,7 @@ dependencies = [ [[package]] name = "nash-nitpick" -version = "0.2.0" +version = "0.2.1" dependencies = [ "bumpalo", "hex", @@ -2000,7 +2000,7 @@ dependencies = [ [[package]] name = "nash-parse" -version = "0.5.1" +version = "0.6.0" dependencies = [ "bumpalo", "indoc", @@ -2037,11 +2037,11 @@ dependencies = [ [[package]] name = "nash-region" -version = "0.2.0" +version = "0.3.0" [[package]] name = "nash-report" -version = "0.2.0" +version = "0.3.0" dependencies = [ "bumpalo", "indoc", @@ -2062,7 +2062,7 @@ dependencies = [ [[package]] name = "nash-solve" -version = "0.4.1" +version = "0.5.0" dependencies = [ "bumpalo", "indoc", @@ -2077,7 +2077,7 @@ dependencies = [ [[package]] name = "nash-source" -version = "0.6.0" +version = "0.7.0" dependencies = [ "bumpalo", "nash-region", diff --git a/crates/nash-ast/CHANGELOG.md b/crates/nash-ast/CHANGELOG.md index 8aca351c..0776abf4 100644 --- a/crates/nash-ast/CHANGELOG.md +++ b/crates/nash-ast/CHANGELOG.md @@ -1,5 +1,11 @@ # nash-ast +## 0.7.1 — 2026-09-10 + +### Patch changes + +- Updated dependencies: nash-region@0.3.0, nash-source@0.7.0 + ## 0.7.0 — 2026-09-10 ### Minor changes diff --git a/crates/nash-ast/Cargo.toml b/crates/nash-ast/Cargo.toml index 93a81be6..f848349e 100644 --- a/crates/nash-ast/Cargo.toml +++ b/crates/nash-ast/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nash-ast" -version = "0.7.0" +version = "0.7.1" edition.workspace = true description = "Canonical AST for the nash programming language" homepage.workspace = true @@ -9,5 +9,5 @@ license.workspace = true [dependencies] bumpalo.workspace = true -nash-region = { path = "../nash-region", version = "0.2.0" } -nash-source = { path = "../nash-source", version = "0.6.0" } +nash-region = { path = "../nash-region", version = "0.3.0" } +nash-source = { path = "../nash-source", version = "0.7.0" } diff --git a/crates/nash-can/CHANGELOG.md b/crates/nash-can/CHANGELOG.md index 5e309cfc..7e1d5286 100644 --- a/crates/nash-can/CHANGELOG.md +++ b/crates/nash-can/CHANGELOG.md @@ -1,5 +1,17 @@ # nash-can +## 0.7.0 — 2026-09-10 + +### Minor changes + +- [d06f2c5](https://github.com/orbistry/nash/commit/d06f2c5b69164d527d1e0bc4eefe6dcc7117867c) Borrow module data and local binding maps during canonicalization instead of cloning the full environment at each scope. Preserve shadowing, diagnostics, and error recovery. — Thanks @MicroProofs! + +### Patch changes + +- [e22bfb5](https://github.com/orbistry/nash/commit/e22bfb5783668dc1256eba8a2294e28d679a4816) Use ordered map ranges for trait candidate lookup, evidence construction, entailment, and missing-implementation suggestions. Preserve candidate order without a second index. — Thanks @MicroProofs! +- [8bb97f6](https://github.com/orbistry/nash/commit/8bb97f680047cc8818b890af407247cdd585000e) Use source-sized coordinates and diagnostic widths throughout parsing and reporting. Check LSP coordinate conversion instead of truncating. Reject oversized Unicode escapes without integer overflow, and make arbitrary lookahead offsets safe. — Thanks @MicroProofs! +- Updated dependencies: nash-ast@0.7.1, nash-parse@0.6.0, nash-region@0.3.0, nash-source@0.7.0 + ## 0.6.1 — 2026-09-10 ### Patch changes diff --git a/crates/nash-can/Cargo.toml b/crates/nash-can/Cargo.toml index d0f4c720..6b0631b1 100644 --- a/crates/nash-can/Cargo.toml +++ b/crates/nash-can/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nash-can" -version = "0.6.1" +version = "0.7.0" edition.workspace = true description = "Canonicalize a nash source tree, resolving symbols, re-ordering definitions, and preparing a module for type inference." homepage.workspace = true @@ -9,11 +9,11 @@ license.workspace = true [dependencies] bumpalo.workspace = true -nash-ast = { path = "../nash-ast", version = "0.7.0" } -nash-region = { path = "../nash-region", version = "0.2.0" } -nash-source = { path = "../nash-source", version = "0.6.0" } +nash-ast = { path = "../nash-ast", version = "0.7.1" } +nash-region = { path = "../nash-region", version = "0.3.0" } +nash-source = { path = "../nash-source", version = "0.7.0" } [dev-dependencies] indoc.workspace = true insta.workspace = true -nash-parse = { path = "../nash-parse", version = "0.5.1" } +nash-parse = { path = "../nash-parse", version = "0.6.0" } diff --git a/crates/nash-cli/CHANGELOG.md b/crates/nash-cli/CHANGELOG.md index 831c4276..fffe5a58 100644 --- a/crates/nash-cli/CHANGELOG.md +++ b/crates/nash-cli/CHANGELOG.md @@ -1,5 +1,17 @@ # nash-cli +## 0.4.0 — 2026-09-10 + +### Minor changes + +- [e3e72a7](https://github.com/orbistry/nash/commit/e3e72a7432f96f2de01777edd6c5a935e88d48fb) Use concise diagnostics with full expected/actual type comparisons, expectation-origin labels, and stable codes independent of display titles. Retain parser opening positions for closing-delimiter reports. Support arbitrary secondary labels and related reports across source files. + + Extend diagnostic JSON with code, severity, labels, suggestions, and related reports. JSON messages now contain styled prose without embedded source drawings; consumers should render the structured labels. LSP diagnostic codes now use stable identifiers instead of titles and include secondary and related source locations. — Thanks @MicroProofs! + +### Patch changes + +- Updated dependencies: nash-driver@0.6.0, nash-language-server@0.4.0, nash-report@0.3.0 + ## 0.3.0 — 2026-09-10 ### Minor changes diff --git a/crates/nash-cli/Cargo.toml b/crates/nash-cli/Cargo.toml index 9bd8bc27..d6f942c9 100644 --- a/crates/nash-cli/Cargo.toml +++ b/crates/nash-cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nash-cli" -version = "0.3.0" +version = "0.4.0" edition.workspace = true description = "The Nash programming language" homepage.workspace = true @@ -23,9 +23,9 @@ futures.workspace = true miette.workspace = true serde_json.workspace = true nash-config = { path = "../nash-config", version = "0.3.0" } -nash-report = { path = "../nash-report", version = "0.2.0" } -nash-driver = { path = "../nash-driver", version = "0.5.0" } -nash-language-server = { path = "../nash-language-server", version = "0.3.0" } +nash-report = { path = "../nash-report", version = "0.3.0" } +nash-driver = { path = "../nash-driver", version = "0.6.0" } +nash-language-server = { path = "../nash-language-server", version = "0.4.0" } octocrab.workspace = true tar.workspace = true tokio = { workspace = true, features = ["rt-multi-thread", "macros", "io-std"] } diff --git a/crates/nash-constrain/CHANGELOG.md b/crates/nash-constrain/CHANGELOG.md index 8becb91f..0fa1a33e 100644 --- a/crates/nash-constrain/CHANGELOG.md +++ b/crates/nash-constrain/CHANGELOG.md @@ -1,5 +1,18 @@ # nash-constrain +## 0.5.0 — 2026-09-10 + +### Minor changes + +- [e3e72a7](https://github.com/orbistry/nash/commit/e3e72a7432f96f2de01777edd6c5a935e88d48fb) Use concise diagnostics with full expected/actual type comparisons, expectation-origin labels, and stable codes independent of display titles. Retain parser opening positions for closing-delimiter reports. Support arbitrary secondary labels and related reports across source files. + + Extend diagnostic JSON with code, severity, labels, suggestions, and related reports. JSON messages now contain styled prose without embedded source drawings; consumers should render the structured labels. LSP diagnostic codes now use stable identifiers instead of titles and include secondary and related source locations. — Thanks @MicroProofs! +- [0ed0c75](https://github.com/orbistry/nash/commit/0ed0c75a0ac421a193a420c116cd2284ba922a25) Infer directly from the canonical AST into the existing union-find and predicate engine. Remove the allocated constraint tree and intermediate inference Type, preserving schemes, evidence, rank ownership, recursive-group sequencing, and complete diagnostics. Pass canonical modules directly to the solver. — Thanks @MicroProofs! + +### Patch changes + +- Updated dependencies: nash-ast@0.7.1, nash-region@0.3.0 + ## 0.4.1 — 2026-09-10 ### Patch changes diff --git a/crates/nash-constrain/Cargo.toml b/crates/nash-constrain/Cargo.toml index 026ea38d..cfdf0d4c 100644 --- a/crates/nash-constrain/Cargo.toml +++ b/crates/nash-constrain/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nash-constrain" -version = "0.4.1" +version = "0.5.0" edition.workspace = true description = """ Shared union-find types, canonical type instantiation, and diagnostics \ @@ -12,5 +12,5 @@ license.workspace = true [dependencies] bumpalo.workspace = true -nash-ast = { path = "../nash-ast", version = "0.7.0" } -nash-region = { path = "../nash-region", version = "0.2.0" } +nash-ast = { path = "../nash-ast", version = "0.7.1" } +nash-region = { path = "../nash-region", version = "0.3.0" } diff --git a/crates/nash-driver/CHANGELOG.md b/crates/nash-driver/CHANGELOG.md index 8902f631..7d874be5 100644 --- a/crates/nash-driver/CHANGELOG.md +++ b/crates/nash-driver/CHANGELOG.md @@ -1,5 +1,17 @@ # nash-driver +## 0.6.0 — 2026-09-10 + +### Minor changes + +- [7dab841](https://github.com/orbistry/nash/commit/7dab8416345ca7bd57292d82c4d358c9073457b2) Remove unused disk interface-cache APIs, serialization, and cache metadata. Preserve in-memory exports, kind contracts, and fingerprints returned by compilation. — Thanks @MicroProofs! + +### Patch changes + +- [3bd387a](https://github.com/orbistry/nash/commit/3bd387aabd3755da2f734db212859647c128d3f5) Require UTF-8 text at the parser boundary instead of arbitrary bytes. Remove unchecked string conversions and pass source text directly from the driver. — Thanks @MicroProofs! +- [0ed0c75](https://github.com/orbistry/nash/commit/0ed0c75a0ac421a193a420c116cd2284ba922a25) Infer directly from the canonical AST into the existing union-find and predicate engine. Remove the allocated constraint tree and intermediate inference Type, preserving schemes, evidence, rank ownership, recursive-group sequencing, and complete diagnostics. Pass canonical modules directly to the solver. — Thanks @MicroProofs! +- Updated dependencies: nash-ast@0.7.1, nash-can@0.7.0, nash-constrain@0.5.0, nash-nitpick@0.2.1, nash-parse@0.6.0, nash-region@0.3.0, nash-report@0.3.0, nash-solve@0.5.0, nash-source@0.7.0 + ## 0.5.0 — 2026-09-10 ### Minor changes diff --git a/crates/nash-driver/Cargo.toml b/crates/nash-driver/Cargo.toml index 722aab31..b76fec1c 100644 --- a/crates/nash-driver/Cargo.toml +++ b/crates/nash-driver/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nash-driver" -version = "0.5.0" +version = "0.6.0" edition.workspace = true description = "Build system and driver for Nash projects" homepage.workspace = true @@ -17,15 +17,15 @@ tokio = { workspace = true, features = ["sync", "fs"] } url.workspace = true nash-config = { path = "../nash-config", version = "0.3.0" } -nash-nitpick = { path = "../nash-nitpick", version = "0.2.0" } -nash-ast = { path = "../nash-ast", version = "0.7.0" } -nash-can = { path = "../nash-can", version = "0.6.1" } -nash-constrain = { path = "../nash-constrain", version = "0.4.1" } -nash-parse = { path = "../nash-parse", version = "0.5.1" } -nash-report = { path = "../nash-report", version = "0.2.0" } -nash-region = { path = "../nash-region", version = "0.2.0" } -nash-solve = { path = "../nash-solve", version = "0.4.1" } -nash-source = { path = "../nash-source", version = "0.6.0" } +nash-nitpick = { path = "../nash-nitpick", version = "0.2.1" } +nash-ast = { path = "../nash-ast", version = "0.7.1" } +nash-can = { path = "../nash-can", version = "0.7.0" } +nash-constrain = { path = "../nash-constrain", version = "0.5.0" } +nash-parse = { path = "../nash-parse", version = "0.6.0" } +nash-report = { path = "../nash-report", version = "0.3.0" } +nash-region = { path = "../nash-region", version = "0.3.0" } +nash-solve = { path = "../nash-solve", version = "0.5.0" } +nash-source = { path = "../nash-source", version = "0.7.0" } [dev-dependencies] indoc.workspace = true diff --git a/crates/nash-language-server/CHANGELOG.md b/crates/nash-language-server/CHANGELOG.md index 3a4b1bed..3b5da3d0 100644 --- a/crates/nash-language-server/CHANGELOG.md +++ b/crates/nash-language-server/CHANGELOG.md @@ -1,5 +1,18 @@ # nash-language-server +## 0.4.0 — 2026-09-10 + +### Minor changes + +- [e3e72a7](https://github.com/orbistry/nash/commit/e3e72a7432f96f2de01777edd6c5a935e88d48fb) Use concise diagnostics with full expected/actual type comparisons, expectation-origin labels, and stable codes independent of display titles. Retain parser opening positions for closing-delimiter reports. Support arbitrary secondary labels and related reports across source files. + + Extend diagnostic JSON with code, severity, labels, suggestions, and related reports. JSON messages now contain styled prose without embedded source drawings; consumers should render the structured labels. LSP diagnostic codes now use stable identifiers instead of titles and include secondary and related source locations. — Thanks @MicroProofs! + +### Patch changes + +- [8bb97f6](https://github.com/orbistry/nash/commit/8bb97f680047cc8818b890af407247cdd585000e) Use source-sized coordinates and diagnostic widths throughout parsing and reporting. Check LSP coordinate conversion instead of truncating. Reject oversized Unicode escapes without integer overflow, and make arbitrary lookahead offsets safe. — Thanks @MicroProofs! +- Updated dependencies: nash-driver@0.6.0, nash-region@0.3.0, nash-report@0.3.0 + ## 0.3.0 — 2026-09-10 ### Minor changes diff --git a/crates/nash-language-server/Cargo.toml b/crates/nash-language-server/Cargo.toml index 6e1cf7dc..fa67a0d9 100644 --- a/crates/nash-language-server/Cargo.toml +++ b/crates/nash-language-server/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nash-language-server" -version = "0.3.0" +version = "0.4.0" edition.workspace = true description = "Language server for the nash programming language" homepage.workspace = true @@ -9,9 +9,9 @@ license.workspace = true [dependencies] tower-lsp-server.workspace = true -nash-driver = { path = "../nash-driver", version = "0.5.0" } -nash-report = { path = "../nash-report", version = "0.2.0" } -nash-region = { path = "../nash-region", version = "0.2.0" } +nash-driver = { path = "../nash-driver", version = "0.6.0" } +nash-report = { path = "../nash-report", version = "0.3.0" } +nash-region = { path = "../nash-region", version = "0.3.0" } serde_json.workspace = true tokio.workspace = true url.workspace = true diff --git a/crates/nash-nitpick/CHANGELOG.md b/crates/nash-nitpick/CHANGELOG.md index aca87815..ef92541b 100644 --- a/crates/nash-nitpick/CHANGELOG.md +++ b/crates/nash-nitpick/CHANGELOG.md @@ -1,5 +1,11 @@ # nash-nitpick +## 0.2.1 — 2026-09-10 + +### Patch changes + +- Updated dependencies: nash-ast@0.7.1, nash-region@0.3.0 + ## 0.2.0 — 2026-09-10 ### Minor changes diff --git a/crates/nash-nitpick/Cargo.toml b/crates/nash-nitpick/Cargo.toml index b31352c5..5f68e560 100644 --- a/crates/nash-nitpick/Cargo.toml +++ b/crates/nash-nitpick/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nash-nitpick" -version = "0.2.0" +version = "0.2.1" edition.workspace = true description = "Exhaustiveness and redundancy checking for Nash pattern matches" homepage.workspace = true @@ -10,8 +10,8 @@ license.workspace = true [dependencies] bumpalo.workspace = true hex.workspace = true -nash-ast = { path = "../nash-ast", version = "0.7.0" } -nash-region = { path = "../nash-region", version = "0.2.0" } +nash-ast = { path = "../nash-ast", version = "0.7.1" } +nash-region = { path = "../nash-region", version = "0.3.0" } [dev-dependencies] insta.workspace = true diff --git a/crates/nash-parse/CHANGELOG.md b/crates/nash-parse/CHANGELOG.md index a44f2492..b9f24786 100644 --- a/crates/nash-parse/CHANGELOG.md +++ b/crates/nash-parse/CHANGELOG.md @@ -1,5 +1,21 @@ # nash-parse +## 0.6.0 — 2026-09-10 + +### Minor changes + +- [3bd387a](https://github.com/orbistry/nash/commit/3bd387aabd3755da2f734db212859647c128d3f5) Require UTF-8 text at the parser boundary instead of arbitrary bytes. Remove unchecked string conversions and pass source text directly from the driver. — Thanks @MicroProofs! +- [e3e72a7](https://github.com/orbistry/nash/commit/e3e72a7432f96f2de01777edd6c5a935e88d48fb) Use concise diagnostics with full expected/actual type comparisons, expectation-origin labels, and stable codes independent of display titles. Retain parser opening positions for closing-delimiter reports. Support arbitrary secondary labels and related reports across source files. + + Extend diagnostic JSON with code, severity, labels, suggestions, and related reports. JSON messages now contain styled prose without embedded source drawings; consumers should render the structured labels. LSP diagnostic codes now use stable identifiers instead of titles and include secondary and related source locations. — Thanks @MicroProofs! +- [8bb97f6](https://github.com/orbistry/nash/commit/8bb97f680047cc8818b890af407247cdd585000e) Use source-sized coordinates and diagnostic widths throughout parsing and reporting. Check LSP coordinate conversion instead of truncating. Reject oversized Unicode escapes without integer overflow, and make arbitrary lookahead offsets safe. — Thanks @MicroProofs! + +### Patch changes + +- [9977e60](https://github.com/orbistry/nash/commit/9977e607c8b870f448f5251a19cc9bf6d1c043f6) Report excessive expression, pattern, and type nesting before stack exhaustion. Parse flat sequences and nested comments with loops. — Thanks @MicroProofs! +- [28c946c](https://github.com/orbistry/nash/commit/28c946c2f331ce53748e2fa74662b85a4856c6ea) Accumulate function arguments and binary operators without cloning partial chains. Keep parser arena allocation linear in operator-chain length. — Thanks @MicroProofs! +- Updated dependencies: nash-region@0.3.0, nash-source@0.7.0 + ## 0.5.1 — 2026-09-10 ### Patch changes diff --git a/crates/nash-parse/Cargo.toml b/crates/nash-parse/Cargo.toml index 22eaf6f4..b60bd310 100644 --- a/crates/nash-parse/Cargo.toml +++ b/crates/nash-parse/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nash-parse" -version = "0.5.1" +version = "0.6.0" edition.workspace = true description = "Parser for the nash programming language" homepage.workspace = true @@ -9,8 +9,8 @@ license.workspace = true [dependencies] bumpalo.workspace = true -nash-region = { path = "../nash-region", version = "0.2.0" } -nash-source = { path = "../nash-source", version = "0.6.0" } +nash-region = { path = "../nash-region", version = "0.3.0" } +nash-source = { path = "../nash-source", version = "0.7.0" } [dev-dependencies] indoc.workspace = true diff --git a/crates/nash-region/CHANGELOG.md b/crates/nash-region/CHANGELOG.md new file mode 100644 index 00000000..e9b3d404 --- /dev/null +++ b/crates/nash-region/CHANGELOG.md @@ -0,0 +1,8 @@ +# nash-region + +## 0.3.0 — 2026-09-10 + +### Minor changes + +- [8bb97f6](https://github.com/orbistry/nash/commit/8bb97f680047cc8818b890af407247cdd585000e) Use source-sized coordinates and diagnostic widths throughout parsing and reporting. Check LSP coordinate conversion instead of truncating. Reject oversized Unicode escapes without integer overflow, and make arbitrary lookahead offsets safe. — Thanks @MicroProofs! + diff --git a/crates/nash-region/Cargo.toml b/crates/nash-region/Cargo.toml index ee295fbb..5f26a064 100644 --- a/crates/nash-region/Cargo.toml +++ b/crates/nash-region/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nash-region" -version = "0.2.0" +version = "0.3.0" edition.workspace = true description = "nash source spans" homepage.workspace = true diff --git a/crates/nash-report/CHANGELOG.md b/crates/nash-report/CHANGELOG.md index 6173e2cb..5d2bd667 100644 --- a/crates/nash-report/CHANGELOG.md +++ b/crates/nash-report/CHANGELOG.md @@ -1,5 +1,20 @@ # nash-report +## 0.3.0 — 2026-09-10 + +### Minor changes + +- [e3e72a7](https://github.com/orbistry/nash/commit/e3e72a7432f96f2de01777edd6c5a935e88d48fb) Use concise diagnostics with full expected/actual type comparisons, expectation-origin labels, and stable codes independent of display titles. Retain parser opening positions for closing-delimiter reports. Support arbitrary secondary labels and related reports across source files. + + Extend diagnostic JSON with code, severity, labels, suggestions, and related reports. JSON messages now contain styled prose without embedded source drawings; consumers should render the structured labels. LSP diagnostic codes now use stable identifiers instead of titles and include secondary and related source locations. — Thanks @MicroProofs! +- [8bb97f6](https://github.com/orbistry/nash/commit/8bb97f680047cc8818b890af407247cdd585000e) Use source-sized coordinates and diagnostic widths throughout parsing and reporting. Check LSP coordinate conversion instead of truncating. Reject oversized Unicode escapes without integer overflow, and make arbitrary lookahead offsets safe. — Thanks @MicroProofs! + +### Patch changes + +- [9977e60](https://github.com/orbistry/nash/commit/9977e607c8b870f448f5251a19cc9bf6d1c043f6) Report excessive expression, pattern, and type nesting before stack exhaustion. Parse flat sequences and nested comments with loops. — Thanks @MicroProofs! +- [0ed0c75](https://github.com/orbistry/nash/commit/0ed0c75a0ac421a193a420c116cd2284ba922a25) Infer directly from the canonical AST into the existing union-find and predicate engine. Remove the allocated constraint tree and intermediate inference Type, preserving schemes, evidence, rank ownership, recursive-group sequencing, and complete diagnostics. Pass canonical modules directly to the solver. — Thanks @MicroProofs! +- Updated dependencies: nash-ast@0.7.1, nash-can@0.7.0, nash-constrain@0.5.0, nash-nitpick@0.2.1, nash-parse@0.6.0, nash-region@0.3.0, nash-solve@0.5.0, nash-source@0.7.0 + ## 0.2.0 — 2026-09-10 ### Minor changes diff --git a/crates/nash-report/Cargo.toml b/crates/nash-report/Cargo.toml index 0c73a34b..66ecc613 100644 --- a/crates/nash-report/Cargo.toml +++ b/crates/nash-report/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nash-report" -version = "0.2.0" +version = "0.3.0" edition.workspace = true description = "Error reports for the Nash compiler: Elm's prose rendered with miette" homepage.workspace = true @@ -12,16 +12,16 @@ miette.workspace = true unicode-width = "0.1.14" serde.workspace = true serde_json.workspace = true -nash-ast = { path = "../nash-ast", version = "0.7.0" } -nash-can = { path = "../nash-can", version = "0.6.1" } -nash-constrain = { path = "../nash-constrain", version = "0.4.1" } -nash-nitpick = { path = "../nash-nitpick", version = "0.2.0" } -nash-parse = { path = "../nash-parse", version = "0.5.1" } -nash-region = { path = "../nash-region", version = "0.2.0" } -nash-source = { path = "../nash-source", version = "0.6.0" } +nash-ast = { path = "../nash-ast", version = "0.7.1" } +nash-can = { path = "../nash-can", version = "0.7.0" } +nash-constrain = { path = "../nash-constrain", version = "0.5.0" } +nash-nitpick = { path = "../nash-nitpick", version = "0.2.1" } +nash-parse = { path = "../nash-parse", version = "0.6.0" } +nash-region = { path = "../nash-region", version = "0.3.0" } +nash-source = { path = "../nash-source", version = "0.7.0" } [dev-dependencies] bumpalo.workspace = true indoc.workspace = true insta.workspace = true -nash-solve = { path = "../nash-solve", version = "0.4.1" } +nash-solve = { path = "../nash-solve", version = "0.5.0" } diff --git a/crates/nash-solve/CHANGELOG.md b/crates/nash-solve/CHANGELOG.md index b7825175..546605dc 100644 --- a/crates/nash-solve/CHANGELOG.md +++ b/crates/nash-solve/CHANGELOG.md @@ -1,5 +1,19 @@ # nash-solve +## 0.5.0 — 2026-09-10 + +### Minor changes + +- [0ed0c75](https://github.com/orbistry/nash/commit/0ed0c75a0ac421a193a420c116cd2284ba922a25) Infer directly from the canonical AST into the existing union-find and predicate engine. Remove the allocated constraint tree and intermediate inference Type, preserving schemes, evidence, rank ownership, recursive-group sequencing, and complete diagnostics. Pass canonical modules directly to the solver. — Thanks @MicroProofs! + +### Patch changes + +- [e3e72a7](https://github.com/orbistry/nash/commit/e3e72a7432f96f2de01777edd6c5a935e88d48fb) Use concise diagnostics with full expected/actual type comparisons, expectation-origin labels, and stable codes independent of display titles. Retain parser opening positions for closing-delimiter reports. Support arbitrary secondary labels and related reports across source files. + + Extend diagnostic JSON with code, severity, labels, suggestions, and related reports. JSON messages now contain styled prose without embedded source drawings; consumers should render the structured labels. LSP diagnostic codes now use stable identifiers instead of titles and include secondary and related source locations. — Thanks @MicroProofs! +- [e22bfb5](https://github.com/orbistry/nash/commit/e22bfb5783668dc1256eba8a2294e28d679a4816) Use ordered map ranges for trait candidate lookup, evidence construction, entailment, and missing-implementation suggestions. Preserve candidate order without a second index. — Thanks @MicroProofs! +- Updated dependencies: nash-ast@0.7.1, nash-can@0.7.0, nash-constrain@0.5.0, nash-parse@0.6.0, nash-region@0.3.0, nash-source@0.7.0 + ## 0.4.1 — 2026-09-10 ### Patch changes diff --git a/crates/nash-solve/Cargo.toml b/crates/nash-solve/Cargo.toml index 0a92d2c4..3f778ac1 100644 --- a/crates/nash-solve/Cargo.toml +++ b/crates/nash-solve/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nash-solve" -version = "0.4.1" +version = "0.5.0" edition.workspace = true description = "The entry point of nash's type inference system. Implements type inference and specialization of traits." homepage.workspace = true @@ -9,13 +9,13 @@ license.workspace = true [dependencies] bumpalo.workspace = true -nash-ast = { path = "../nash-ast", version = "0.7.0" } -nash-can = { path = "../nash-can", version = "0.6.1" } -nash-constrain = { path = "../nash-constrain", version = "0.4.1" } -nash-region = { path = "../nash-region", version = "0.2.0" } +nash-ast = { path = "../nash-ast", version = "0.7.1" } +nash-can = { path = "../nash-can", version = "0.7.0" } +nash-constrain = { path = "../nash-constrain", version = "0.5.0" } +nash-region = { path = "../nash-region", version = "0.3.0" } [dev-dependencies] indoc.workspace = true insta.workspace = true -nash-parse = { path = "../nash-parse", version = "0.5.1" } -nash-source = { path = "../nash-source", version = "0.6.0" } +nash-parse = { path = "../nash-parse", version = "0.6.0" } +nash-source = { path = "../nash-source", version = "0.7.0" } diff --git a/crates/nash-source/CHANGELOG.md b/crates/nash-source/CHANGELOG.md index 869f1834..01cc004e 100644 --- a/crates/nash-source/CHANGELOG.md +++ b/crates/nash-source/CHANGELOG.md @@ -1,5 +1,15 @@ # nash-source +## 0.7.0 — 2026-09-10 + +### Minor changes + +- [8bb97f6](https://github.com/orbistry/nash/commit/8bb97f680047cc8818b890af407247cdd585000e) Use source-sized coordinates and diagnostic widths throughout parsing and reporting. Check LSP coordinate conversion instead of truncating. Reject oversized Unicode escapes without integer overflow, and make arbitrary lookahead offsets safe. — Thanks @MicroProofs! + +### Patch changes + +- Updated dependencies: nash-region@0.3.0 + ## 0.6.0 — 2026-09-10 ### Minor changes diff --git a/crates/nash-source/Cargo.toml b/crates/nash-source/Cargo.toml index 9683d4d8..7aa86055 100644 --- a/crates/nash-source/Cargo.toml +++ b/crates/nash-source/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "nash-source" -version = "0.6.0" +version = "0.7.0" edition.workspace = true description = "Source AST for the nash programming language" homepage.workspace = true @@ -9,4 +9,4 @@ license.workspace = true [dependencies] bumpalo.workspace = true -nash-region = { path = "../nash-region", version = "0.2.0" } +nash-region = { path = "../nash-region", version = "0.3.0" }