diff --git a/.llm/BETA_4_LANGUAGE_USABILITY.md b/.llm/BETA_4_LANGUAGE_USABILITY.md
index 1c24f02..78f4a5d 100644
--- a/.llm/BETA_4_LANGUAGE_USABILITY.md
+++ b/.llm/BETA_4_LANGUAGE_USABILITY.md
@@ -1,5 +1,11 @@
# Beta 4 Language Usability
+Release label: `1.0.0-beta.4`
+
+Release date: 2026-05-22
+
+Status: released beta language-usability diagnostics slice.
+
## Scope
This post-`1.0.0-beta.3` slice reduces friction in ordinary project use
diff --git a/README.md b/README.md
index 5c36443..bd4e271 100644
--- a/README.md
+++ b/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
documents.
-Current release: `1.0.0-beta.3`.
+Current release: `1.0.0-beta.4`.
## Repository Layout
@@ -24,11 +24,12 @@ scripts/ local release and document tooling
## Beta Scope
-`1.0.0-beta.3` keeps the `1.0.0-beta` language baseline, includes the
+`1.0.0-beta.4` 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`
-runtime/resource foundation bundle, and the first standard-library
-stabilization bundle. The language baseline supports practical local
-command-line programs and libraries with:
+runtime/resource foundation bundle, the `1.0.0-beta.3` standard-library
+stabilization bundle, and the first language-usability diagnostics bundle. The
+language baseline supports practical local command-line programs and libraries
+with:
- modules, explicit imports, packages, and local workspaces
- `new`, `check`, `fmt`, `test`, `doc`, and `build`
@@ -142,6 +143,13 @@ adds a generated standard-library API catalog and
`examples/projects/stdlib-composition`, a checked/tested/run-capable program
that composes `std.fs`, `std.string`, `std.math`, and `std.io`.
+## 1.0.0-beta.4 Language Usability Diagnostics
+
+The `1.0.0-beta.4` release improves diagnostics without changing the source
+language surface. Project/workspace build and run entry failures now use
+entry-specific diagnostic codes, and non-exhaustive `match` diagnostics have
+clearer wording with deterministic found-arm output.
+
## Documentation
- [Language Manifest](docs/language/MANIFEST.md)
diff --git a/compiler/Cargo.lock b/compiler/Cargo.lock
index 9f3d18c..f9789df 100644
--- a/compiler/Cargo.lock
+++ b/compiler/Cargo.lock
@@ -4,4 +4,4 @@ version = 3
[[package]]
name = "glagol"
-version = "1.0.0-beta.3"
+version = "1.0.0-beta.4"
diff --git a/compiler/Cargo.toml b/compiler/Cargo.toml
index 25317cf..9f0e089 100644
--- a/compiler/Cargo.toml
+++ b/compiler/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "glagol"
-version = "1.0.0-beta.3"
+version = "1.0.0-beta.4"
edition = "2021"
description = "Glagol, the first compiler for the Slovo language"
license = "MIT OR Apache-2.0"
diff --git a/docs/POST_BETA_ROADMAP.md b/docs/POST_BETA_ROADMAP.md
index fd67179..fbc8888 100644
--- a/docs/POST_BETA_ROADMAP.md
+++ b/docs/POST_BETA_ROADMAP.md
@@ -113,9 +113,10 @@ Candidate features:
Why fourth: these features improve real Slovo code while keeping generics and
traits deferred until the core has more feedback.
-Started on `main` after `1.0.0-beta.3`: project/workspace build and run entry
+Released in `1.0.0-beta.4`: project/workspace build and run entry
diagnostics now use entry-specific codes and explicitly show the required
-`(fn main () -> i32 ...)` contract.
+`(fn main () -> i32 ...)` contract. Non-exhaustive `match` diagnostics now use
+clearer missing-arm wording and deterministic found-arm output.
### 5. Package And Workspace Discipline
diff --git a/docs/compiler/RELEASE_NOTES.md b/docs/compiler/RELEASE_NOTES.md
index 71a3942..87c935d 100644
--- a/docs/compiler/RELEASE_NOTES.md
+++ b/docs/compiler/RELEASE_NOTES.md
@@ -10,6 +10,21 @@ integration/readiness release, not the first real beta.
## Unreleased
+No unreleased changes yet.
+
+## 1.0.0-beta.4
+
+Release label: `1.0.0-beta.4`
+
+Release date: 2026-05-22
+
+Release state: language-usability diagnostics beta update
+
+### Summary
+
+Glagol `1.0.0-beta.4` keeps the `1.0.0-beta` compiler support baseline and
+releases the first language-usability diagnostics bundle:
+
- Project build/run entry diagnostics now use entry-specific codes:
`ProjectEntryMainMissing`, `ProjectEntryMainInvalidSignature`,
`WorkspaceEntryMainMissing`, and `WorkspaceEntryMainInvalidSignature`.
@@ -18,6 +33,12 @@ integration/readiness release, not the first real beta.
- Non-exhaustive `match` diagnostics now use clearer missing-arm wording and a
deterministic found-arm list.
+### Explicit Deferrals
+
+This release does not change the accepted `main` contract, add argument-taking
+or `unit`-returning `main`, add type aliases, change `match` semantics, or
+claim new stable ABI/layout guarantees.
+
## 1.0.0-beta.3
Release label: `1.0.0-beta.3`
diff --git a/docs/compiler/ROADMAP.md b/docs/compiler/ROADMAP.md
index bb4ef16..4fe2bb9 100644
--- a/docs/compiler/ROADMAP.md
+++ b/docs/compiler/ROADMAP.md
@@ -22,12 +22,13 @@ 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.
-Current stage: `1.0.0-beta.3`, released on 2026-05-22 as the first post-beta
-standard-library stabilization update. It keeps the `1.0.0-beta`
+Current stage: `1.0.0-beta.4`, released on 2026-05-22 as the first post-beta
+language-usability diagnostics update. It keeps 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 foundation release, the
-generated standard-library API catalog gate, and focused multi-module stdlib
-composition coverage.
+`1.0.0-beta.3` standard-library stabilization release, entry-specific
+project/workspace `main` diagnostics, and clearer non-exhaustive `match`
+diagnostics.
The final experimental precursor scope is `exp-125`. Its unsigned direct-value
flow, parse/format runtime lanes, and matching staged stdlib helper breadth
diff --git a/docs/language/RELEASE_NOTES.md b/docs/language/RELEASE_NOTES.md
index fb32aea..8dfa6c1 100644
--- a/docs/language/RELEASE_NOTES.md
+++ b/docs/language/RELEASE_NOTES.md
@@ -8,16 +8,43 @@ 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
experimental integration/readiness release, not as a beta maturity claim.
-The current release is `1.0.0-beta.3`, published on 2026-05-22. It keeps the
+The current release is `1.0.0-beta.4`, published on 2026-05-22. It keeps the
`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
foundation bundle from `1.0.0-beta.2` plus the first standard-library
-stabilization bundle.
+stabilization bundle from `1.0.0-beta.3` and the first language-usability
+diagnostics bundle.
## Unreleased
No unreleased changes yet.
+## 1.0.0-beta.4
+
+Release label: `1.0.0-beta.4`
+
+Release name: Language Usability Diagnostics Bundle
+
+Release date: 2026-05-22
+
+Status: released beta diagnostics usability update on the `1.0.0-beta`
+language baseline.
+
+`1.0.0-beta.4` improves diagnostics while keeping the accepted source-language
+surface unchanged:
+
+- project/workspace build and run entry failures now report entry-specific
+ diagnostic codes and spell out the required `(fn main () -> i32 ...)`
+ contract
+- non-exhaustive `match` diagnostics now use clearer missing-arm wording and a
+ deterministic found-arm list
+- `.llm/BETA_4_LANGUAGE_USABILITY.md` records the beta.4 usability contract
+ and deferrals
+
+This release does not add new syntax, type aliases, argument-taking `main`,
+`unit`-returning `main`, changed `match` semantics, or stable ABI/layout
+guarantees.
+
## 1.0.0-beta.3
Release label: `1.0.0-beta.3`
diff --git a/docs/language/ROADMAP.md b/docs/language/ROADMAP.md
index 7296826..65e9ba4 100644
--- a/docs/language/ROADMAP.md
+++ b/docs/language/ROADMAP.md
@@ -10,12 +10,12 @@ Long-horizon planning lives in
release train from the historical `v2.0.0-beta.1` tag toward and beyond the
first real general-purpose beta Slovo contract.
-Current stage: `1.0.0-beta.3`, released on 2026-05-22 as the first post-beta
-standard-library stabilization update. It keeps the `1.0.0-beta` language
+Current stage: `1.0.0-beta.4`, released on 2026-05-22 as the first post-beta
+language-usability diagnostics update. It keeps the `1.0.0-beta` language
contract and includes the `1.0.0-beta.1` tooling hardening release, the
-`1.0.0-beta.2` runtime/resource foundation release, the generated
-standard-library API catalog, and a checked multi-module stdlib composition
-project.
+`1.0.0-beta.2` runtime/resource foundation release, the `1.0.0-beta.3`
+standard-library stabilization release, entry-specific project/workspace
+`main` diagnostics, and clearer non-exhaustive `match` diagnostics.
The final experimental precursor scope is `exp-125`, defined in
`.llm/EXP_125_UNSIGNED_U32_U64_NUMERIC_AND_STDLIB_BREADTH_ALPHA.md`. Its
diff --git a/docs/language/STDLIB_API.md b/docs/language/STDLIB_API.md
index 9cdb8b8..5da64d1 100644
--- a/docs/language/STDLIB_API.md
+++ b/docs/language/STDLIB_API.md
@@ -6,7 +6,7 @@ Do not edit this file by hand.
## Stability Tiers
- `beta-supported`: exported from `lib/std` and covered by source-search, promotion, or facade gates in the current beta line.
-- `experimental`: not used for exported `lib/std` helpers in `1.0.0-beta.3`; future releases may mark new helpers this way before they graduate.
+- `experimental`: not used for exported `lib/std` helpers in `1.0.0-beta.4`; future releases may mark new helpers this way before they graduate.
- `internal`: helper names that are not exported from their module; they are intentionally omitted from this catalog.
The catalog is a beta compatibility aid, not a stable `1.0.0` API freeze.
diff --git a/docs/papers/GLAGOL_COMPILER_MANIFEST.pdf b/docs/papers/GLAGOL_COMPILER_MANIFEST.pdf
index 46ebda8..828b331 100644
Binary files a/docs/papers/GLAGOL_COMPILER_MANIFEST.pdf and b/docs/papers/GLAGOL_COMPILER_MANIFEST.pdf differ
diff --git a/docs/papers/GLAGOL_WHITEPAPER.md b/docs/papers/GLAGOL_WHITEPAPER.md
index 991727e..d350805 100644
--- a/docs/papers/GLAGOL_WHITEPAPER.md
+++ b/docs/papers/GLAGOL_WHITEPAPER.md
@@ -5,17 +5,18 @@
Sanjin Gumbarevic
hermeticum_lab@protonmail.com
-Publication release: `1.0.0-beta.3`
+Publication release: `1.0.0-beta.4`
Technical behavior baseline: compiler and language support through
`1.0.0-beta`; tooling and install workflow through `1.0.0-beta.1`;
runtime/resource foundation through `1.0.0-beta.2`; standard-library
-stabilization through `1.0.0-beta.3`
+stabilization through `1.0.0-beta.3`; language-usability diagnostics through
+`1.0.0-beta.4`
Date: 2026-05-22
Evidence source: paired local Slovo/Glagol monorepo verification and benchmark
-reruns from a local checkout; beta.3 release-gate verification from the public
+reruns from a local checkout; beta.4 release-gate verification from the public
monorepo
Maturity: beta
@@ -27,17 +28,19 @@ Slovo. It exists to make the language support boundary inspectable: tokens,
S-expression tree, AST, typed AST, LLVM IR, hosted native executable, tests,
diagnostics, and release documents should agree.
-The current publication release, `1.0.0-beta.3`, keeps the first real
+The current publication release, `1.0.0-beta.4`, keeps the first real
general-purpose beta toolchain baseline from `1.0.0-beta` and records the
first post-beta tooling/install hardening update plus the first
runtime/resource foundation update plus the first standard-library
-stabilization update. The beta baseline includes
+stabilization update plus the first language-usability diagnostics update. The
+beta baseline includes
the completed `u32` / `u64` unsigned compiler and stdlib breadth scope
alongside the current nine-kernel benchmark suite. This paper records the
current beta implementation surface, the benchmark method and results, the
distinction between Glagol and Lisp-family implementations, the beta.1 tooling
update, the beta.2 runtime/resource foundation, the beta.3 standard-library
-stabilization slice, and the compiler path from beta to stable.
+stabilization slice, the beta.4 diagnostics usability slice, and the compiler
+path from beta to stable.
## 1. Compiler Thesis
@@ -121,7 +124,7 @@ At the current technical behavior beta baseline, Glagol supports:
- benchmark scaffolds for Slovo, C, Rust, Python, Clojure, and Common
Lisp/SBCL, with `cold-process` and `hot-loop` timing modes
-The current release, `1.0.0-beta.3`, is a beta standard-library stabilization
+The current release, `1.0.0-beta.4`, is a beta language-usability diagnostics
update on the first release line that may honestly use beta maturity language
for this toolchain.
@@ -280,9 +283,10 @@ python3 benchmarks/vec-string-eq-loop/run.py --mode cold-process --repeats 3 --w
The benchmark rows below remain the full-suite `1.0.0-beta` publication
baseline. `1.0.0-beta.1` changes tooling and install workflow, and
-`1.0.0-beta.2` adds runtime/resource APIs. `1.0.0-beta.3` adds standard-library
-catalog and composition coverage. None of these post-beta slices claims changed
-benchmark performance.
+`1.0.0-beta.2` adds runtime/resource APIs, `1.0.0-beta.3` adds
+standard-library catalog and composition coverage, and `1.0.0-beta.4` improves
+diagnostics. None of these post-beta slices claims changed benchmark
+performance.
The exp-123 publication baseline widened the paired same-machine result set
from seven rows to nine by adding two owned-vector kernels:
@@ -370,12 +374,12 @@ coverage and compatibility:
- package behavior becoming stable before dependency, manifest, and versioning
rules are precise
-## 9. Path Beyond `1.0.0-beta.3`
+## 9. Path Beyond `1.0.0-beta.4`
Glagol now implements the first real beta Slovo contract, the first
post-beta tooling/install hardening release, the first runtime/resource
-foundation release, and the first standard-library stabilization release. The
-remaining path is from beta to stable.
+foundation release, the first standard-library stabilization release, and the
+first diagnostics usability release. The remaining path is from beta to stable.
Recommended compiler sequence:
diff --git a/docs/papers/GLAGOL_WHITEPAPER.pdf b/docs/papers/GLAGOL_WHITEPAPER.pdf
index 685b4e4..86ab7f5 100644
Binary files a/docs/papers/GLAGOL_WHITEPAPER.pdf and b/docs/papers/GLAGOL_WHITEPAPER.pdf differ
diff --git a/docs/papers/SLOVO_MANIFEST.pdf b/docs/papers/SLOVO_MANIFEST.pdf
index cc2a9ce..80816ca 100644
Binary files a/docs/papers/SLOVO_MANIFEST.pdf and b/docs/papers/SLOVO_MANIFEST.pdf differ
diff --git a/docs/papers/SLOVO_WHITEPAPER.md b/docs/papers/SLOVO_WHITEPAPER.md
index 9181443..08481be 100644
--- a/docs/papers/SLOVO_WHITEPAPER.md
+++ b/docs/papers/SLOVO_WHITEPAPER.md
@@ -5,16 +5,17 @@
Sanjin Gumbarevic
hermeticum_lab@protonmail.com
-Publication release: `1.0.0-beta.3`
+Publication release: `1.0.0-beta.4`
Technical behavior baseline: language surface through `1.0.0-beta`; tooling
and install workflow through `1.0.0-beta.1`; runtime/resource foundation through
-`1.0.0-beta.2`; standard-library stabilization through `1.0.0-beta.3`
+`1.0.0-beta.2`; standard-library stabilization through `1.0.0-beta.3`;
+language-usability diagnostics through `1.0.0-beta.4`
Date: 2026-05-22
Evidence source: paired local Slovo/Glagol monorepo verification and benchmark
-reruns from a local checkout; beta.3 release-gate verification from the public
+reruns from a local checkout; beta.4 release-gate verification from the public
monorepo
Maturity: beta
@@ -29,25 +30,25 @@ explicit types, explicit failure through `option` and `result`, lexical
`unsafe`, and native compilation through the Glagol compiler to LLVM IR and
hosted executables.
-The current publication release, `1.0.0-beta.3`, keeps the first real
+The current publication release, `1.0.0-beta.4`, keeps the first real
general-purpose beta language baseline from `1.0.0-beta` and records the first
post-beta tooling/install hardening update plus the first runtime/resource
-foundation update plus the first standard-library stabilization update. The
-beta baseline includes the
+foundation update, the first standard-library stabilization update, and the
+first language-usability diagnostics update. The beta baseline includes the
completed `u32` / `u64` unsigned scope, the staged stdlib breadth that makes
ordinary command-line programs practical, and the current nine-kernel
benchmark suite. This paper records the current beta technical state, the
difference between Slovo and Lisp-family languages, the benchmark methodology,
the beta.1 tooling update, the beta.2 runtime/resource foundation, the beta.3
-standard-library stabilization slice, and the remaining path from beta to
-stable.
+standard-library stabilization slice, the beta.4 diagnostics usability slice,
+and the remaining path from beta to stable.
## 1. Scope
This document is a technical state paper for the current beta baseline. It
summarizes the behavior represented by the paired local Slovo and Glagol
workspaces, with `1.0.0-beta` as the current language-surface baseline and
-`1.0.0-beta.3` as the current publication baseline.
+`1.0.0-beta.4` as the current publication baseline.
The support rule remains strict:
@@ -59,7 +60,7 @@ The support rule remains strict:
- partial parser recognition or speculative examples do not count as support
Historical `exp-*` releases remain experimental alpha maturity. The current
-publication accompanies `1.0.0-beta.3`.
+publication accompanies `1.0.0-beta.4`.
## 2. Design Thesis
@@ -357,9 +358,10 @@ python3 benchmarks/vec-string-eq-loop/run.py --mode cold-process --repeats 3 --w
The benchmark rows below remain the full-suite `1.0.0-beta` publication
baseline. `1.0.0-beta.1` changes tooling and install workflow, and
-`1.0.0-beta.2` adds runtime/resource APIs. `1.0.0-beta.3` adds standard-library
-catalog and composition coverage. None of these post-beta slices claims changed
-benchmark performance.
+`1.0.0-beta.2` adds runtime/resource APIs, `1.0.0-beta.3` adds
+standard-library catalog and composition coverage, and `1.0.0-beta.4` improves
+diagnostics. None of these post-beta slices claims changed benchmark
+performance.
The exp-123 publication baseline widened the paired same-machine result set
from seven rows to nine by adding two owned-vector kernels:
@@ -480,14 +482,14 @@ Major remaining gaps before `1.0.0`:
- semantic versioning and deprecation policy
- a clear separation between stable and experimental features
-## 10. Path Beyond `1.0.0-beta.3`
+## 10. Path Beyond `1.0.0-beta.4`
The beta threshold is now real. The next work should treat `1.0.0-beta` as
the language compatibility-governed baseline, `1.0.0-beta.1` as the first
tooling/install hardening point, `1.0.0-beta.2` as the first runtime/resource
foundation point, and `1.0.0-beta.3` as the first standard-library
-stabilization point, then move deliberately toward stable general-purpose
-status.
+stabilization point, and `1.0.0-beta.4` as the first diagnostics usability
+point, then move deliberately toward stable general-purpose status.
Recommended sequence:
diff --git a/docs/papers/SLOVO_WHITEPAPER.pdf b/docs/papers/SLOVO_WHITEPAPER.pdf
index 89b216f..6cf4a2e 100644
Binary files a/docs/papers/SLOVO_WHITEPAPER.pdf and b/docs/papers/SLOVO_WHITEPAPER.pdf differ