Release 1.0.0-beta.25 user project conformance
This commit is contained in:
parent
b241a8a812
commit
573052fe00
95
.llm/BETA_25_USER_PROJECT_CONFORMANCE_MATRIX.md
Normal file
95
.llm/BETA_25_USER_PROJECT_CONFORMANCE_MATRIX.md
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
# 1.0.0-beta.25 User Project Conformance Matrix
|
||||||
|
|
||||||
|
## Scope
|
||||||
|
|
||||||
|
`1.0.0-beta.25` is a tooling/conformance evidence slice for ordinary
|
||||||
|
project and workspace usage. It adds a deterministic user-project conformance
|
||||||
|
matrix over the existing checked examples under `examples/projects/` and
|
||||||
|
`examples/workspaces/`.
|
||||||
|
|
||||||
|
The matrix is stable-readiness evidence for the beta toolchain. It records
|
||||||
|
which existing user-shaped example projects and workspaces are expected to
|
||||||
|
pass `glagol check`, `glagol test --list`, and stable `glagol test` execution
|
||||||
|
through ordinary Glagol entry points.
|
||||||
|
|
||||||
|
At release time the matrix covers all 43 top-level fixture roots with
|
||||||
|
`slovo.toml` under those inventories and 655 discovered tests. Environment
|
||||||
|
fixtures run with deterministic in-test environment values so host shell state
|
||||||
|
does not decide the result.
|
||||||
|
|
||||||
|
This release changes tooling evidence only. It does not change the Slovo
|
||||||
|
source language, typed core, runtime behavior, standard-library helper
|
||||||
|
surface, compiler-known runtime names, package-manager behavior, package graph
|
||||||
|
semantics, registry behavior, lockfile behavior, semver behavior, ABI/layout
|
||||||
|
policy, stable schema policy, or performance policy.
|
||||||
|
|
||||||
|
## Contract
|
||||||
|
|
||||||
|
The conformance matrix is deterministic and repository-local:
|
||||||
|
|
||||||
|
- inputs are every top-level `slovo.toml` fixture under the existing
|
||||||
|
`examples/projects/` and `examples/workspaces/` directories
|
||||||
|
- entries are sorted by stable repository-relative path
|
||||||
|
- each entry names the example kind, path, and ordinary project/workspace
|
||||||
|
test count covered by the matrix
|
||||||
|
- fixture inventory drift must fail the focused matrix test until the matrix
|
||||||
|
and release evidence are updated deliberately
|
||||||
|
- generated evidence must not depend on wall-clock time, host-specific
|
||||||
|
absolute paths, random ordering, or network access
|
||||||
|
- matrix output is beta readiness evidence, not a frozen public schema
|
||||||
|
|
||||||
|
The matrix is intended to answer whether normal beta users can exercise the
|
||||||
|
current example projects and workspaces through the documented toolchain. It
|
||||||
|
does not promote new language forms, new standard-library helpers, new runtime
|
||||||
|
capabilities, new package manager behavior, or new compatibility guarantees.
|
||||||
|
|
||||||
|
## Non-Scope
|
||||||
|
|
||||||
|
This scope does not add:
|
||||||
|
|
||||||
|
- source-language syntax or semantics
|
||||||
|
- typed-core changes
|
||||||
|
- standard-library helpers or stdlib behavior changes
|
||||||
|
- compiler-known `std.*` runtime names
|
||||||
|
- runtime behavior or runtime C capabilities
|
||||||
|
- package manager behavior
|
||||||
|
- remote registry behavior
|
||||||
|
- lockfiles
|
||||||
|
- semantic-version solving
|
||||||
|
- package publishing
|
||||||
|
- optional, dev, target, or feature-gated dependencies
|
||||||
|
- stable package ABI/layout
|
||||||
|
- stable artifact-manifest, Markdown, JSON, or conformance-matrix schema
|
||||||
|
guarantees
|
||||||
|
- performance thresholds, performance claims, or timing publication
|
||||||
|
- LSP/watch, SARIF, daemon, coverage, retry, tag/group, or event-stream
|
||||||
|
protocols
|
||||||
|
|
||||||
|
## Acceptance Criteria
|
||||||
|
|
||||||
|
- README names `1.0.0-beta.25` as the current release and describes the
|
||||||
|
user-project conformance matrix as tooling/readiness evidence only.
|
||||||
|
- Language and compiler release notes describe beta25 as a
|
||||||
|
tooling/conformance evidence slice over existing `examples/projects/` and
|
||||||
|
`examples/workspaces/`.
|
||||||
|
- Language and compiler roadmaps record beta25 as the current
|
||||||
|
stable-readiness evidence slice while keeping language, stdlib, runtime,
|
||||||
|
package-manager, stable-schema, and performance work deferred.
|
||||||
|
- The post-beta roadmap records beta25 under tooling/release hardening.
|
||||||
|
- Glagol is versioned as `1.0.0-beta.25`.
|
||||||
|
- `compiler/tests/user_project_conformance_beta25.rs` covers all 43 top-level
|
||||||
|
project/workspace fixture roots and 655 discovered tests.
|
||||||
|
- Fixture inventory drift is checked against discovered top-level
|
||||||
|
`slovo.toml` roots.
|
||||||
|
- `scripts/release-gate.sh` runs the focused beta25 matrix test.
|
||||||
|
- No compiler, runtime, standard-library, package-manager, registry, lockfile,
|
||||||
|
semver, ABI/layout, stable-schema, or performance claim is introduced by
|
||||||
|
the documentation.
|
||||||
|
|
||||||
|
## Suggested Gates
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git diff --check
|
||||||
|
cargo fmt --check
|
||||||
|
cargo test --test user_project_conformance_beta25
|
||||||
|
```
|
||||||
64
.llm/reviews/BETA_25_RELEASE_REVIEW.md
Normal file
64
.llm/reviews/BETA_25_RELEASE_REVIEW.md
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
# Beta25 Release Review
|
||||||
|
|
||||||
|
Verdict: PASS.
|
||||||
|
|
||||||
|
## Findings
|
||||||
|
|
||||||
|
No blocking or non-blocking findings in the re-reviewed scope.
|
||||||
|
|
||||||
|
The prior blocking finding is resolved. `compiler/tests/user_project_conformance_beta25.rs` now covers all 43 top-level fixture roots currently discovered under `examples/projects/` and `examples/workspaces/`: 41 project fixtures plus 2 workspace fixtures. The test also asserts the matrix length, total discovered-test count, sorted path order, and exact inventory completeness against discovered top-level `slovo.toml` fixture roots.
|
||||||
|
|
||||||
|
## Acceptance Checklist
|
||||||
|
|
||||||
|
- PASS: The conformance matrix covers every current top-level `slovo.toml` fixture root under `examples/projects/` and `examples/workspaces/`.
|
||||||
|
- PASS: `assert_matrix_inventory()` asserts the 43-root count, 655 discovered tests, sorted repository-relative path order, exact discovered fixture inventory, and the full expected path/test/run matrix.
|
||||||
|
- PASS: The test runs `glagol check`, `glagol test --list`, and stable `glagol test` for every matrix entry.
|
||||||
|
- PASS: Deterministic env fixture handling is wired through `configure_conformance_env()`: expected env variables are set to stable values and intentionally-missing env variables are removed before each Glagol command.
|
||||||
|
- PASS: `scripts/release-gate.sh` still runs `cargo test --test user_project_conformance_beta25`.
|
||||||
|
- PASS: `compiler/Cargo.toml` and `compiler/Cargo.lock` both version `glagol` as `1.0.0-beta.25`.
|
||||||
|
- PASS: README, release notes, roadmaps, and the beta25 matrix doc continue to frame the release as tooling/conformance evidence without claiming language, runtime, stdlib, package-manager, stable-schema, ABI/layout, or performance changes.
|
||||||
|
|
||||||
|
## Verification Commands
|
||||||
|
|
||||||
|
Ran:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git status --short
|
||||||
|
git diff --stat
|
||||||
|
sed -n '1,620p' compiler/tests/user_project_conformance_beta25.rs
|
||||||
|
find examples/projects -mindepth 2 -maxdepth 2 -name slovo.toml -printf '%h\n'
|
||||||
|
find examples/workspaces -mindepth 2 -maxdepth 2 -name slovo.toml -printf '%h\n'
|
||||||
|
find examples/projects -mindepth 2 -maxdepth 2 -name slovo.toml -printf '.' | wc -c
|
||||||
|
find examples/workspaces -mindepth 2 -maxdepth 2 -name slovo.toml -printf '.' | wc -c
|
||||||
|
rg -n "assert_eq!\(MATRIX\.len\(\), 43|discover_fixture_paths|configure_conformance_env|GLAGOL_STD_IMPORT_ENV_ALPHA_PRESENT|GLAGOL_STD_LAYOUT_LOCAL_ENV_ALPHA_PRESENT" compiler/tests/user_project_conformance_beta25.rs
|
||||||
|
git diff --check
|
||||||
|
cargo fmt --check
|
||||||
|
cargo test --test user_project_conformance_beta25
|
||||||
|
```
|
||||||
|
|
||||||
|
Results:
|
||||||
|
|
||||||
|
- `git diff --check`: PASS.
|
||||||
|
- `cargo fmt --check`: PASS.
|
||||||
|
- `cargo test --test user_project_conformance_beta25`: PASS, 1 test passed.
|
||||||
|
- Fixture inventory counts: 41 top-level project roots and 2 top-level workspace roots.
|
||||||
|
- Matrix inventory assertion: covers 43 roots and 655 discovered tests.
|
||||||
|
|
||||||
|
## Residual Risks
|
||||||
|
|
||||||
|
No release-blocking residual risks remain for this slice.
|
||||||
|
|
||||||
|
## Final Gate Disposition
|
||||||
|
|
||||||
|
The controller reran the full release gate after staging the generated
|
||||||
|
`docs/language/STDLIB_API.md` beta25 catalog update:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./scripts/release-gate.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
Result: PASS. The gate reported:
|
||||||
|
|
||||||
|
```text
|
||||||
|
release gate passed: docs, stdlib API catalog, fmt, tests, promotion, binary, and LLVM smoke checks completed
|
||||||
|
```
|
||||||
35
README.md
35
README.md
@ -6,7 +6,7 @@ This repository is the canonical public monorepo for the language design,
|
|||||||
standard library source, compiler, runtime, examples, benchmarks, and technical
|
standard library source, compiler, runtime, examples, benchmarks, and technical
|
||||||
documents.
|
documents.
|
||||||
|
|
||||||
Current release: `1.0.0-beta.24`.
|
Current release: `1.0.0-beta.25`.
|
||||||
|
|
||||||
## Repository Layout
|
## Repository Layout
|
||||||
|
|
||||||
@ -24,7 +24,7 @@ scripts/ local release and document tooling
|
|||||||
|
|
||||||
## Beta Scope
|
## Beta Scope
|
||||||
|
|
||||||
`1.0.0-beta.24` keeps the `1.0.0-beta` language baseline, includes the
|
`1.0.0-beta.25` keeps the `1.0.0-beta` language baseline, includes the
|
||||||
`1.0.0-beta.1` tooling/install hardening slice, the `1.0.0-beta.2`
|
`1.0.0-beta.1` tooling/install hardening slice, the `1.0.0-beta.2`
|
||||||
runtime/resource foundation bundle, the `1.0.0-beta.3` standard-library
|
runtime/resource foundation bundle, the `1.0.0-beta.3` standard-library
|
||||||
stabilization bundle, the `1.0.0-beta.4` language-usability diagnostics
|
stabilization bundle, the `1.0.0-beta.4` language-usability diagnostics
|
||||||
@ -47,7 +47,8 @@ the `1.0.0-beta.17` JSON primitive scalar parsing foundation, the
|
|||||||
`1.0.0-beta.22` run manifest and execution report hardening slice, and the
|
`1.0.0-beta.22` run manifest and execution report hardening slice, and the
|
||||||
`1.0.0-beta.23` standard-library stability tier ledger and catalog alignment
|
`1.0.0-beta.23` standard-library stability tier ledger and catalog alignment
|
||||||
slice, and the `1.0.0-beta.24` package manifest identity and local dependency
|
slice, and the `1.0.0-beta.24` package manifest identity and local dependency
|
||||||
diagnostic hardening slice.
|
diagnostic hardening slice, plus the `1.0.0-beta.25` user-project
|
||||||
|
conformance matrix evidence slice.
|
||||||
|
|
||||||
The language baseline supports practical local command-line, file, and
|
The language baseline supports practical local command-line, file, and
|
||||||
loopback-network programs with:
|
loopback-network programs with:
|
||||||
@ -206,10 +207,21 @@ semantic-version solving, package publishing, optional/dev/target
|
|||||||
dependencies, stable package ABI/layout, source-language changes, runtime
|
dependencies, stable package ABI/layout, source-language changes, runtime
|
||||||
changes, or standard-library changes.
|
changes, or standard-library changes.
|
||||||
|
|
||||||
|
The `1.0.0-beta.25` user-project conformance matrix slice adds deterministic
|
||||||
|
tooling/readiness evidence over the existing `examples/projects/` and
|
||||||
|
`examples/workspaces/` inventories. It currently covers all 43 top-level
|
||||||
|
fixture roots and 655 discovered tests through ordinary `check`,
|
||||||
|
`test --list`, and stable `test` entry points. The matrix is for ordinary
|
||||||
|
project and workspace usage evidence only: it does not add source-language
|
||||||
|
syntax or semantics, standard-library helpers, runtime behavior, package
|
||||||
|
manager or registry behavior, lockfile behavior, semantic-version solving,
|
||||||
|
stable schema guarantees, or performance claims.
|
||||||
|
|
||||||
Still deferred before stable: executable generics, generic aliases, maps/sets,
|
Still deferred before stable: executable generics, generic aliases, maps/sets,
|
||||||
broad package registry semantics, stable artifact-manifest schema, stable
|
broad package registry semantics, stable artifact-manifest schema, stable
|
||||||
Markdown schema, stable stdlib/API compatibility freeze, DNS/TLS/async
|
Markdown schema, stable conformance-matrix schema, stable stdlib/API
|
||||||
networking, LSP/watch guarantees, SARIF and daemon protocols, stable `1.0.0`
|
compatibility freeze, DNS/TLS/async networking, LSP/watch guarantees, SARIF
|
||||||
|
and daemon protocols, stable `1.0.0`
|
||||||
diagnostics freeze,
|
diagnostics freeze,
|
||||||
re-exports/globs/hierarchical modules, mutable vectors, slice/view APIs,
|
re-exports/globs/hierarchical modules, mutable vectors, slice/view APIs,
|
||||||
iterators, additional compiler-known runtime names, stable ABI and layout,
|
iterators, additional compiler-known runtime names, stable ABI and layout,
|
||||||
@ -352,6 +364,19 @@ package publishing flow, optional/dev/target dependencies, stable package
|
|||||||
ABI/layout, source-language behavior, runtime behavior, or standard-library
|
ABI/layout, source-language behavior, runtime behavior, or standard-library
|
||||||
behavior.
|
behavior.
|
||||||
|
|
||||||
|
## 1.0.0-beta.25 User Project Conformance Matrix
|
||||||
|
|
||||||
|
The `1.0.0-beta.25` release adds deterministic tooling evidence for the
|
||||||
|
existing user-shaped examples under `examples/projects/` and
|
||||||
|
`examples/workspaces/`. The conformance matrix is sorted by repository path and
|
||||||
|
records ordinary `check`, `test --list`, and stable `test` behavior for all
|
||||||
|
43 top-level fixture roots and 655 discovered tests.
|
||||||
|
|
||||||
|
This scope is stable-readiness evidence only. It adds no source-language
|
||||||
|
change, standard-library helper change, runtime behavior change, package
|
||||||
|
manager or registry behavior, lockfile behavior, semantic-version solving,
|
||||||
|
stable schema freeze, or performance claim.
|
||||||
|
|
||||||
## 1.0.0-beta.6 Networking Foundation
|
## 1.0.0-beta.6 Networking Foundation
|
||||||
|
|
||||||
The `1.0.0-beta.6` release adds a narrow blocking loopback TCP foundation:
|
The `1.0.0-beta.6` release adds a narrow blocking loopback TCP foundation:
|
||||||
|
|||||||
2
compiler/Cargo.lock
generated
2
compiler/Cargo.lock
generated
@ -4,4 +4,4 @@ version = 3
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "glagol"
|
name = "glagol"
|
||||||
version = "1.0.0-beta.24"
|
version = "1.0.0-beta.25"
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "glagol"
|
name = "glagol"
|
||||||
version = "1.0.0-beta.24"
|
version = "1.0.0-beta.25"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
description = "Glagol, the first compiler for the Slovo language"
|
description = "Glagol, the first compiler for the Slovo language"
|
||||||
license = "MIT OR Apache-2.0"
|
license = "MIT OR Apache-2.0"
|
||||||
|
|||||||
539
compiler/tests/user_project_conformance_beta25.rs
Normal file
539
compiler/tests/user_project_conformance_beta25.rs
Normal file
@ -0,0 +1,539 @@
|
|||||||
|
use std::{
|
||||||
|
ffi::OsStr,
|
||||||
|
fs,
|
||||||
|
path::{Path, PathBuf},
|
||||||
|
process::{Command, Output},
|
||||||
|
sync::atomic::{AtomicUsize, Ordering},
|
||||||
|
time::{SystemTime, UNIX_EPOCH},
|
||||||
|
};
|
||||||
|
|
||||||
|
static NEXT_TEMP_ID: AtomicUsize = AtomicUsize::new(0);
|
||||||
|
|
||||||
|
struct MatrixEntry {
|
||||||
|
path: &'static str,
|
||||||
|
expected_tests: usize,
|
||||||
|
run_tests: bool,
|
||||||
|
}
|
||||||
|
|
||||||
|
const MATRIX: &[MatrixEntry] = &[
|
||||||
|
MatrixEntry {
|
||||||
|
path: "examples/projects/basic",
|
||||||
|
expected_tests: 2,
|
||||||
|
run_tests: true,
|
||||||
|
},
|
||||||
|
MatrixEntry {
|
||||||
|
path: "examples/projects/enum-imports",
|
||||||
|
expected_tests: 9,
|
||||||
|
run_tests: true,
|
||||||
|
},
|
||||||
|
MatrixEntry {
|
||||||
|
path: "examples/projects/std-import-cli",
|
||||||
|
expected_tests: 17,
|
||||||
|
run_tests: true,
|
||||||
|
},
|
||||||
|
MatrixEntry {
|
||||||
|
path: "examples/projects/std-import-env",
|
||||||
|
expected_tests: 23,
|
||||||
|
run_tests: true,
|
||||||
|
},
|
||||||
|
MatrixEntry {
|
||||||
|
path: "examples/projects/std-import-fs",
|
||||||
|
expected_tests: 35,
|
||||||
|
run_tests: true,
|
||||||
|
},
|
||||||
|
MatrixEntry {
|
||||||
|
path: "examples/projects/std-import-io",
|
||||||
|
expected_tests: 12,
|
||||||
|
run_tests: true,
|
||||||
|
},
|
||||||
|
MatrixEntry {
|
||||||
|
path: "examples/projects/std-import-json",
|
||||||
|
expected_tests: 12,
|
||||||
|
run_tests: true,
|
||||||
|
},
|
||||||
|
MatrixEntry {
|
||||||
|
path: "examples/projects/std-import-math",
|
||||||
|
expected_tests: 4,
|
||||||
|
run_tests: true,
|
||||||
|
},
|
||||||
|
MatrixEntry {
|
||||||
|
path: "examples/projects/std-import-net",
|
||||||
|
expected_tests: 9,
|
||||||
|
run_tests: true,
|
||||||
|
},
|
||||||
|
MatrixEntry {
|
||||||
|
path: "examples/projects/std-import-num",
|
||||||
|
expected_tests: 5,
|
||||||
|
run_tests: true,
|
||||||
|
},
|
||||||
|
MatrixEntry {
|
||||||
|
path: "examples/projects/std-import-option",
|
||||||
|
expected_tests: 36,
|
||||||
|
run_tests: true,
|
||||||
|
},
|
||||||
|
MatrixEntry {
|
||||||
|
path: "examples/projects/std-import-process",
|
||||||
|
expected_tests: 21,
|
||||||
|
run_tests: true,
|
||||||
|
},
|
||||||
|
MatrixEntry {
|
||||||
|
path: "examples/projects/std-import-random",
|
||||||
|
expected_tests: 2,
|
||||||
|
run_tests: true,
|
||||||
|
},
|
||||||
|
MatrixEntry {
|
||||||
|
path: "examples/projects/std-import-result",
|
||||||
|
expected_tests: 26,
|
||||||
|
run_tests: true,
|
||||||
|
},
|
||||||
|
MatrixEntry {
|
||||||
|
path: "examples/projects/std-import-string",
|
||||||
|
expected_tests: 12,
|
||||||
|
run_tests: true,
|
||||||
|
},
|
||||||
|
MatrixEntry {
|
||||||
|
path: "examples/projects/std-import-time",
|
||||||
|
expected_tests: 3,
|
||||||
|
run_tests: true,
|
||||||
|
},
|
||||||
|
MatrixEntry {
|
||||||
|
path: "examples/projects/std-import-vec_bool",
|
||||||
|
expected_tests: 19,
|
||||||
|
run_tests: true,
|
||||||
|
},
|
||||||
|
MatrixEntry {
|
||||||
|
path: "examples/projects/std-import-vec_f64",
|
||||||
|
expected_tests: 20,
|
||||||
|
run_tests: true,
|
||||||
|
},
|
||||||
|
MatrixEntry {
|
||||||
|
path: "examples/projects/std-import-vec_i32",
|
||||||
|
expected_tests: 22,
|
||||||
|
run_tests: true,
|
||||||
|
},
|
||||||
|
MatrixEntry {
|
||||||
|
path: "examples/projects/std-import-vec_i64",
|
||||||
|
expected_tests: 20,
|
||||||
|
run_tests: true,
|
||||||
|
},
|
||||||
|
MatrixEntry {
|
||||||
|
path: "examples/projects/std-import-vec_string",
|
||||||
|
expected_tests: 19,
|
||||||
|
run_tests: true,
|
||||||
|
},
|
||||||
|
MatrixEntry {
|
||||||
|
path: "examples/projects/std-layout-local-cli",
|
||||||
|
expected_tests: 17,
|
||||||
|
run_tests: true,
|
||||||
|
},
|
||||||
|
MatrixEntry {
|
||||||
|
path: "examples/projects/std-layout-local-env",
|
||||||
|
expected_tests: 23,
|
||||||
|
run_tests: true,
|
||||||
|
},
|
||||||
|
MatrixEntry {
|
||||||
|
path: "examples/projects/std-layout-local-fs",
|
||||||
|
expected_tests: 35,
|
||||||
|
run_tests: true,
|
||||||
|
},
|
||||||
|
MatrixEntry {
|
||||||
|
path: "examples/projects/std-layout-local-io",
|
||||||
|
expected_tests: 12,
|
||||||
|
run_tests: true,
|
||||||
|
},
|
||||||
|
MatrixEntry {
|
||||||
|
path: "examples/projects/std-layout-local-json",
|
||||||
|
expected_tests: 12,
|
||||||
|
run_tests: true,
|
||||||
|
},
|
||||||
|
MatrixEntry {
|
||||||
|
path: "examples/projects/std-layout-local-math",
|
||||||
|
expected_tests: 7,
|
||||||
|
run_tests: true,
|
||||||
|
},
|
||||||
|
MatrixEntry {
|
||||||
|
path: "examples/projects/std-layout-local-net",
|
||||||
|
expected_tests: 9,
|
||||||
|
run_tests: true,
|
||||||
|
},
|
||||||
|
MatrixEntry {
|
||||||
|
path: "examples/projects/std-layout-local-num",
|
||||||
|
expected_tests: 5,
|
||||||
|
run_tests: true,
|
||||||
|
},
|
||||||
|
MatrixEntry {
|
||||||
|
path: "examples/projects/std-layout-local-option",
|
||||||
|
expected_tests: 36,
|
||||||
|
run_tests: true,
|
||||||
|
},
|
||||||
|
MatrixEntry {
|
||||||
|
path: "examples/projects/std-layout-local-process",
|
||||||
|
expected_tests: 21,
|
||||||
|
run_tests: true,
|
||||||
|
},
|
||||||
|
MatrixEntry {
|
||||||
|
path: "examples/projects/std-layout-local-random",
|
||||||
|
expected_tests: 3,
|
||||||
|
run_tests: true,
|
||||||
|
},
|
||||||
|
MatrixEntry {
|
||||||
|
path: "examples/projects/std-layout-local-result",
|
||||||
|
expected_tests: 26,
|
||||||
|
run_tests: true,
|
||||||
|
},
|
||||||
|
MatrixEntry {
|
||||||
|
path: "examples/projects/std-layout-local-string",
|
||||||
|
expected_tests: 12,
|
||||||
|
run_tests: true,
|
||||||
|
},
|
||||||
|
MatrixEntry {
|
||||||
|
path: "examples/projects/std-layout-local-time",
|
||||||
|
expected_tests: 3,
|
||||||
|
run_tests: true,
|
||||||
|
},
|
||||||
|
MatrixEntry {
|
||||||
|
path: "examples/projects/std-layout-local-vec_bool",
|
||||||
|
expected_tests: 19,
|
||||||
|
run_tests: true,
|
||||||
|
},
|
||||||
|
MatrixEntry {
|
||||||
|
path: "examples/projects/std-layout-local-vec_f64",
|
||||||
|
expected_tests: 20,
|
||||||
|
run_tests: true,
|
||||||
|
},
|
||||||
|
MatrixEntry {
|
||||||
|
path: "examples/projects/std-layout-local-vec_i32",
|
||||||
|
expected_tests: 22,
|
||||||
|
run_tests: true,
|
||||||
|
},
|
||||||
|
MatrixEntry {
|
||||||
|
path: "examples/projects/std-layout-local-vec_i64",
|
||||||
|
expected_tests: 20,
|
||||||
|
run_tests: true,
|
||||||
|
},
|
||||||
|
MatrixEntry {
|
||||||
|
path: "examples/projects/std-layout-local-vec_string",
|
||||||
|
expected_tests: 19,
|
||||||
|
run_tests: true,
|
||||||
|
},
|
||||||
|
MatrixEntry {
|
||||||
|
path: "examples/projects/stdlib-composition",
|
||||||
|
expected_tests: 3,
|
||||||
|
run_tests: true,
|
||||||
|
},
|
||||||
|
MatrixEntry {
|
||||||
|
path: "examples/workspaces/exp-5-local",
|
||||||
|
expected_tests: 2,
|
||||||
|
run_tests: true,
|
||||||
|
},
|
||||||
|
MatrixEntry {
|
||||||
|
path: "examples/workspaces/std-import-option",
|
||||||
|
expected_tests: 1,
|
||||||
|
run_tests: true,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn user_project_conformance_matrix_checks_lists_and_runs_stable_tests() {
|
||||||
|
assert_matrix_inventory();
|
||||||
|
|
||||||
|
let repo_root = repo_root();
|
||||||
|
for entry in MATRIX {
|
||||||
|
let fixture = repo_root.join(entry.path);
|
||||||
|
assert!(
|
||||||
|
fixture.join("slovo.toml").is_file(),
|
||||||
|
"{} must remain an existing project or workspace fixture",
|
||||||
|
entry.path
|
||||||
|
);
|
||||||
|
|
||||||
|
let check = run_glagol(
|
||||||
|
[OsStr::new("check"), fixture.as_os_str()],
|
||||||
|
&temp_root(entry.path, "check"),
|
||||||
|
);
|
||||||
|
assert_success_no_stderr(entry.path, "check", &check);
|
||||||
|
assert_stdout_eq(entry.path, "check", &check, "");
|
||||||
|
|
||||||
|
let list = run_glagol(
|
||||||
|
[
|
||||||
|
OsStr::new("test"),
|
||||||
|
OsStr::new("--list"),
|
||||||
|
fixture.as_os_str(),
|
||||||
|
],
|
||||||
|
&temp_root(entry.path, "list"),
|
||||||
|
);
|
||||||
|
assert_success_no_stderr(entry.path, "test --list", &list);
|
||||||
|
assert_stdout_contains(
|
||||||
|
entry.path,
|
||||||
|
"test --list",
|
||||||
|
&list,
|
||||||
|
&format!(
|
||||||
|
"{} test(s) selected (total_discovered {}, selected {}, passed 0, failed 0, skipped 0, filter none)",
|
||||||
|
entry.expected_tests, entry.expected_tests, entry.expected_tests
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
if entry.run_tests {
|
||||||
|
let test = run_glagol(
|
||||||
|
[OsStr::new("test"), fixture.as_os_str()],
|
||||||
|
&temp_root(entry.path, "test"),
|
||||||
|
);
|
||||||
|
assert_success_no_stderr(entry.path, "test", &test);
|
||||||
|
assert_stdout_contains(
|
||||||
|
entry.path,
|
||||||
|
"test",
|
||||||
|
&test,
|
||||||
|
&format!("{} test(s) passed", entry.expected_tests),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn assert_matrix_inventory() {
|
||||||
|
assert_eq!(MATRIX.len(), 43, "beta25 fixture-root count changed");
|
||||||
|
assert_eq!(
|
||||||
|
MATRIX
|
||||||
|
.iter()
|
||||||
|
.map(|entry| entry.expected_tests)
|
||||||
|
.sum::<usize>(),
|
||||||
|
655,
|
||||||
|
"beta25 discovered-test count changed"
|
||||||
|
);
|
||||||
|
|
||||||
|
let matrix_paths = MATRIX
|
||||||
|
.iter()
|
||||||
|
.map(|entry| entry.path.to_owned())
|
||||||
|
.collect::<Vec<_>>();
|
||||||
|
let mut sorted_matrix_paths = matrix_paths.clone();
|
||||||
|
sorted_matrix_paths.sort();
|
||||||
|
assert_eq!(
|
||||||
|
matrix_paths, sorted_matrix_paths,
|
||||||
|
"beta25 user-project conformance matrix must remain sorted by repository-relative path"
|
||||||
|
);
|
||||||
|
|
||||||
|
let discovered_paths = discover_fixture_paths(&repo_root());
|
||||||
|
assert_eq!(
|
||||||
|
discovered_paths, matrix_paths,
|
||||||
|
"beta25 user-project conformance matrix must cover every top-level example project and workspace fixture"
|
||||||
|
);
|
||||||
|
|
||||||
|
let inventory = MATRIX
|
||||||
|
.iter()
|
||||||
|
.map(|entry| {
|
||||||
|
format!(
|
||||||
|
"{}|tests={}|run_tests={}",
|
||||||
|
entry.path, entry.expected_tests, entry.run_tests
|
||||||
|
)
|
||||||
|
})
|
||||||
|
.collect::<Vec<_>>()
|
||||||
|
.join("\n");
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
inventory,
|
||||||
|
concat!(
|
||||||
|
"examples/projects/basic|tests=2|run_tests=true\n",
|
||||||
|
"examples/projects/enum-imports|tests=9|run_tests=true\n",
|
||||||
|
"examples/projects/std-import-cli|tests=17|run_tests=true\n",
|
||||||
|
"examples/projects/std-import-env|tests=23|run_tests=true\n",
|
||||||
|
"examples/projects/std-import-fs|tests=35|run_tests=true\n",
|
||||||
|
"examples/projects/std-import-io|tests=12|run_tests=true\n",
|
||||||
|
"examples/projects/std-import-json|tests=12|run_tests=true\n",
|
||||||
|
"examples/projects/std-import-math|tests=4|run_tests=true\n",
|
||||||
|
"examples/projects/std-import-net|tests=9|run_tests=true\n",
|
||||||
|
"examples/projects/std-import-num|tests=5|run_tests=true\n",
|
||||||
|
"examples/projects/std-import-option|tests=36|run_tests=true\n",
|
||||||
|
"examples/projects/std-import-process|tests=21|run_tests=true\n",
|
||||||
|
"examples/projects/std-import-random|tests=2|run_tests=true\n",
|
||||||
|
"examples/projects/std-import-result|tests=26|run_tests=true\n",
|
||||||
|
"examples/projects/std-import-string|tests=12|run_tests=true\n",
|
||||||
|
"examples/projects/std-import-time|tests=3|run_tests=true\n",
|
||||||
|
"examples/projects/std-import-vec_bool|tests=19|run_tests=true\n",
|
||||||
|
"examples/projects/std-import-vec_f64|tests=20|run_tests=true\n",
|
||||||
|
"examples/projects/std-import-vec_i32|tests=22|run_tests=true\n",
|
||||||
|
"examples/projects/std-import-vec_i64|tests=20|run_tests=true\n",
|
||||||
|
"examples/projects/std-import-vec_string|tests=19|run_tests=true\n",
|
||||||
|
"examples/projects/std-layout-local-cli|tests=17|run_tests=true\n",
|
||||||
|
"examples/projects/std-layout-local-env|tests=23|run_tests=true\n",
|
||||||
|
"examples/projects/std-layout-local-fs|tests=35|run_tests=true\n",
|
||||||
|
"examples/projects/std-layout-local-io|tests=12|run_tests=true\n",
|
||||||
|
"examples/projects/std-layout-local-json|tests=12|run_tests=true\n",
|
||||||
|
"examples/projects/std-layout-local-math|tests=7|run_tests=true\n",
|
||||||
|
"examples/projects/std-layout-local-net|tests=9|run_tests=true\n",
|
||||||
|
"examples/projects/std-layout-local-num|tests=5|run_tests=true\n",
|
||||||
|
"examples/projects/std-layout-local-option|tests=36|run_tests=true\n",
|
||||||
|
"examples/projects/std-layout-local-process|tests=21|run_tests=true\n",
|
||||||
|
"examples/projects/std-layout-local-random|tests=3|run_tests=true\n",
|
||||||
|
"examples/projects/std-layout-local-result|tests=26|run_tests=true\n",
|
||||||
|
"examples/projects/std-layout-local-string|tests=12|run_tests=true\n",
|
||||||
|
"examples/projects/std-layout-local-time|tests=3|run_tests=true\n",
|
||||||
|
"examples/projects/std-layout-local-vec_bool|tests=19|run_tests=true\n",
|
||||||
|
"examples/projects/std-layout-local-vec_f64|tests=20|run_tests=true\n",
|
||||||
|
"examples/projects/std-layout-local-vec_i32|tests=22|run_tests=true\n",
|
||||||
|
"examples/projects/std-layout-local-vec_i64|tests=20|run_tests=true\n",
|
||||||
|
"examples/projects/std-layout-local-vec_string|tests=19|run_tests=true\n",
|
||||||
|
"examples/projects/stdlib-composition|tests=3|run_tests=true\n",
|
||||||
|
"examples/workspaces/exp-5-local|tests=2|run_tests=true\n",
|
||||||
|
"examples/workspaces/std-import-option|tests=1|run_tests=true",
|
||||||
|
),
|
||||||
|
"beta25 user-project conformance matrix changed without updating the inventory assertion"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn discover_fixture_paths(repo_root: &Path) -> Vec<String> {
|
||||||
|
let mut paths = Vec::new();
|
||||||
|
for parent in ["examples/projects", "examples/workspaces"] {
|
||||||
|
let parent_path = repo_root.join(parent);
|
||||||
|
for entry in fs::read_dir(&parent_path).unwrap_or_else(|err| {
|
||||||
|
panic!(
|
||||||
|
"read fixture inventory `{}`: {}",
|
||||||
|
parent_path.display(),
|
||||||
|
err
|
||||||
|
);
|
||||||
|
}) {
|
||||||
|
let entry = entry.unwrap_or_else(|err| {
|
||||||
|
panic!(
|
||||||
|
"read fixture entry under `{}`: {}",
|
||||||
|
parent_path.display(),
|
||||||
|
err
|
||||||
|
);
|
||||||
|
});
|
||||||
|
let path = entry.path();
|
||||||
|
if path.join("slovo.toml").is_file() {
|
||||||
|
paths.push(
|
||||||
|
path.strip_prefix(repo_root)
|
||||||
|
.expect("fixture path under repository root")
|
||||||
|
.to_string_lossy()
|
||||||
|
.replace('\\', "/"),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
paths.sort();
|
||||||
|
paths
|
||||||
|
}
|
||||||
|
|
||||||
|
fn repo_root() -> PathBuf {
|
||||||
|
Path::new(env!("CARGO_MANIFEST_DIR"))
|
||||||
|
.parent()
|
||||||
|
.expect("compiler crate has repository parent")
|
||||||
|
.to_path_buf()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn run_glagol<I, S>(args: I, cwd: &Path) -> Output
|
||||||
|
where
|
||||||
|
I: IntoIterator<Item = S>,
|
||||||
|
S: AsRef<OsStr>,
|
||||||
|
{
|
||||||
|
fs::create_dir_all(cwd).unwrap_or_else(|err| {
|
||||||
|
panic!("create command cwd `{}`: {}", cwd.display(), err);
|
||||||
|
});
|
||||||
|
let mut command = Command::new(env!("CARGO_BIN_EXE_glagol"));
|
||||||
|
configure_conformance_env(&mut command);
|
||||||
|
command
|
||||||
|
.args(args)
|
||||||
|
.current_dir(cwd)
|
||||||
|
.output()
|
||||||
|
.expect("run glagol")
|
||||||
|
}
|
||||||
|
|
||||||
|
fn configure_conformance_env(command: &mut Command) {
|
||||||
|
for key in [
|
||||||
|
"GLAGOL_STD_IMPORT_ENV_ALPHA_UNLIKELY_MISSING",
|
||||||
|
"GLAGOL_STD_LAYOUT_LOCAL_ENV_ALPHA_UNLIKELY_MISSING",
|
||||||
|
] {
|
||||||
|
command.env_remove(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (key, value) in [
|
||||||
|
(
|
||||||
|
"GLAGOL_STD_IMPORT_ENV_ALPHA_PRESENT",
|
||||||
|
"glagol-std-import-env-alpha-value",
|
||||||
|
),
|
||||||
|
("GLAGOL_STD_IMPORT_ENV_ALPHA_PRESENT_I32", "42"),
|
||||||
|
("GLAGOL_STD_IMPORT_ENV_ALPHA_PRESENT_I64", "42000000000"),
|
||||||
|
("GLAGOL_STD_IMPORT_ENV_ALPHA_PRESENT_U32", "42"),
|
||||||
|
("GLAGOL_STD_IMPORT_ENV_ALPHA_PRESENT_U64", "4294967296"),
|
||||||
|
("GLAGOL_STD_IMPORT_ENV_ALPHA_PRESENT_F64", "42.5"),
|
||||||
|
("GLAGOL_STD_IMPORT_ENV_ALPHA_PRESENT_BOOL", "true"),
|
||||||
|
("GLAGOL_STD_IMPORT_ENV_ALPHA_INVALID", "not-a-number"),
|
||||||
|
(
|
||||||
|
"GLAGOL_STD_LAYOUT_LOCAL_ENV_ALPHA_PRESENT",
|
||||||
|
"glagol-std-layout-local-env-alpha-value",
|
||||||
|
),
|
||||||
|
("GLAGOL_STD_LAYOUT_LOCAL_ENV_ALPHA_PRESENT_I32", "42"),
|
||||||
|
(
|
||||||
|
"GLAGOL_STD_LAYOUT_LOCAL_ENV_ALPHA_PRESENT_I64",
|
||||||
|
"42000000000",
|
||||||
|
),
|
||||||
|
("GLAGOL_STD_LAYOUT_LOCAL_ENV_ALPHA_PRESENT_U32", "42"),
|
||||||
|
(
|
||||||
|
"GLAGOL_STD_LAYOUT_LOCAL_ENV_ALPHA_PRESENT_U64",
|
||||||
|
"4294967296",
|
||||||
|
),
|
||||||
|
("GLAGOL_STD_LAYOUT_LOCAL_ENV_ALPHA_PRESENT_F64", "42.5"),
|
||||||
|
("GLAGOL_STD_LAYOUT_LOCAL_ENV_ALPHA_PRESENT_BOOL", "true"),
|
||||||
|
("GLAGOL_STD_LAYOUT_LOCAL_ENV_ALPHA_INVALID", "not-a-number"),
|
||||||
|
] {
|
||||||
|
command.env(key, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn temp_root(path: &str, command: &str) -> PathBuf {
|
||||||
|
let id = NEXT_TEMP_ID.fetch_add(1, Ordering::Relaxed);
|
||||||
|
let nanos = SystemTime::now()
|
||||||
|
.duration_since(UNIX_EPOCH)
|
||||||
|
.expect("system clock before UNIX_EPOCH")
|
||||||
|
.as_nanos();
|
||||||
|
let fixture = path
|
||||||
|
.chars()
|
||||||
|
.map(|ch| if ch == '/' || ch == '-' { '_' } else { ch })
|
||||||
|
.collect::<String>();
|
||||||
|
std::env::temp_dir().join(format!(
|
||||||
|
"glagol-user-project-conformance-beta25-{}-{}-{}-{}-{}",
|
||||||
|
std::process::id(),
|
||||||
|
nanos,
|
||||||
|
id,
|
||||||
|
fixture,
|
||||||
|
command
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
|
fn assert_success_no_stderr(fixture: &str, command: &str, output: &Output) {
|
||||||
|
assert!(
|
||||||
|
output.status.success(),
|
||||||
|
"{} `{}` failed\nstatus: {:?}\nstdout:\n{}\nstderr:\n{}",
|
||||||
|
fixture,
|
||||||
|
command,
|
||||||
|
output.status.code(),
|
||||||
|
String::from_utf8_lossy(&output.stdout),
|
||||||
|
String::from_utf8_lossy(&output.stderr)
|
||||||
|
);
|
||||||
|
assert!(
|
||||||
|
output.stderr.is_empty(),
|
||||||
|
"{} `{}` wrote stderr:\n{}",
|
||||||
|
fixture,
|
||||||
|
command,
|
||||||
|
String::from_utf8_lossy(&output.stderr)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn assert_stdout_eq(fixture: &str, command: &str, output: &Output, expected: &str) {
|
||||||
|
assert_eq!(
|
||||||
|
String::from_utf8_lossy(&output.stdout),
|
||||||
|
expected,
|
||||||
|
"{} `{}` stdout mismatch",
|
||||||
|
fixture,
|
||||||
|
command
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn assert_stdout_contains(fixture: &str, command: &str, output: &Output, needle: &str) {
|
||||||
|
let stdout = String::from_utf8_lossy(&output.stdout);
|
||||||
|
assert!(
|
||||||
|
stdout.contains(needle),
|
||||||
|
"{} `{}` stdout did not contain `{}`:\n{}",
|
||||||
|
fixture,
|
||||||
|
command,
|
||||||
|
needle,
|
||||||
|
stdout
|
||||||
|
);
|
||||||
|
}
|
||||||
@ -56,6 +56,15 @@ LSP/watch behavior, SARIF/daemon protocols, JSON expansion, runtime helper
|
|||||||
names, source-language syntax, package registries, semver solving, or
|
names, source-language syntax, package registries, semver solving, or
|
||||||
performance claims.
|
performance claims.
|
||||||
|
|
||||||
|
Released in `1.0.0-beta.25`: user-project conformance matrix evidence. The
|
||||||
|
scope adds a deterministic matrix over the existing `examples/projects/` and
|
||||||
|
`examples/workspaces/` inventories so ordinary project and workspace usage has
|
||||||
|
stable-readiness evidence across all 43 top-level fixture roots and 655
|
||||||
|
discovered tests. It is tooling/conformance evidence only: no
|
||||||
|
source-language change, standard-library helper change, runtime behavior
|
||||||
|
change, package manager or registry behavior, lockfile behavior,
|
||||||
|
semantic-version solving, stable schema freeze, or performance claim.
|
||||||
|
|
||||||
Why first: it reduces friction for every later feature and gives users a better
|
Why first: it reduces friction for every later feature and gives users a better
|
||||||
way to exercise the beta.
|
way to exercise the beta.
|
||||||
|
|
||||||
@ -567,7 +576,8 @@ Slovo should not become stable until all of these are true:
|
|||||||
- package/workspace behavior is deterministic
|
- package/workspace behavior is deterministic
|
||||||
- package manifest identity and dependency-key failures have explicit
|
- package manifest identity and dependency-key failures have explicit
|
||||||
diagnostics
|
diagnostics
|
||||||
- conformance tests cover user-shaped projects
|
- conformance tests and matrix evidence cover user-shaped projects and
|
||||||
|
workspaces
|
||||||
- release gates are reproducible on a clean checkout
|
- release gates are reproducible on a clean checkout
|
||||||
- diagnostics and formatter output are stable for promoted features
|
- diagnostics and formatter output are stable for promoted features
|
||||||
- performance publications are repeatable and labeled as local-machine evidence
|
- performance publications are repeatable and labeled as local-machine evidence
|
||||||
|
|||||||
@ -12,6 +12,40 @@ integration/readiness release, not the first real beta.
|
|||||||
|
|
||||||
No active unreleased compiler scope is documented here yet.
|
No active unreleased compiler scope is documented here yet.
|
||||||
|
|
||||||
|
## 1.0.0-beta.25
|
||||||
|
|
||||||
|
Release label: `1.0.0-beta.25`
|
||||||
|
|
||||||
|
Release date: 2026-05-23
|
||||||
|
|
||||||
|
Release state: user-project conformance matrix evidence
|
||||||
|
|
||||||
|
### Summary
|
||||||
|
|
||||||
|
The beta.25 compiler/tooling slice adds deterministic stable-readiness
|
||||||
|
evidence for ordinary project and workspace usage without changing the
|
||||||
|
language, runtime, stdlib, or package manager model:
|
||||||
|
|
||||||
|
- Add a user-project conformance matrix over all 43 top-level fixture roots
|
||||||
|
under existing `examples/projects/` and `examples/workspaces/`, covering
|
||||||
|
655 discovered tests.
|
||||||
|
- Keep matrix inputs repository-local and deterministically sorted by
|
||||||
|
repository-relative path.
|
||||||
|
- Record ordinary `check`, `test --list`, and stable `test` behavior for each
|
||||||
|
existing example in the matrix.
|
||||||
|
- Treat matrix output as beta tooling evidence rather than a stable public
|
||||||
|
schema.
|
||||||
|
|
||||||
|
### Explicit Deferrals
|
||||||
|
|
||||||
|
This release does not implement source-language change, standard-library
|
||||||
|
helper change, runtime behavior change, compiler-known `std.*` runtime names,
|
||||||
|
package manager behavior, remote registries, lockfiles, semantic-version
|
||||||
|
solving, package publishing, optional/dev/target dependencies, stable
|
||||||
|
artifact-manifest schema guarantees, stable Markdown schemas, stable
|
||||||
|
conformance-matrix schema guarantees, LSP/watch/SARIF/daemon protocols, stable
|
||||||
|
ABI/layout, or performance claims.
|
||||||
|
|
||||||
## 1.0.0-beta.24
|
## 1.0.0-beta.24
|
||||||
|
|
||||||
Release label: `1.0.0-beta.24`
|
Release label: `1.0.0-beta.24`
|
||||||
|
|||||||
@ -21,8 +21,8 @@ general-purpose beta release.
|
|||||||
|
|
||||||
A Glagol feature is done only when it has parser/lowerer support, checker behavior, diagnostics for invalid forms, backend behavior or explicit unsupported diagnostics, and tests.
|
A Glagol feature is done only when it has parser/lowerer support, checker behavior, diagnostics for invalid forms, backend behavior or explicit unsupported diagnostics, and tests.
|
||||||
|
|
||||||
Current stage: `1.0.0-beta.24`, released on 2026-05-23 as package manifest
|
Current stage: `1.0.0-beta.25`, released on 2026-05-23 as user-project
|
||||||
identity and local dependency diagnostic hardening. It keeps the
|
conformance matrix evidence. It keeps the
|
||||||
`1.0.0-beta` language/compiler support baseline and includes the
|
`1.0.0-beta` language/compiler support baseline and includes the
|
||||||
`1.0.0-beta.1` tooling hardening release, the `1.0.0-beta.2` runtime/resource
|
`1.0.0-beta.1` tooling hardening release, the `1.0.0-beta.2` runtime/resource
|
||||||
foundation release, the `1.0.0-beta.3` standard-library stabilization release,
|
foundation release, the `1.0.0-beta.3` standard-library stabilization release,
|
||||||
@ -139,10 +139,21 @@ lockfile, semantic-version solving, package publishing, optional/dev/target
|
|||||||
dependencies, stable package ABI/layout, source-language behavior, runtime
|
dependencies, stable package ABI/layout, source-language behavior, runtime
|
||||||
behavior, or standard-library behavior.
|
behavior, or standard-library behavior.
|
||||||
|
|
||||||
|
The beta.25 compiler/tooling slice adds deterministic stable-readiness
|
||||||
|
evidence for ordinary project and workspace usage over the existing
|
||||||
|
`examples/projects/` and `examples/workspaces/` inventories. The conformance
|
||||||
|
matrix is repository-local, sorted by stable path, and records ordinary
|
||||||
|
`check`, `test --list`, and stable `test` behavior for all 43 top-level
|
||||||
|
fixture roots and 655 discovered tests. It adds no source-language behavior,
|
||||||
|
runtime behavior, standard-library helper behavior, package manager or
|
||||||
|
registry behavior, lockfile behavior, semantic-version solving, stable schema
|
||||||
|
freeze, or performance claim.
|
||||||
|
|
||||||
Generic vectors, generic collections, maps, sets, generic stdlib dispatch,
|
Generic vectors, generic collections, maps, sets, generic stdlib dispatch,
|
||||||
runtime collection changes, collection unification, stable human diagnostic
|
runtime collection changes, collection unification, stable human diagnostic
|
||||||
text, stable artifact-manifest or Markdown schema freezes, LSP/watch
|
text, stable artifact-manifest, Markdown, or conformance-matrix schema
|
||||||
protocols, SARIF/daemon protocols, re-exports/globs/hierarchical modules,
|
freezes, LSP/watch protocols, SARIF/daemon protocols,
|
||||||
|
re-exports/globs/hierarchical modules,
|
||||||
registry semantics, semver solving, mutable vectors, stable slice/view APIs,
|
registry semantics, semver solving, mutable vectors, stable slice/view APIs,
|
||||||
tokenizers, broader JSON parsing, runtime helper names, source-language
|
tokenizers, broader JSON parsing, runtime helper names, source-language
|
||||||
syntax, parallel test execution, retries, tags/groups, coverage/event streams,
|
syntax, parallel test execution, retries, tags/groups, coverage/event streams,
|
||||||
|
|||||||
@ -8,7 +8,7 @@ Historical `exp-*` releases listed here are experimental maturity milestones.
|
|||||||
The pushed tag `v2.0.0-beta.1` is historical. It is now documented as an
|
The pushed tag `v2.0.0-beta.1` is historical. It is now documented as an
|
||||||
experimental integration/readiness release, not as a beta maturity claim.
|
experimental integration/readiness release, not as a beta maturity claim.
|
||||||
|
|
||||||
The current release is `1.0.0-beta.24`, published on 2026-05-23. It keeps the
|
The current release is `1.0.0-beta.25`, published on 2026-05-23. It keeps the
|
||||||
`1.0.0-beta` language surface, includes the first post-beta tooling/install
|
`1.0.0-beta` language surface, includes the first post-beta tooling/install
|
||||||
hardening bundle from `1.0.0-beta.1`, and adds the first runtime/resource
|
hardening bundle from `1.0.0-beta.1`, and adds the first runtime/resource
|
||||||
foundation bundle from `1.0.0-beta.2` plus the first standard-library
|
foundation bundle from `1.0.0-beta.2` plus the first standard-library
|
||||||
@ -33,14 +33,38 @@ conformance foundation from `1.0.0-beta.19`, and the string search and ASCII
|
|||||||
trim foundation from `1.0.0-beta.20`, plus the JSON document scalar parsing
|
trim foundation from `1.0.0-beta.20`, plus the JSON document scalar parsing
|
||||||
foundation from `1.0.0-beta.21`, and the run manifest execution-report
|
foundation from `1.0.0-beta.21`, and the run manifest execution-report
|
||||||
hardening slice from `1.0.0-beta.22`, plus the standard-library stability tier
|
hardening slice from `1.0.0-beta.22`, plus the standard-library stability tier
|
||||||
ledger and catalog alignment slice from `1.0.0-beta.23`, and the package
|
ledger and catalog alignment slice from `1.0.0-beta.23`, the package manifest
|
||||||
manifest identity and local dependency diagnostic hardening slice from
|
identity and local dependency diagnostic hardening slice from
|
||||||
`1.0.0-beta.24`.
|
`1.0.0-beta.24`, and the user-project conformance matrix evidence slice from
|
||||||
|
`1.0.0-beta.25`.
|
||||||
|
|
||||||
## Unreleased
|
## Unreleased
|
||||||
|
|
||||||
No active unreleased language scope is documented here yet.
|
No active unreleased language scope is documented here yet.
|
||||||
|
|
||||||
|
## 1.0.0-beta.25
|
||||||
|
|
||||||
|
Release label: `1.0.0-beta.25`
|
||||||
|
|
||||||
|
Release name: User Project Conformance Matrix
|
||||||
|
|
||||||
|
Release date: 2026-05-23
|
||||||
|
|
||||||
|
Status: released beta tooling/conformance evidence on the `1.0.0-beta`
|
||||||
|
language baseline.
|
||||||
|
|
||||||
|
This release adds deterministic stable-readiness evidence for ordinary
|
||||||
|
project and workspace usage over the existing `examples/projects/` and
|
||||||
|
`examples/workspaces/` inventories. The conformance matrix records
|
||||||
|
repository-local example coverage for all 43 top-level fixture roots and 655
|
||||||
|
discovered tests through ordinary Glagol project/workspace entry points.
|
||||||
|
|
||||||
|
This release adds no source-language change, standard-library helper change,
|
||||||
|
runtime behavior change, compiler-known runtime names, package manager or
|
||||||
|
registry behavior, lockfile behavior, semantic-version solving, stable
|
||||||
|
artifact-manifest schema, stable Markdown schema, stable conformance-matrix
|
||||||
|
schema, stable ABI/layout, or performance claim.
|
||||||
|
|
||||||
## 1.0.0-beta.24
|
## 1.0.0-beta.24
|
||||||
|
|
||||||
Release label: `1.0.0-beta.24`
|
Release label: `1.0.0-beta.24`
|
||||||
|
|||||||
@ -8,9 +8,9 @@ Guiding rule: the manifest wins. A feature is not accepted until it has surface
|
|||||||
Long-horizon planning lives in `.llm/ROADMAP_TO_STABLE.md`. It defines the
|
Long-horizon planning lives in `.llm/ROADMAP_TO_STABLE.md`. It defines the
|
||||||
release train beyond the first real general-purpose beta Slovo contract.
|
release train beyond the first real general-purpose beta Slovo contract.
|
||||||
|
|
||||||
Current stage: `1.0.0-beta.24`, released on 2026-05-23 as post-beta
|
Current stage: `1.0.0-beta.25`, released on 2026-05-23 as post-beta
|
||||||
package manifest identity and local dependency diagnostic hardening. It keeps
|
user-project conformance matrix evidence. It keeps the `1.0.0-beta` language
|
||||||
the `1.0.0-beta` language contract and includes the `1.0.0-beta.1` tooling
|
contract and includes the `1.0.0-beta.1` tooling
|
||||||
hardening release, the
|
hardening release, the
|
||||||
`1.0.0-beta.2` runtime/resource foundation release, the `1.0.0-beta.3`
|
`1.0.0-beta.2` runtime/resource foundation release, the `1.0.0-beta.3`
|
||||||
standard-library stabilization release, the `1.0.0-beta.4`
|
standard-library stabilization release, the `1.0.0-beta.4`
|
||||||
@ -29,8 +29,9 @@ scalar token parsing, `1.0.0-beta.18` JSON string token parsing,
|
|||||||
`1.0.0-beta.20` string search and ASCII trim helpers, plus
|
`1.0.0-beta.20` string search and ASCII trim helpers, plus
|
||||||
`1.0.0-beta.21` JSON document scalar parsing helpers, and
|
`1.0.0-beta.21` JSON document scalar parsing helpers, and
|
||||||
`1.0.0-beta.22` run manifest execution-report hardening, plus
|
`1.0.0-beta.22` run manifest execution-report hardening, plus
|
||||||
`1.0.0-beta.23` standard-library stability tier documentation, and
|
`1.0.0-beta.23` standard-library stability tier documentation,
|
||||||
`1.0.0-beta.24` package manifest/dependency diagnostic hardening.
|
`1.0.0-beta.24` package manifest/dependency diagnostic hardening, and
|
||||||
|
`1.0.0-beta.25` user-project conformance matrix evidence.
|
||||||
|
|
||||||
`1.0.0-beta.16` adds `std.string` source facades and examples for
|
`1.0.0-beta.16` adds `std.string` source facades and examples for
|
||||||
`byte_at_result`, `slice_result`, `starts_with`, and `ends_with`. These helpers
|
`byte_at_result`, `slice_result`, `starts_with`, and `ends_with`. These helpers
|
||||||
@ -127,6 +128,16 @@ It adds no remote registry, lockfile, semantic-version solving, package
|
|||||||
publishing, optional/dev/target dependencies, stable package ABI/layout,
|
publishing, optional/dev/target dependencies, stable package ABI/layout,
|
||||||
source-language change, runtime change, or stdlib change.
|
source-language change, runtime change, or stdlib change.
|
||||||
|
|
||||||
|
`1.0.0-beta.25` is tooling/conformance evidence, not a language, stdlib,
|
||||||
|
runtime, package-manager, schema-freeze, or performance feature. It adds a
|
||||||
|
deterministic user-project conformance matrix over the existing
|
||||||
|
`examples/projects/` and `examples/workspaces/` inventories so ordinary
|
||||||
|
project and workspace usage has stable-readiness evidence. The release covers
|
||||||
|
all 43 top-level fixture roots and 655 discovered tests. It adds no
|
||||||
|
source-language change, standard-library helper change, runtime behavior
|
||||||
|
change, package manager or registry behavior, lockfile behavior,
|
||||||
|
semantic-version solving, stable schema freeze, or performance claim.
|
||||||
|
|
||||||
The final experimental precursor scope is `exp-125`, defined in
|
The final experimental precursor scope is `exp-125`, defined in
|
||||||
`.llm/EXP_125_UNSIGNED_U32_U64_NUMERIC_AND_STDLIB_BREADTH_ALPHA.md`. Its
|
`.llm/EXP_125_UNSIGNED_U32_U64_NUMERIC_AND_STDLIB_BREADTH_ALPHA.md`. Its
|
||||||
unsigned direct-value flow, parse/format runtime lanes, and matching staged
|
unsigned direct-value flow, parse/format runtime lanes, and matching staged
|
||||||
|
|||||||
@ -6,7 +6,7 @@ Do not edit this file by hand.
|
|||||||
## Stability Tiers
|
## Stability Tiers
|
||||||
|
|
||||||
- `beta-supported`: exported from `lib/std` and covered by source-search, promotion, or facade gates in the current beta line.
|
- `beta-supported`: exported from `lib/std` and covered by source-search, promotion, or facade gates in the current beta line.
|
||||||
- `experimental`: exported from `lib/std` in `1.0.0-beta.24`, but still has beta caveats around host behavior, resource handles, or API shape.
|
- `experimental`: exported from `lib/std` in `1.0.0-beta.25`, but still has beta caveats around host behavior, resource handles, or API shape.
|
||||||
- `internal`: helper names that are not exported from their module; they are intentionally omitted from this catalog.
|
- `internal`: helper names that are not exported from their module; they are intentionally omitted from this catalog.
|
||||||
|
|
||||||
The catalog is a beta API discovery aid, not a stable `1.0.0` standard-library freeze.
|
The catalog is a beta API discovery aid, not a stable `1.0.0` standard-library freeze.
|
||||||
|
|||||||
@ -77,6 +77,7 @@ cargo test --test standard_string_search_trim_beta20
|
|||||||
cargo test --test standard_json_document_scalar_parsing_beta21
|
cargo test --test standard_json_document_scalar_parsing_beta21
|
||||||
cargo test --test run_manifest_beta22
|
cargo test --test run_manifest_beta22
|
||||||
cargo test --test package_workspace_discipline_beta24
|
cargo test --test package_workspace_discipline_beta24
|
||||||
|
cargo test --test user_project_conformance_beta25
|
||||||
# Full cargo test includes unignored integration gates such as dx_v1_7,
|
# Full cargo test includes unignored integration gates such as dx_v1_7,
|
||||||
# beta_v2_0_0_beta_1, and beta_1_0_0.
|
# beta_v2_0_0_beta_1, and beta_1_0_0.
|
||||||
cargo test
|
cargo test
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user