From a5ce3d9e58977fcc2415235da83f951c7bc0840e Mon Sep 17 00:00:00 2001 From: "rawframe-release[bot]" <346864305+rawframe-release[bot]@users.noreply.github.com> Date: Thu, 5 Nov 2026 14:56:44 +0000 Subject: [PATCH 1/2] chore: release 0.7.0 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 15 +++++++++++++++ editors/vscode/package.json | 2 +- include/kest.h | 4 ++-- 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index bcd05228..e7ca6139 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "0.6.0" + ".": "0.7.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 50ea7429..cd604a77 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,21 @@ All notable changes to this project are recorded here, grouped as Added, Changed, Fixed, Removed and Security. The project uses [Semantic Versioning](https://semver.org/). Before 1.0.0, any minor release may change the language, the C API, the ABI and the JSON the command line writes; each entry says what a program or a host has to do about it. +## [0.7.0](https://github.com/Rawframe-Project/kest/compare/v0.6.0...v0.7.0) (2026-11-05) + + +### ⚠ BREAKING CHANGES + +* **compiler:** a program writing one of a run inside one of another run, each at an index worked out while running, with a field or an index written down between them, was refused with K0505 and now compiles and runs. +* **compiler:** a program writing one of a run of runs at an index worked out while running, in a local or inside an element of an array, or writing one of a run in a local at such an index with an operator or into a field of one, was refused with K0505 and now compiles and runs. +* **verifier:** a program reading or writing one of a fixed run at an index worked out while running, where the run is inside one of another run at an index written down, inside an element of an array, was refused with K0411 and now compiles and runs. + +### Fixed + +* **compiler:** write a run inside one of a run at two running indexes ([#257](https://github.com/Rawframe-Project/kest/issues/257)) ([9702918](https://github.com/Rawframe-Project/kest/commit/9702918cd56a56e4787a9740076bed0c71f10522)), closes [#252](https://github.com/Rawframe-Project/kest/issues/252) +* **compiler:** write runs of runs and local runs at running indexes ([#256](https://github.com/Rawframe-Project/kest/issues/256)) ([cd939e9](https://github.com/Rawframe-Project/kest/commit/cd939e9c819b454c42d29a83c67210c5f670e2fa)), closes [#249](https://github.com/Rawframe-Project/kest/issues/249) [#251](https://github.com/Rawframe-Project/kest/issues/251) +* **verifier:** find a run inside one of a run at a running index ([#254](https://github.com/Rawframe-Project/kest/issues/254)) ([b95fbf3](https://github.com/Rawframe-Project/kest/commit/b95fbf3294ad61028e108ce7181daa72e6f3b661)), closes [#253](https://github.com/Rawframe-Project/kest/issues/253) + ## 0.6.0 (2026-11-04) ### Changed diff --git a/editors/vscode/package.json b/editors/vscode/package.json index 9d03ba32..9dfd3207 100644 --- a/editors/vscode/package.json +++ b/editors/vscode/package.json @@ -2,7 +2,7 @@ "name": "kest", "displayName": "Kest", "description": "Kest language support: syntax, diagnostics, go to definition, references, rename, hover, completion, the one form and a debugger. Everything semantic comes from `kest lsp` and `kest dap`, which are the compiler itself.", - "version": "0.6.0", + "version": "0.7.0", "publisher": "rawframe", "license": "MIT", "repository": { diff --git a/include/kest.h b/include/kest.h index 6fe473fb..bebe725b 100644 --- a/include/kest.h +++ b/include/kest.h @@ -13,13 +13,13 @@ #define KEST_VERSION_MAJOR 0 // x-release-please-end // x-release-please-start-minor -#define KEST_VERSION_MINOR 6 +#define KEST_VERSION_MINOR 7 // x-release-please-end // x-release-please-start-patch #define KEST_VERSION_PATCH 0 // x-release-please-end // x-release-please-start-version -#define KEST_VERSION_STRING "0.6.0" +#define KEST_VERSION_STRING "0.7.0" // x-release-please-end // What shape the JSON every command writes is in, which is a different thing From 47377a92e997a06a515daae7e96d518756756f3f Mon Sep 17 00:00:00 2001 From: Sirac Ozmen Date: Thu, 5 Nov 2026 18:02:11 +0300 Subject: [PATCH 2/2] docs(doc): write the 0.7.0 notes for someone using Kest --- CHANGELOG.md | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cd604a77..b21fce90 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,20 +2,13 @@ All notable changes to this project are recorded here, grouped as Added, Changed, Fixed, Removed and Security. The project uses [Semantic Versioning](https://semver.org/). Before 1.0.0, any minor release may change the language, the C API, the ABI and the JSON the command line writes; each entry says what a program or a host has to do about it. -## [0.7.0](https://github.com/Rawframe-Project/kest/compare/v0.6.0...v0.7.0) (2026-11-05) +## 0.7.0 (2026-11-05) +### Changed -### ⚠ BREAKING CHANGES - -* **compiler:** a program writing one of a run inside one of another run, each at an index worked out while running, with a field or an index written down between them, was refused with K0505 and now compiles and runs. -* **compiler:** a program writing one of a run of runs at an index worked out while running, in a local or inside an element of an array, or writing one of a run in a local at such an index with an operator or into a field of one, was refused with K0505 and now compiles and runs. -* **verifier:** a program reading or writing one of a fixed run at an index worked out while running, where the run is inside one of another run at an index written down, inside an element of an array, was refused with K0411 and now compiles and runs. - -### Fixed - -* **compiler:** write a run inside one of a run at two running indexes ([#257](https://github.com/Rawframe-Project/kest/issues/257)) ([9702918](https://github.com/Rawframe-Project/kest/commit/9702918cd56a56e4787a9740076bed0c71f10522)), closes [#252](https://github.com/Rawframe-Project/kest/issues/252) -* **compiler:** write runs of runs and local runs at running indexes ([#256](https://github.com/Rawframe-Project/kest/issues/256)) ([cd939e9](https://github.com/Rawframe-Project/kest/commit/cd939e9c819b454c42d29a83c67210c5f670e2fa)), closes [#249](https://github.com/Rawframe-Project/kest/issues/249) [#251](https://github.com/Rawframe-Project/kest/issues/251) -* **verifier:** find a run inside one of a run at a running index ([#254](https://github.com/Rawframe-Project/kest/issues/254)) ([b95fbf3](https://github.com/Rawframe-Project/kest/commit/b95fbf3294ad61028e108ce7181daa72e6f3b661)), closes [#253](https://github.com/Rawframe-Project/kest/issues/253) +- **Breaking:** A program reads and writes one of a fixed run at an index worked out while running where the run is inside one of another run at an index written down, inside an element of an array (`boxes[0].ss[1].xs[j]`). The verifier refused it under every build and switch as a fault in the compiler, with `K0411` ("`load.at` at 102 reads layout 0 at 24 bytes into what an address is at, which has no such field there"): with `struct S { tag: i32; xs: [i32; 4] }`, `struct Box { ss: [S; 2] }`, `boxes` holding one `Box` of `S(1, [1, 2, 3, 4])` and `S(2, [5, 6, 7, 8])` and `j` worked out while running as 2, a program printing `boxes[0].ss[1].xs[j]`, writing 9 there and printing `boxes[0].ss[1].xs[2]` now prints `7` and `9`. A run of runs with its first index written down (`bs[0].grid[1][j]`) is the same case. Nothing the verifier accepted before changes, and no instruction the compiler writes changes. ([#254](https://github.com/Rawframe-Project/kest/pull/254)) +- **Breaking:** A program writes one of a run of runs at indexes worked out while running, in a local and inside an element of an array, and writes one of a run in a local at such an index with an operator or into a field of one. Each was refused under every build and switch as a fault in the compiler, with `K0505` ("this assigns to something that is not a place, which the checker allowed"): with `struct P { x: i32; y: i32 }`, `grid: [[i32; 3]; 2]` holding `[[1, 2, 3], [4, 5, 6]]`, `xs: [i32; 3]` holding `[1, 2, 3]`, `ps: [P; 2]` holding `[P(1, 2), P(3, 4)]`, and `i` and `j` worked out while running as 1 and 2, `grid[i][j] = 9`, `xs[i] += 5` and `ps[i].y = 9` were each refused, and printing `{grid[1][2]} {xs[1]} {ps[1].y}` after them now prints `9 7 9`. Where more than one index is worked out while running, each is held to its own count, so an index past its run is refused with `K0604` naming that index and that run's count ("index 3 is outside 3 of them"), in every engine and in a body compiled to C. `kest emit` writes one new instruction, `in.run`, and `load.slots` and `store.slots` carry how many slots of one of the run they read or write. A program that compiled before compiles to the same instructions, with `load.slots` and `store.slots` each two bytes wider. ([#256](https://github.com/Rawframe-Project/kest/pull/256)) +- **Breaking:** A program writes one of a run that is a field of one of another run, each at an index worked out while running (`ss[i].xs[j] = 9`), in a local and inside an element of an array, with `=` or an operator. Each was refused under every build and switch as a fault in the compiler, with `K0505` ("this assigns to something that is not a place, which the checker allowed"): with `struct S { tag: i32; xs: [i32; 4] }`, `ss: [S; 2]` holding `S(1, [1, 2, 3, 4])` and `S(2, [5, 6, 7, 8])`, and `i` and `j` worked out while running as 1 and 2, `ss[i].xs[j] = 9` followed by printing `ss[1].xs[2]` now prints `9`. An index past its run is refused with `K0604` and that run's count. Inside an element, a write whose right-hand side writes the same element, or grows the array, keeps what the right-hand side wrote. A program that compiled before compiles to the same instructions. ([#257](https://github.com/Rawframe-Project/kest/pull/257)) ## 0.6.0 (2026-11-04)