slovo/docs/compiler/RELEASE_NOTES.md

195 KiB

Glagol Release Notes

Release Maturity Policy

Historical exp-* releases listed here are experimental maturity milestones. 1.0.0-beta is the first real general-purpose beta release.

The pushed tag v2.0.0-beta.1 is historical. It remains an experimental integration/readiness release, not the first real beta.

Unreleased

No active unreleased compiler scope is documented here yet.

1.0.0-beta.19

Release label: 1.0.0-beta.19

Release date: 2026-05-23

Release state: test discovery and user-project conformance foundation

Summary

The beta.19 compiler/tooling contract adds deterministic list-only test discovery without changing normal test execution output:

  • glagol test --list <file|project|workspace>

  • glagol --run-tests --list <file> for legacy single-file test execution

  • Bump the glagol compiler package version to 1.0.0-beta.19.

  • Reuse the same checked discovery path as normal glagol test for file, project, and workspace inputs.

  • Preserve current file/project/workspace test ordering.

  • Honor --filter <substring> by marking selected and skipped discovered tests without executing test bodies or triggering runtime/test side effects.

  • Keep normal glagol test and legacy glagol --run-tests output unchanged when --list is absent.

  • Add focused beta19 release-gate coverage for test discovery.

Explicit Deferrals

This release does not implement parallel test execution, retries, tags/groups, coverage, event streams, stable artifact-manifest or Markdown schema freezes, LSP/watch/SARIF/daemon protocols, JSON expansion, runtime helper names, source-language syntax, package registries, semver solving, and performance claims.

1.0.0-beta.18

Release label: 1.0.0-beta.18

Release date: 2026-05-23

Release state: JSON string token parsing foundation

Summary

The beta.18 compiler/runtime contract promotes a narrow JSON string-token parser without claiming a full JSON parser or Unicode escape policy.

  • Bump the glagol compiler package version to 1.0.0-beta.18.
  • Add the promoted compiler-known runtime name std.json.parse_string_value_result.
  • Lower the helper through the existing nullable string result ABI shape: hosted C returns an allocated decoded string on success and NULL for ordinary err 1 parse failure.
  • Enforce one-token ASCII JSON string checks: exact surrounding quotes, no leading/trailing whitespace, no raw control bytes, no raw non-ASCII bytes, no raw quotes/backslashes, and no trailing bytes.
  • Decode simple JSON escapes \", \\, \/, \b, \f, \n, \r, and \t; reject all \uXXXX escapes for this beta slice.
  • Run glagol test execution on a bounded larger worker stack so deep source-authored stdlib fixture tests fail through normal test diagnostics instead of host process stack overflow.

Explicit Deferrals

This release does not implement JSON object parsing, array parsing, recursive JSON values, tokenizers, Unicode escape decoding, Unicode normalization, embedded NUL support in the current null-terminated string ABI, streaming, schema validation, stable runtime helper symbols, stable ABI/layout, or a stable standard-library compatibility contract.

1.0.0-beta.17

Release label: 1.0.0-beta.17

Release date: 2026-05-22

Release state: JSON primitive scalar parsing foundation

Summary

The beta.17 compiler/runtime contract promotes strict JSON primitive scalar token parsers for booleans and concrete numeric primitives without claiming a full JSON parser.

  • Bump the glagol compiler package version to 1.0.0-beta.17.
  • Add promoted compiler-known runtime names for std.json.parse_bool_value_result, std.json.parse_i32_value_result, std.json.parse_u32_value_result, std.json.parse_i64_value_result, std.json.parse_u64_value_result, and std.json.parse_f64_value_result.
  • Lower the helpers through the existing concrete result ABI shapes and add hosted C runtime implementations plus matching test-runner behavior.
  • Enforce whole-token JSON scalar checks: no leading/trailing whitespace, no leading +, no leading-zero integer form except 0, and no non-finite f64 values.
  • Keep std.json.parse_null_value_result source-only and gate deferred JSON string/object/array/value parser families as unsupported.

Explicit Deferrals

This release does not implement JSON string parsing, object parsing, array parsing, recursive JSON values, tokenizers, generic parse APIs, whitespace-tolerant document parsing, streaming, schema validation, Unicode escape handling, stable runtime helper symbols, stable ABI/layout, or a stable standard-library compatibility contract.

1.0.0-beta.16

Release label: 1.0.0-beta.16

Release date: 2026-05-22

Release state: string scanning and token-boundary runtime foundation

Summary

The beta.16 compiler/runtime contract promotes a byte-oriented string scanning foundation for source-authored stdlib wrappers without claiming Unicode, grapheme, tokenizer, parser, or stable ABI behavior.

  • Bump the glagol compiler package version to 1.0.0-beta.16.
  • Add promoted compiler-known runtime names for std.string.byte_at_result, std.string.slice_result, std.string.starts_with, and std.string.ends_with.
  • Lower byte_at_result through the existing encoded result i32 i32 shape and slice_result through the existing nullable string-result host-call shape. Invalid indexes or ranges return err 1; slice allocation failure follows the existing string allocation trap.
  • Add hosted C runtime implementations over current null-terminated runtime strings and matching test-runner behavior for deterministic Slovo tests.
  • Extend diagnostics, facade project checks, and release-gate coverage for the beta16 string-scanning boundary while keeping richer scanning and token APIs unsupported.

Explicit Deferrals

This release does not implement Unicode or grapheme semantics, a JSON parser, tokenizers, split/find/contains helpers, stable string ABI/layout, stable allocation ownership rules, or a stable standard-library compatibility contract.

1.0.0-beta.15

Release label: 1.0.0-beta.15

Release date: 2026-05-22

Release state: reserved generic collection boundary hardening and collection ledger

Summary

The beta.15 compiler-side contract hardens the already-reserved generic-shaped collection boundary without promoting executable generics, maps, or sets. It keeps diagnostic codes and machine shapes stable while removing beta.9-specific wording from current reserved diagnostics.

  • Bump the glagol compiler package version to 1.0.0-beta.15.
  • Centralize reserved generic and collection diagnostic construction in compiler/src/reserved.rs for lowerer, formatter, and checker paths.
  • Reword live compiler diagnostics and affected snapshots to say the surface is reserved but not supported in the current beta while preserving existing codes, schema, spans, expected/found values, and hints.
  • Add focused reserved_generic_collection_beta15 coverage for check, fmt --check, and project-root check rejection of generic functions, parameterized aliases, generic type parameters, generic vector spelling, map/set types, and reserved generic stdlib calls std.vec.empty and std.result.map.
  • Run the focused beta.15 reserved-boundary test in scripts/release-gate.sh before the full compiler test suite.

Explicit Deferrals

This release does not implement executable generics, parameterized alias expansion, generic vectors, map/set types, generic standard-library dispatch, runtime collection names, ABI/layout claims, parser semantic expansion, or current concrete collection behavior changes.

1.0.0-beta.14

Release label: 1.0.0-beta.14

Release date: 2026-05-22

Release state: benchmark suite catalog and metadata gate

Summary

The beta.14 compiler-side contract is tooling-only benchmark catalog hardening. It keeps benchmark execution local and unchanged while adding deterministic suite-level metadata for release verification.

  • Bump the glagol compiler package version to 1.0.0-beta.14.
  • Add python3 benchmarks/runner.py --suite-list --json for deterministic suite-level benchmark listing and verification while preserving normal per-benchmark run.py execution through the shared runner.
  • Emit all 10 current benchmark names and directories, timing modes, cold/hot loop counts, checksum metadata, required scaffold-file status, implementation slots, and the local-only timing disclaimer.
  • Add focused benchmark_suite_catalog_beta14 coverage requiring byte-stable suite catalog output across two runs and the current 10-benchmark inventory.
  • Run the focused beta.14 suite catalog test in scripts/release-gate.sh before the full compiler test suite.

Explicit Deferrals

This release does not implement glagol bench, timing-result publication, a new benchmark kernel, runtime changes, source-language changes, a stable JSON schema claim, benchmark thresholds, or cross-machine performance claims.

1.0.0-beta.13

Release label: 1.0.0-beta.13

Release date: 2026-05-22

Release state: diagnostic catalog and schema policy hardening update

Summary

The beta.13 compiler-side contract is tooling/docs-only diagnostics policy hardening. It keeps emitted diagnostic machine shapes stable while making the schema name/version a single compiler constant source and gating the current policy with focused structural tests.

  • Bump the glagol compiler package version to 1.0.0-beta.13.
  • Centralize the slovo.diagnostic schema name and version used by S-expression rendering and newline-delimited JSON diagnostics, and use the same schema version in artifact manifest diagnostics metadata.
  • Add focused diagnostics_schema_beta13 coverage for parse, check, formatter, test-runner, project, source-less usage, toolchain, and manifest diagnostic policy across S-expression and --json-diagnostics outputs.
  • Require artifact manifests to keep recording diagnostics schema version, diagnostics encoding, and project diagnostic counts deterministically.
  • Run the focused beta.13 diagnostics schema test in scripts/release-gate.sh before the full compiler test suite.

Explicit Deferrals

This release does not implement LSP, watch mode, SARIF, daemon protocols, stable human diagnostic text, a stable Markdown schema, generic collections, generic vectors, maps, sets, runtime changes, ABI changes, source-language expansion, standard-library/API expansion, or performance claims.

1.0.0-beta.12

Release label: 1.0.0-beta.12

Release date: 2026-05-22

Release state: source-authored concrete vector helper parity update

Summary

The beta.12 compiler-side contract is test and package metadata support for a stdlib/helper parity release. It keeps Glagol language execution, runtime lowering, and compiler-known std.vec.* names unchanged.

  • Bump the glagol compiler package version to 1.0.0-beta.12.
  • Extend explicit local std.vec_i64 source-helper fixture tests to require count_of, starts_with, without_prefix, ends_with, and without_suffix.
  • Extend explicit local std.vec_f64 source-helper fixture tests to require count_of.
  • Require focused fixture coverage for repeated count results and prefix/suffix empty, mismatch, exact, and longer-than-input cases where applicable.

Explicit Deferrals

This release does not implement source-language runtime changes, executable generics, generic vectors, maps, sets, iterators, mutable vectors, slice/view APIs, generic stdlib dispatch, new compiler-known stdlib or runtime names, stable collection ABI/layout, performance claims, or a stable stdlib/API compatibility freeze.

1.0.0-beta.11

Release label: 1.0.0-beta.11

Release date: 2026-05-22

Release state: local package API documentation update

Summary

The beta.11 docs/tooling contract extends beta.10 API discovery so generated local documentation exposes the public API of local files, projects, packages, and workspaces without changing source-language execution semantics.

  • glagol doc <file|project|workspace> -o <dir> includes deterministic exported/public API sections for local modules and workspace packages.
  • Public API sections render exact exported function signatures, exported struct fields, and exported enum variants with payload types.
  • Module-local concrete aliases are normalized in public docs before rendering.
  • Non-exported functions, structs, enums, tests, and (type ...) aliases stay out of the public API sections.

Explicit Deferrals

This release does not define a stable Markdown schema, stable stdlib/API compatibility freeze, an LSP server, watch mode, SARIF, daemon protocols, diagnostics schema policy, executable generics, generic vectors, maps, sets, iterators, re-exports, globs, hierarchical modules, package registry semantics, runtime collection changes, new standard-library runtime APIs, or stable ABI/layout promises.

1.0.0-beta.10

Release label: 1.0.0-beta.10

Release date: 2026-05-22

Release state: developer-experience API discovery and symbol-metadata update

Summary

The beta.10 tooling/docs slice upgrades generated standard-library API discovery and adds deterministic editor-facing symbol metadata without changing source-language execution semantics.

  • scripts/render-stdlib-api-doc.js now validates exported lib/std helper names against matching (fn ...) forms.
  • docs/language/STDLIB_API.md now lists exact exported helper signatures rather than names only.
  • Module-local concrete aliases are normalized in public signatures, so beta.8 and beta.9 aliases do not leak into the public catalog.
  • Non-exported helper functions and (type ...) aliases remain omitted from the catalog.
  • glagol symbols <file.slo|project|workspace> emits deterministic slovo.symbols S-expression metadata for modules, imports, exports, aliases, structs, enums, functions, tests, source spans/ranges, and workspace package labels.
  • compiler/tests/symbols_beta10.rs covers single-file, project, workspace, -o/manifest, and help-surface behavior.

Explicit Deferrals

This release does not implement source-language runtime changes, executable generics, generic stdlib dispatch, generic vectors, maps, sets, iterators, collection unification, stable collection ABI/layout, new standard-library runtime APIs, an LSP server, SARIF, watch mode, or daemon protocols.

1.0.0-beta.9

Release label: 1.0.0-beta.9

Release date: 2026-05-22

Release state: compiler generic and collection reservation update

Summary

Glagol 1.0.0-beta.9 reserves generic-shaped collection and stdlib syntax with explicit diagnostics instead of letting future-looking forms degrade into unknown-name or generic type errors.

  • Reject generic function declarations such as (fn id (type_params T) ...) with UnsupportedGenericFunction.
  • Reject parameterized aliases such as (type VecOf (type_params T) ...) with UnsupportedGenericTypeAlias.
  • Reject generic type-parameter use in concrete type positions, map types, set types, and future generic stdlib calls with focused diagnostic codes.
  • Mirror the rejection in glagol fmt and promotion-gate inventory.
  • Keep runtime, backend, ABI, and current concrete collection behavior unchanged.

Explicit Deferrals

This release does not implement generics, generic aliases, generic stdlib dispatch, generic vectors, maps, sets, iterators, collection unification, stable collection ABI/layout, or new standard-library APIs.

1.0.0-beta.8

Release label: 1.0.0-beta.8

Release date: 2026-05-22

Release state: released beta concrete type alias foundation update

Summary

Glagol 1.0.0-beta.8 is scoped to transparent concrete type aliases. A source module may declare (type Alias TargetType) for an existing supported concrete type and then use Alias in supported type positions. The alias is not a new runtime type and must be normalized before backend/ABI behavior.

  • Parse top-level (type Alias TargetType) declarations.
  • Resolve aliases to existing supported concrete target types before typed-core lowering, checked import signatures, LLVM/backend layout, ABI decisions, and runtime behavior.
  • Format aliases canonically as one-line top-level declarations.
  • Diagnose malformed aliases, duplicate alias/type/value names, unknown or unsupported target types, cycles, exported aliases, imported aliases, and parameterized/generic alias attempts.
  • Keep runtime behavior unchanged: no new compiler-known runtime names, hosted symbols, maps/sets, generic aliases, parameterized aliases, or cross-module alias visibility.

Explicit Deferrals

This release does not add generics, parameterized aliases, alias exports/imports, alias re-exports, cross-module alias visibility, maps/sets, stable layout names, runtime helpers, hosted runtime symbols, or standard-library API freeze claims.

1.0.0-beta.7

Release label: 1.0.0-beta.7

Release date: 2026-05-22

Release state: serialization/data-interchange beta update

Summary

Glagol 1.0.0-beta.7 keeps the 1.0.0-beta compiler support baseline and adds the first narrow JSON construction foundation:

  • compiler-known std.json.quote_string
  • POSIX-hosted runtime support through __glagol_json_quote_string
  • deterministic interpreter/test-runner behavior for JSON quoting tests
  • focused lowering, diagnostics, source-facade, promotion, hosted runtime, and benchmark-scaffold coverage

Explicit Deferrals

This release does not add JSON parsing, recursive JSON values, maps/sets, generic collections, streaming encoders, schema validation, Unicode normalization, stable text encoding policy beyond the current null-terminated runtime string ABI, or a stable standard-library API freeze.

1.0.0-beta.6

Release label: 1.0.0-beta.6

Release date: 2026-05-22

Release state: networking foundation beta update

Summary

Glagol 1.0.0-beta.6 keeps the 1.0.0-beta compiler support baseline and adds the first narrow networking foundation:

  • compiler-known std.net.tcp_connect_loopback_result, std.net.tcp_listen_loopback_result, std.net.tcp_bound_port_result, std.net.tcp_accept_result, std.net.tcp_read_all_result, std.net.tcp_write_text_result, and std.net.tcp_close_result
  • POSIX loopback TCP runtime helpers using opaque process-local i32 handles and concrete result values
  • deterministic interpreter/test-runner error behavior for std.net invalid handles and ports
  • focused lowering, diagnostics, source-facade, promotion, and hosted loopback smoke tests, with hosted socket smokes skipped only when the local sandbox denies loopback sockets

Explicit Deferrals

This release does not add DNS, TLS, UDP, non-loopback binding, async IO, event loops, HTTP frameworks, rich host-error ADTs, stable socket ABI/layout, automatic resource ownership, or a stable standard-library API freeze.

1.0.0-beta.5

Release label: 1.0.0-beta.5

Release date: 2026-05-22

Release state: package/workspace discipline beta update

Summary

Glagol 1.0.0-beta.5 keeps the 1.0.0-beta compiler support baseline and releases the first package/workspace discipline bundle:

  • Workspace manifests may now declare [workspace] default_package = "name" to choose the build/run entry package when multiple workspace packages contain their entry module.
  • Workspace loading now diagnoses duplicate member paths after normalization with DuplicateWorkspaceMember.
  • Workspace loading now diagnoses a missing default_package reference with WorkspaceDefaultPackageMissing, and build/run diagnose a selected package that lacks its entry module with WorkspaceDefaultPackageEntryMissing.
  • glagol doc <workspace> -o <dir> now includes a deterministic workspace summary with members, packages, and local package dependency edges.
  • glagol new --template workspace and the canonical local workspace examples now declare default_package = "app".
  • docs/language/PACKAGES.md now documents the beta local workspace/package rules and the explicit no-registry/no-lockfile policy.

Explicit Deferrals

This release does not add remote registries, lockfiles, semantic-version solving, package publishing, optional/dev/target dependencies, feature flags, build scripts, package archives, or stable package ABI/layout guarantees.

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. Messages now spell out the required (fn main () -> i32 ...) contract and include the found parameter count and return type for invalid signatures.
  • 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

Release date: 2026-05-22

Release state: standard-library stabilization beta update

Summary

Glagol 1.0.0-beta.3 keeps the 1.0.0-beta compiler support baseline and adds the first standard-library stabilization bundle:

  • scripts/render-stdlib-api-doc.sh generates docs/language/STDLIB_API.md from repo-root lib/std/*.slo
  • the release gate now verifies that generated standard-library API catalog before tests and smoke checks complete
  • examples/projects/stdlib-composition proves a realistic multi-module standard-library program through fmt --check, check, test, doc, and hosted glagol run when the local toolchain is available
  • compiler/tests/standard_stdlib_composition_beta.rs gates that composition example and guards against accidental local module copies
  • project-local .slovo/ build artifacts are ignored so glagol run output stays out of commits

Explicit Deferrals

This release does not add syntax, generics, stable standard-library API promises, stable ABI/layout guarantees, richer host error codes, networking, or async runtime behavior.

1.0.0-beta.2

Release label: 1.0.0-beta.2

Release date: 2026-05-22

Release state: runtime/resource foundation beta update

Summary

Glagol 1.0.0-beta.2 contains the first runtime/resource foundation slice:

  • Glagol recognizes std.fs.open_text_read_result, std.fs.read_open_text_result, std.fs.close_result, std.fs.exists, std.fs.is_file, std.fs.is_dir, std.fs.remove_file_result, and std.fs.create_dir_result
  • LLVM lowering maps those calls to private hosted runtime symbols while preserving the existing concrete result layouts
  • the test runner mirrors the hosted runtime policy for open/read/close file handles, status checks, file removal, and single-directory creation
  • focused tests cover test-runner behavior, private lowering shape, hosted native execution, diagnostics, and the explicit std.fs source facade

This is still a beta resource foundation only. It does not claim stable descriptor identity, writable streams, binary IO, directory handles, directory enumeration, sockets, async resources, rich host errors, or a stable runtime ABI.

1.0.0-beta.1

Release label: 1.0.0-beta.1

Release date: 2026-05-22

Release state: first post-beta tooling hardening release

Summary

Glagol 1.0.0-beta.1 keeps the 1.0.0-beta language/compiler support baseline and releases the first tooling-hardening slice:

  • glagol run <file.slo|project> compiles through the existing hosted native build path, runs the produced executable, forwards stdout/stderr, and returns the program exit status
  • glagol clean <file.slo|project> removes generated .slovo/build artifacts
  • glagol new --template binary|library|workspace adds library and local workspace scaffolds beside the existing binary default
  • scripts/install.sh installs bin/glagol, share/slovo/std, and share/slovo/runtime/runtime.c
  • installed native builds discover the runtime C input relative to the executable, with SLOVO_RUNTIME_C and GLAGOL_RUNTIME_C overrides
  • the release gate prints a concise final success summary

Explicit Deferrals

This is a toolchain workflow slice only. It does not claim new source syntax, a new stable ABI, a runtime resource model, networking surface, or package registry.

1.0.0-beta

Release label: 1.0.0-beta

Release date: 2026-05-21

Release state: first real general-purpose beta toolchain release

Summary

Glagol 1.0.0-beta integrates the completed unsigned u32 / u64 compiler and stdlib breadth scope with the already promoted project/package workflow, explicit std-source imports, concrete vector families, fixed arrays, structs, enums, result/option, JSON diagnostics, formatter modes, generated docs, and the paired local release gate.

The normative Glagol beta gate is .llm/V1_0_0_BETA_RELEASE_GATE.md. The beta workflow proof lives in compiler/tests/beta_1_0_0.rs.

Explicit Deferrals

No generics, no maps/sets, no remote registries, no networking/async runtime surface, and no stable ABI/layout guarantees are included by beta.

exp-125

Release label: exp-125

Release date: 2026-05-21

Release state: completed experimental precursor scope absorbed into 1.0.0-beta

Summary

exp-125 completed the connected unsigned u32 / u64 compiler and stdlib breadth scope that directly enabled 1.0.0-beta.

exp-123

exp-124

Release label: exp-124

Release date: 2026-05-21

Release state: gated experimental fixed-array enum-and-struct-elements compiler slice

Summary

Glagol exp-124 gates one connected compiler broadening: fixed immutable arrays now support direct known enum elements and current known non-recursive struct elements alongside the earlier direct scalar and string lanes.

The release updates checker admission, formatter array rendering, LLVM fixed-array typing for named element layouts, test-runner array values, machine-diagnostic snapshots, promoted array-enum and array-struct-elements fixtures and lowering snapshots, focused Glagol tests, llvm_smoke/lowering_inspector inventories, and promotion-gate alignment.

Explicit Deferrals

No zero-length arrays, no mutable arrays, no element mutation, no array equality, no array printing, no nested arrays, no slices or generics, no stable ABI/layout guarantees, and no beta maturity are included.

exp-123

Release label: exp-123

Release date: 2026-05-21

Release state: gated experimental owned-vector benchmark-suite extension and whitepaper refresh

Summary

Glagol exp-123 gates one connected benchmark/publication broadening: the local benchmark scaffold inventory now includes vec-i32-index-loop and vec-string-eq-loop beside math-loop, branch-loop, parse-loop, array-index-loop, string-eq-loop, array-struct-field-loop, and enum-struct-payload-loop.

The release keeps the shared runner model intact, adds the two new scaffold directories with Slovo/C/Rust/Python/Clojure/Common Lisp implementations, extends the focused benchmark scaffold test and promotion-gate inventory from seven kernels to nine, reruns local benchmark evidence, and refreshes the Glagol whitepaper/publication docs around the expanded suite and the current experimental compiler surface through exp-121.

Explicit Deferrals

No language-surface change, no compiler/runtime widening, no runtime ABI claim, no benchmark thresholds, no cross-machine performance claims, no broad optimizer guarantees, no PDF pipeline redesign, and no beta maturity are included.

exp-122

Release label: exp-122

Release date: 2026-05-21

Release state: gated experimental composite-data benchmark-suite extension and whitepaper refresh

Summary

Glagol exp-122 gates one connected benchmark/publication broadening: the local benchmark scaffold inventory now includes array-struct-field-loop and enum-struct-payload-loop beside math-loop, branch-loop, parse-loop, array-index-loop, and string-eq-loop.

The release keeps the shared runner model intact, adds the two new scaffold directories with Slovo/C/Rust/Python/Clojure/Common Lisp implementations, extends the focused benchmark scaffold test and promotion-gate inventory from five kernels to seven, reruns local benchmark evidence, and refreshes the Glagol whitepaper/publication docs around the expanded suite and the current experimental compiler surface through exp-121.

During the final gate pass, Glagol also tightened one existing backend path: none f64 option aggregates now emit a typed double 0.0 zero payload instead of invalid double 0, preserving the already promoted option f64 surface under the clang-backed LLVM smoke gate.

Explicit Deferrals

No language-surface change, no runtime ABI claim, no benchmark thresholds, no cross-machine performance claims, no broad optimizer guarantees, no PDF pipeline redesign, and no beta maturity are included.

exp-121

Release label: exp-121

Release date: 2026-05-21

Release state: gated experimental non-recursive-struct enum-payload compiler slice

Summary

Glagol exp-121 gates one connected enum-payload broadening: unary enum payload variants now support current known non-recursive struct types.

The release updates checker and formatter payload admission, LLVM enum aggregate lowering and zero-payload handling, test-runner struct payload support, machine-diagnostic snapshots, the promoted enum-payload-structs fixture and lowering snapshots, focused enum_payload_structs_alpha coverage, and promotion-gate alignment. The fixture intentionally uses an array-bearing struct payload so exp-120 is exercised indirectly without widening enums to direct array payloads.

Explicit Deferrals

No direct array/vec/option/result payloads, no equality requirement for struct-payload enums, no mutation, no recursive/cyclic payloads, no stable ABI/layout guarantees, and no beta maturity are included.

exp-120

Release label: exp-120

Release date: 2026-05-21

Release state: gated experimental fixed-array struct-field compiler slice

Summary

Glagol exp-120 gates one connected compiler broadening: direct struct field declarations now support the already promoted fixed immutable array families (array i32 N), (array i64 N), (array f64 N), (array bool N), and (array string N).

The release updates struct-field checker admission, machine-diagnostic snapshots, the promoted array-struct-fields fixture and lowering snapshots, focused array_struct_fields_alpha coverage, llvm_smoke/lowering_inspector inventory, and promotion-gate alignment. The earlier array fixtures remain valid as the underlying fixed-array lanes, and the earlier struct-field fixtures remain valid as narrower sibling lanes.

Explicit Deferrals

No zero-length arrays, no mutable arrays, no element mutation, no field mutation, no nested arrays, no arrays of unsupported element kinds, no array equality, no array printing, no stable ABI/layout guarantees, and no beta maturity are included.

exp-119

Release label: exp-119

Release date: 2026-05-21

Release state: gated experimental benchmark-suite extension and whitepaper refresh

Summary

Glagol exp-119 gates one connected benchmark/publication broadening: the local benchmark scaffold inventory now includes array-index-loop and string-eq-loop beside the existing math-loop, branch-loop, and parse-loop kernels.

The release keeps the shared runner model intact, adds the two new scaffold directories with Slovo/C/Rust/Python/Clojure/Common Lisp implementations, extends the focused benchmark scaffold test and promotion-gate inventory, and refreshes the Glagol whitepaper/publication docs around the expanded suite and the current experimental compiler surface.

Explicit Deferrals

No language-surface change, no runtime ABI claim, no benchmark thresholds, no cross-machine performance claims, no broad optimizer guarantees, no PDF pipeline redesign, and no beta maturity are included.

exp-118

Release label: exp-118

Release date: 2026-05-21

Release state: gated experimental string fixed-array compiler slice

Summary

Glagol exp-118 gates one connected compiler broadening: fixed immutable arrays now support string elements as a sibling lane beside the already promoted direct scalar i32, i64, f64, and bool families.

The release updates array checker admission, formatter array rendering, LLVM array typing/load/store/index lowering, test-runner array values, diagnostics coverage, the promoted array-string and array-string-value-flow fixtures and lowering snapshots, focused array-string tests, the promotion-gate inventory, and the Glagol docs for this feature.

The earlier array.slo, array-value-flow.slo, array-direct-scalars.slo, and array-direct-scalars-value-flow.slo fixtures remain valid as the predecessor lanes.

Explicit Deferrals

No array mutation, no array equality, no array printing, no nested arrays, no arrays in struct fields, no zero-length arrays, no slices, no generics, no new compiler-known runtime names, no stable ABI/layout guarantees, and no beta maturity are included.

exp-117

Release label: exp-117

Release date: 2026-05-21

Release state: gated experimental direct-scalar fixed-array compiler slice

Summary

Glagol exp-117 gates one connected compiler broadening: fixed immutable arrays now support the direct scalar element families i32, i64, f64, and bool instead of only i32.

The release updates array checker admission, formatter array rendering, LLVM array typing/load/store/index lowering, test-runner array values, diagnostics coverage, the promoted array-direct-scalars and array-direct-scalars-value-flow fixtures and lowering snapshots, focused array tests, the promotion-gate inventory, and the Glagol docs for this feature.

The earlier array.slo and array-value-flow.slo fixtures remain valid as the narrower i32 predecessor lane.

Explicit Deferrals

No string arrays, no array mutation, no array equality, no array printing, no nested arrays, no arrays in struct fields, no zero-length arrays, no slices, no generics, no new compiler-known runtime names, no stable ABI/layout guarantees, and no beta maturity are included.

exp-116

Release label: exp-116

Release date: 2026-05-21

Release state: gated experimental direct enum-payload compiler slice

Summary

Glagol exp-116 gates one connected compiler broadening: user-defined enum payload variants now support unary direct i32, i64, f64, bool, and string payloads instead of unary i32 only.

The release keeps payloadless variants supported, keeps exactly one payload per payload variant, and adds one conservative same-payload-kind-per-enum rule whenever payload variants appear. That constraint keeps each enum on one concrete LLVM payload layout without inventing generic sum-layout machinery.

The release updates the enum checker path, formatter enum rendering, LLVM enum layout/equality/match lowering, test-runner enum payload support, project/workspace enum import coverage, diagnostics coverage, the promoted enum-payload-direct-scalars fixture and lowering snapshots, focused enum-payload tests, the promotion-gate inventory, and the Glagol docs for this feature.

Explicit Deferrals

No vec/array/option/result/struct/enum payloads, no mixed payload kinds inside one enum, no generics, no payload mutation, no new parser forms, no new typed-AST constructs, no new compiler-known runtime names, no stable ABI/layout guarantees, and no beta maturity are included.

exp-115

Release label: exp-115

Release date: 2026-05-21

Release state: gated experimental composite-struct-field compiler slice

Summary

Glagol exp-115 gates one connected compiler broadening: direct struct fields now support the current concrete vec families, current concrete option/result families, and current non-recursive struct types alongside the already promoted direct scalar, string, and enum field families.

The release updates the struct-field checker path, recursive-layout rejection, formatter struct-field rendering, diagnostics coverage, the promoted composite-struct-fields fixture and lowering snapshots, focused composite-struct tests, the promotion-gate inventory, and the Glagol docs for this feature.

Lowering and typed AST forms do not widen: direct struct declarations, constructors, field access, and current composite value families already existed, so the release keeps the delta in checker/formatter/test/docs rather than introducing new syntax or runtime names.

Explicit Deferrals

No arrays as struct fields, no field mutation, no vector element mutation, no option/result payload mutation, no recursive or cyclic struct layouts, no new parser forms, no new typed-AST constructs, no new compiler-known runtime names, no stable ABI/layout guarantees, and no beta maturity are included.

exp-113

Release label: exp-113

Release date: 2026-05-21

Release state: gated experimental mutable scalar-local compiler slice

Summary

Glagol exp-113 gates one narrow compiler broadening: mutable bool, i64, and f64 locals now work through var and set.

The release updates the local-type checker path, formatter local-type messaging, LLVM local emission, diagnostics coverage, the promoted local-variable fixture and lowering snapshots, focused mutable-scalar tests, the promotion-gate inventory, and the Glagol docs for this feature.

Lowering and typed AST forms do not widen: lower_type, var, and set already existed, so the release keeps the delta in checker/backend/test/docs rather than introducing new syntax or runtime names.

Explicit Deferrals

No mutable string, vector, option/result, struct, or enum locals, no new parser forms, no new typed-AST constructs, no new compiler-known runtime names, no stable ABI/layout guarantees, and no beta maturity are included.

exp-114

Release label: exp-114

Release date: 2026-05-21

Release state: gated experimental mutable composite-local compiler slice

Summary

Glagol exp-114 gates one narrow compiler broadening: same-type mutable local reassignment now works through var and set for string, the current concrete vec families, the current concrete option/result families, known struct values, and current enum values.

The release updates the local-type checker path, mutable assignment gate, formatter local rendering, LLVM local emission, diagnostics coverage, the promoted composite-locals fixture and lowering snapshots, focused mutable-composite tests, the promotion-gate inventory, and the Glagol docs for this feature.

Lowering and typed AST forms do not widen: lower_type, var, set, and match already existed, so the release keeps the delta in checker/backend/test/docs rather than introducing new syntax or runtime names.

Explicit Deferrals

No mutable arrays, no field/element/payload mutation, no mutable generics or new value families, no new parser forms, no new typed-AST constructs, no new compiler-known runtime names, no stable ABI/layout guarantees, and no beta maturity are included.

exp-112

Release label: exp-112

Release date: 2026-05-21

Release state: gated experimental immutable bool-local compiler slice

Summary

Glagol exp-112 gates one narrow compiler broadening: immutable bool locals now work in let bindings.

The release updates the local-type checker path, LLVM local emission, diagnostics coverage, one focused bool-local integration test, the promotion-gate diagnostic inventory, and the Glagol docs for this feature.

Lowering and typed AST forms do not widen: lower_type already accepted bool, and the release keeps the feature limited to immutable let bindings only.

Explicit Deferrals

No mutable bool locals, no new parser forms, no new compiler-known runtime names, no broader local-mutation semantics, no stable ABI/layout guarantees, and no beta maturity are included.

exp-111

Release label: exp-111

Release date: 2026-05-21

Release state: gated experimental io stdin-helper stdlib gate

Summary

Glagol exp-111 gates one connected broadening of the existing std.io helper lane.

The release keeps the already promoted compiler/runtime semantics unchanged and instead broadens the existing local and explicit-source std.io fixtures, the focused source-helper/source-search tests, and the promotion-gate inventory with:

  • read_stdin_result
  • read_stdin_option
  • read_stdin_or
  • read_stdin_i32_result
  • read_stdin_i32_option
  • read_stdin_i32_or_zero
  • read_stdin_i32_or
  • read_stdin_i64_result
  • read_stdin_i64_option
  • read_stdin_i64_or_zero
  • read_stdin_i64_or
  • read_stdin_f64_result
  • read_stdin_f64_option
  • read_stdin_f64_or_zero
  • read_stdin_f64_or
  • read_stdin_bool_result
  • read_stdin_bool_option
  • read_stdin_bool_or_false
  • read_stdin_bool_or

The helper lane stays source-authored over the already promoted std.io.read_stdin_result, the released std.string.parse_*_result helpers, and the exp-109 ok_or_none_* bridge helpers. The Glagol local fixture adds explicit local result.slo and string.slo bridge modules so the widened io facade remains ordinary source composition rather than new compiler-known runtime names.

Explicit Deferrals

No parser/checker/backend/runtime widening, no new compiler-known std.* runtime names, no trap-based std.io.read_stdin, no line/read-line or prompt APIs, no terminal mode, no binary/streaming/async stdin, no automatic std imports, no stable ABI/layout guarantees, and no beta maturity are included.

exp-110

Release label: exp-110

Release date: 2026-05-21

Release state: gated experimental string/env/fs/process/cli option-helper stdlib gate

Summary

Glagol exp-110 gates one connected broadening of the existing std.string, std.env, std.fs, std.process, and std.cli helper lanes.

The release keeps the already promoted compiler/runtime semantics unchanged and instead broadens the existing local and explicit-source fixtures, the focused source-helper/source-search tests, and the promotion-gate inventory with:

  • parse_i32_option
  • parse_i64_option
  • parse_f64_option
  • parse_bool_option
  • get_option
  • get_i32_option
  • get_i64_option
  • get_f64_option
  • get_bool_option
  • read_text_option
  • read_i32_option
  • read_i64_option
  • read_f64_option
  • read_bool_option
  • arg_option
  • arg_i32_option
  • arg_i64_option
  • arg_f64_option
  • arg_bool_option
  • arg_text_option
  • arg_i32_option
  • arg_i64_option
  • arg_f64_option
  • arg_bool_option

The helper lanes stay source-authored over the already promoted concrete result families plus the exp-109 ok_or_none_* bridge helpers. The Glagol local fixtures add explicit local result.slo bridge modules so the option helpers remain ordinary source composition rather than new compiler-known runtime names.

Explicit Deferrals

No parser/checker/backend/runtime widening, no new compiler-known std.* runtime names, no stdin helpers, no vec work, no automatic std imports, no stable ABI/layout guarantees, and no beta maturity are included.

exp-109

Release label: exp-109

Release date: 2026-05-21

Release state: gated experimental option/result bridge stdlib gate

Summary

Glagol exp-109 gates one connected broadening of the existing std.option and std.result helper lanes.

The release keeps the already promoted concrete option/result semantics unchanged and instead broadens the local std-layout-local-option/ and std-layout-local-result/ fixtures, the explicit std-import-option/ and std-import-result/ fixtures, the workspace std-import-option/ fixture, the focused source-helper/source-search tests, and the promotion-gate inventory with:

  • some_or_err_i32
  • some_or_err_i64
  • some_or_err_f64
  • some_or_err_bool
  • some_or_err_string
  • ok_or_none_i32
  • ok_or_none_i64
  • ok_or_none_string
  • ok_or_none_f64
  • ok_or_none_bool

The helper lanes stay concrete and source-authored over the already promoted option/result forms. std.option uses raw ok and err constructors directly, and std.result uses raw some and none constructors directly, without introducing local bridge shim modules, new compiler-known std.option.* or std.result.* runtime names, or compiler/runtime widening.

Explicit Deferrals

No new compiler-known std.* runtime names, no generics, no broader map/and_then/transpose/flatten package, no new payload families, no automatic or compiler-loaded std imports, no stable ABI/layout guarantees, and no beta maturity are included.

exp-108

Release label: exp-108

Release date: 2026-05-21

Release state: gated experimental vec-string/vec-f64/vec-bool prefix/suffix stdlib gate

Summary

Glagol exp-108 gates one connected broadening of the existing vec-string, vec-f64, and vec-bool helper lanes.

The release keeps the already promoted concrete (vec string), (vec f64), and (vec bool) compiler/runtime semantics unchanged and instead broadens the local std-layout-local-vec_string/, std-layout-local-vec_f64/, and std-layout-local-vec_bool/ fixtures, the explicit std-import-vec_string/, std-import-vec_f64/, and std-import-vec_bool/ fixtures, the focused source-helper/source-search tests, and the promotion-gate inventory with:

  • starts_with
  • without_prefix
  • ends_with
  • without_suffix

The helper lanes stay recursive and immutable with no var or set, stay concrete to the three existing vec families, and reuse only the already promoted runtime names:

  • std.vec.string.empty
  • std.vec.string.append
  • std.vec.string.len
  • std.vec.string.index
  • std.vec.f64.empty
  • std.vec.f64.append
  • std.vec.f64.len
  • std.vec.f64.index
  • std.vec.bool.empty
  • std.vec.bool.append
  • std.vec.bool.len
  • std.vec.bool.index

Explicit Deferrals

No new compiler-known std.* runtime names, no generics, no sorting, mapping, filtering, no nested/container vecs, no mutating or capacity APIs, no stable ABI/layout guarantees, and no beta maturity are included.

exp-107

Release label: exp-107

Release date: 2026-05-21

Release state: gated experimental vec-string/vec-f64/vec-bool edit-helper stdlib gate

Summary

Glagol exp-107 gates one connected broadening of the existing vec-string, vec-f64, and vec-bool helper lanes.

The release keeps the already promoted concrete (vec string), (vec f64), and (vec bool) compiler/runtime semantics unchanged and instead broadens the local std-layout-local-vec_string/, std-layout-local-vec_f64/, and std-layout-local-vec_bool/ fixtures, the explicit std-import-vec_string/, std-import-vec_f64/, and std-import-vec_bool/ fixtures, the focused source-helper/source-search tests, and the promotion-gate inventory with:

  • insert_at
  • insert_range
  • replace_at
  • replace_range
  • remove_at
  • remove_range

The helper lanes stay recursive and immutable with no var or set, stay concrete to the three existing vec families, and reuse only the already promoted runtime names:

  • std.vec.string.empty
  • std.vec.string.append
  • std.vec.string.len
  • std.vec.string.index
  • std.vec.f64.empty
  • std.vec.f64.append
  • std.vec.f64.len
  • std.vec.f64.index
  • std.vec.bool.empty
  • std.vec.bool.append
  • std.vec.bool.len
  • std.vec.bool.index

Explicit Deferrals

No new compiler-known std.* runtime names, no generics, no prefix/suffix helpers, no sorting/mapping/filtering, no nested/container vecs, no mutating or capacity APIs, no stable ABI/layout guarantees, and no beta maturity are included.

exp-106

Release label: exp-106

Release date: 2026-05-21

Release state: gated experimental vec-f64/vec-bool option-query stdlib gate

Summary

Glagol exp-106 gates one connected broadening of the existing vec-f64 and vec-bool helper lanes.

The release keeps the already promoted concrete (vec f64) and (vec bool) compiler/runtime semantics unchanged and instead broadens the local std-layout-local-vec_f64/ and std-layout-local-vec_bool/ fixtures, the explicit std-import-vec_f64/ and std-import-vec_bool/ fixtures, the focused source-helper/source-search tests, and the promotion-gate inventory with:

  • index_option
  • first_option
  • last_option
  • index_of_option
  • last_index_of_option

The helper lanes stay recursive and immutable with no var or set, stay concrete to (vec f64) and (vec bool) plus the already promoted concrete option families they return, and reuse only the already promoted runtime names:

  • std.vec.f64.empty
  • std.vec.f64.append
  • std.vec.f64.len
  • std.vec.f64.index
  • std.vec.bool.empty
  • std.vec.bool.append
  • std.vec.bool.len
  • std.vec.bool.index

Explicit Deferrals

No new compiler-known std.* runtime names, no generics, no edit helpers, no nested/container vecs, no mutating or capacity APIs, no stable ABI/layout guarantees, and no beta maturity are included.

exp-105

Release label: exp-105

Release date: 2026-05-21

Release state: gated experimental vec-f64/vec-bool transform-helper stdlib gate

Summary

Glagol exp-105 gates one connected broadening of the existing vec-f64 and vec-bool helper lanes.

The release keeps the already promoted concrete (vec f64) and (vec bool) compiler/runtime semantics unchanged and instead broadens the local std-layout-local-vec_f64/ and std-layout-local-vec_bool/ fixtures, the explicit std-import-vec_f64/ and std-import-vec_bool/ fixtures, the focused source-helper/source-search tests, and the promotion-gate inventory with:

  • concat
  • take
  • drop
  • reverse
  • subvec

The helper lanes stay recursive and immutable with no var or set, stay concrete to (vec f64) and (vec bool) only, and reuse only the already promoted runtime names:

  • std.vec.f64.empty
  • std.vec.f64.append
  • std.vec.f64.len
  • std.vec.f64.index
  • std.vec.bool.empty
  • std.vec.bool.append
  • std.vec.bool.len
  • std.vec.bool.index

Explicit Deferrals

No new compiler-known std.* runtime names, no generics, no option/result helpers, no edit helpers, no nested/container vecs, no mutating or capacity APIs, no stable ABI/layout guarantees, and no beta maturity are included.

exp-104

Release label: exp-104

Release date: 2026-05-21

Release state: gated experimental vec-bool baseline compiler/runtime plus stdlib gate

Summary

Glagol exp-104 gates the first concrete (vec bool) slice.

The release extends the checker, formatter, LLVM backend, runtime, std runtime inventory, and test runner so immutable (vec bool) params, returns, locals, direct std.vec.bool.empty/append/len/index calls, and same-family vec-bool equality work end to end. It also adds the small scalar bool-equality enablement required by the source-authored helper lane. The release adds the local std-layout-local-vec_bool/ fixture, the explicit std-import-vec_bool/ fixture, focused vec-bool collections/source helper/ source search coverage, diagnostics snapshot refreshes, and promotion-gate inventory for the connected std.vec_bool helper inventory:

  • empty
  • append
  • len
  • at
  • singleton
  • append2
  • append3
  • pair
  • triple
  • is_empty
  • index_or
  • first_or
  • last_or
  • contains
  • count_of

The source helpers stay recursive and immutable with no var or set, stay concrete to (vec bool) only, and reuse only the already promoted std.vec.bool.empty, std.vec.bool.append, std.vec.bool.len, and std.vec.bool.index runtime names.

Explicit Deferrals

No new compiler-known std.* runtime names beyond the vec-bool family, no generics, no option-query helpers, no transform/edit helpers, no nested vecs or vecs inside other containers, no mutating or capacity APIs, no stable ABI/layout guarantees, and no beta maturity are included.

exp-103

Release label: exp-103

Release date: 2026-05-21

Release state: gated experimental vec-f64 baseline compiler/runtime plus stdlib gate

Summary

Glagol exp-103 gates the first concrete (vec f64) slice.

The release extends the checker, formatter, LLVM backend, runtime, std runtime inventory, and test runner so immutable (vec f64) params, returns, locals, direct std.vec.f64.empty/append/len/index calls, and same-family vec-f64 equality work end to end. It also adds the local std-layout-local-vec_f64/ fixture, the explicit std-import-vec_f64/ fixture, focused vec-f64 diagnostics and promotion-gate coverage, and the connected std.vec_f64 helper inventory:

  • empty
  • append
  • len
  • at
  • singleton
  • append2
  • append3
  • pair
  • triple
  • is_empty
  • index_or
  • first_or
  • last_or
  • contains
  • sum

The source helpers stay recursive and immutable with no var or set, stay concrete to (vec f64) only, and reuse only the already promoted std.vec.f64.empty, std.vec.f64.append, std.vec.f64.len, and std.vec.f64.index runtime names.

Explicit Deferrals

No new compiler-known std.* runtime names beyond the vec-f64 family, no generics, no option-query helpers, no transform/edit helpers, no nested vecs or vecs inside other containers, no mutating or capacity APIs, no stable ABI/layout guarantees, and no beta maturity are included.

exp-102

Release label: exp-102

Release date: 2026-05-21

Release state: gated experimental option-bool-f64 baseline compiler/runtime plus stdlib gate

Summary

Glagol exp-102 gates the concrete (option f64) and (option bool) slice.

The release extends the checker, formatter, LLVM backend, and test runner so immutable (option f64) and (option bool) params, returns, locals, direct some/none construction, is_some, is_none, unwrap_some, and source-level match payload binding work end to end. It also broadens the local std-layout-local-option/ fixture, the explicit std-import-option/ fixture, the workspace std-import-option/ fixture, focused option-result coverage, diagnostics snapshots, and promotion-gate inventory, and it stages the connected std.option f64/bool helper inventory:

  • some_f64
  • none_f64
  • is_some_f64
  • is_none_f64
  • unwrap_some_f64
  • unwrap_or_f64
  • some_bool
  • none_bool
  • is_some_bool
  • is_none_bool
  • unwrap_some_bool
  • unwrap_or_bool

The source helpers stay explicit and concrete, and the compiler/runtime slice stays concrete to (option i32), (option i64), (option f64), (option bool), and (option string).

Explicit Deferrals

No compiler-known std.option.* runtime names, no generic option helpers, no option payload families beyond i32, i64, f64, bool, and string, no nested or container option support, no stable ABI/layout guarantees, and no beta maturity are included.

exp-101

Release label: exp-101

Release date: 2026-05-21

Release state: gated experimental vec-string option/transform stdlib gate

Summary

Glagol exp-101 gates the broadened concrete (vec string) helper lane.

The release updates the local std-layout-local-vec_string/ fixture, the explicit std-import-vec_string/ fixture, focused vec-string source-helper and source-search coverage, and promotion-gate inventory with one connected helper package:

  • index_option
  • first_option
  • last_option
  • index_of_option
  • last_index_of_option
  • concat
  • take
  • drop
  • reverse
  • subvec

The source helpers stay recursive and immutable with no var or set, stay concrete to (vec string) plus raw current (option string) / (option i32) forms only, and reuse only the already promoted std.vec.string.empty, std.vec.string.append, std.vec.string.len, and std.vec.string.index runtime names.

Explicit Deferrals

No new compiler-known std.* runtime names, no generics, no edit helpers, no prefix/suffix helpers, no nested vecs or vecs inside other containers, no mutating or capacity APIs, no stable ABI/layout guarantees, and no beta maturity are included.

exp-100

Release label: exp-100

Release date: 2026-05-21

Release state: gated experimental option-string baseline compiler/runtime plus stdlib gate

Summary

Glagol exp-100 gates the first concrete (option string) slice.

The release extends the checker, formatter, LLVM backend, and test runner so immutable (option string) params, returns, locals, direct some/none construction, is_some, is_none, unwrap_some, and source-level match payload binding work end to end. It also broadens the local std-layout-local-option/ fixture, the explicit std-import-option/ fixture, the workspace std-import-option/ fixture, focused option/result coverage, and promotion-gate inventory, and it stages the connected std.option string helper inventory:

  • some_string
  • none_string
  • is_some_string
  • is_none_string
  • unwrap_some_string
  • unwrap_or_string

The source helpers stay explicit and concrete, and the compiler/runtime slice stays concrete to (option i32), (option i64), and (option string).

Explicit Deferrals

No compiler-known std.option.* runtime names, no generic option helpers, no option payload families beyond i32, i64, and string, no nested or container option support, no stable ABI/layout guarantees, and no beta maturity are included.

exp-99

Release label: exp-99

Release date: 2026-05-21

Release state: gated experimental vec-string baseline compiler/runtime plus stdlib gate

Summary

Glagol exp-99 gates the first concrete (vec string) slice.

The release extends the checker, formatter, LLVM backend, runtime, std runtime inventory, and test runner so immutable (vec string) params, returns, locals, direct std.vec.string.empty, std.vec.string.append, std.vec.string.len, std.vec.string.index, and concrete vec-string equality work end to end. It also adds examples/vec-string.slo, adds the local std-layout-local-vec_string/ fixture, adds the explicit std-import-vec_string/ fixture, adds focused diagnostics and promotion-gate coverage, and stages the frozen std.vec_string helper inventory:

  • empty
  • append
  • len
  • at
  • singleton
  • append2
  • append3
  • pair
  • triple
  • is_empty
  • index_or
  • first_or
  • last_or
  • contains
  • count_of

The source helpers stay recursive and immutable with no var or set, use only the promoted std.vec.string runtime names, and keep real-program coverage focused on contains and count_of.

In Glagol-only repo states, the explicit-source std-import-vec_string/ fixture now remains authored and format-checked even if sibling lib/std/vec_string.slo has not landed yet; the full check/test lane for that fixture still depends on the paired Slovo source file.

Explicit Deferrals

No generics, no other vec element families, no option-query helpers, no transform/range/edit helpers, no nested vecs or vecs inside other containers, no mutating or capacity APIs, no stable ABI/layout guarantees, and no beta maturity are included.

exp-98

Release label: exp-98

Release date: 2026-05-21

Release state: gated experimental vec-i64-edit-helper stdlib gate

Summary

Glagol exp-98 gates the concrete edit-helper extension for the staged std.vec_i64 source-authored facade.

The release updates the local std-layout-local-vec_i64/ fixture, updates the explicit std-import-vec_i64/ fixture against repo-root lib/std/vec_i64.slo, adds focused integration coverage, and extends promotion-gate inventory and sibling Slovo alignment checks for these helpers:

  • insert_at
  • insert_range
  • replace_at
  • replace_range
  • remove_at
  • remove_range

The helpers reuse only the existing std.vec.i64 runtime family plus the already promoted (option i32) and (option i64) surface. insert_at(values,position,value) inserts before position, appends when position == len(values), and otherwise leaves out-of-range inputs unchanged. insert_range(values,position,inserted) follows the same position rules while preserving left-to-right order of both vectors. replace_at and remove_at leave negative and out-of-range positions unchanged. The range helpers leave values unchanged for negative starts, degenerate or reversed ranges, and start >= len(values); overlong end_exclusive values edit through the tail; and valid edits preserve element order while leaving source vectors unchanged. The local Glagol-owned fixture stays source-authored, recursive, and immutable without var or set, and the release adds no new parser, checker, runtime, formatter, or LLVM semantics.

Explicit Deferrals

No generic vectors, no new compiler-known std.* runtime names, no automatic standard-library imports, no compiler-loaded std source, no mutable vector APIs, no capacity/reserve management, no iterators, sorting, mapping, filtering, stable ABI/layout guarantees, or beta maturity are included.

exp-97

Release label: exp-97

Release date: 2026-05-21

Release state: gated experimental vec-i64-transform-helper stdlib gate

Summary

Glagol exp-97 gates the concrete transform-helper extension for the staged std.vec_i64 source-authored facade.

The release updates the local std-layout-local-vec_i64/ fixture, updates the explicit std-import-vec_i64/ fixture against repo-root lib/std/vec_i64.slo, adds focused integration coverage, and extends promotion-gate inventory and sibling Slovo alignment checks for these helpers:

  • concat
  • take
  • drop
  • reverse
  • subvec

The helpers reuse only the existing std.vec.i64 runtime family plus the already promoted (option i32) and (option i64) surface. concat(left,right) preserves left-to-right element order, take(values,count) treats negative counts as zero and saturates to the full vector, drop(values,count) treats negative counts as zero and saturates to the empty vector, reverse(values) returns a new vector in reverse order, and subvec(values,start,end_exclusive) returns the bounded middle slice while using the same concrete vec_i64 lane. The local Glagol-owned fixture stays source-authored, recursive, and immutable without var or set, and the release adds no new parser, checker, runtime, formatter, or LLVM semantics.

Explicit Deferrals

No vec_i64 insert/replace/remove helpers, no generics, no new compiler-known std.* runtime names, no mutating vector or capacity APIs, no iterators, sorting, mapping, filtering, stable ABI/layout guarantees, or beta maturity are included.

exp-96

Release label: exp-96

Release date: 2026-05-20

Release state: gated experimental vec-i64-option-query-helper stdlib gate

Summary

Glagol exp-96 gates the concrete option-query helper extension for the staged std.vec_i64 source-authored facade.

The release updates the local std-layout-local-vec_i64/ fixture, updates the explicit std-import-vec_i64/ fixture against repo-root lib/std/vec_i64.slo, adds focused integration coverage, and extends promotion-gate inventory and sibling Slovo alignment checks for these helpers:

  • index_option
  • first_option
  • last_option
  • index_of_option
  • last_index_of_option

The helpers reuse only the existing std.vec.i64 runtime family plus the already promoted (option i32) and (option i64) surface. index_option(values,position), first_option(values), and last_option(values) return concrete (option i64) observations of vec elements; index_of_option(values,target) and last_index_of_option(values,target) return concrete (option i32) position results. The local Glagol-owned fixture stays source-authored, recursive, and immutable without var or set, and the release adds no new parser, checker, runtime, formatter, or LLVM semantics.

Explicit Deferrals

No vec_i64 transform/range/edit helpers, no generics, no new compiler-known std.* runtime names, no mutating vector or capacity APIs, no iterators, sorting, mapping, filtering, stable ABI/layout guarantees, or beta maturity are included.

exp-95

Release label: exp-95

Release date: 2026-05-20

Release state: gated experimental option-i64-baseline compiler/runtime and stdlib gate

Summary

Glagol exp-95 gates the first concrete (option i64) baseline across the compiler, local source fixtures, and explicit-source std.option import path.

The release broadens the checker, formatter, LLVM backend, and test runner so immutable (option i64) params, returns, locals, some, none, is_some, is_none, unwrap_some, and source-level match payload bindings work end to end. It adds the local std-layout-local-option/ i64 helper coverage, widens the explicit std-import-option/ project against repo-root lib/std/option.slo, extends diagnostics snapshots and promotion-gate inventory, and broadens the staged helper surface with:

  • some_i64
  • none_i64
  • is_some_i64
  • is_none_i64
  • unwrap_some_i64
  • unwrap_or_i64

Explicit Deferrals

No compiler-known std.option.* runtime names, no generic option helpers, no option payload families beyond i32 and i64, no nested/container option support, no option equality or printing, no stable ABI/layout guarantee, no manifest schema changes, and no beta maturity are included.

exp-94

Release label: exp-94

Release date: 2026-05-20

Release state: gated experimental vec-i64-baseline compiler/runtime and stdlib gate

Summary

Glagol exp-94 gates the concrete (vec i64) runtime and compiler surface plus the first local and explicit-source std.vec_i64 facade baseline.

The release promotes std.vec.i64.empty, std.vec.i64.append, std.vec.i64.len, and std.vec.i64.index; adds (vec i64) equality; extends the checker, formatter, lowering, LLVM backend, runtime, test runner, and runtime catalog for concrete (vec i64) values; adds the local std-layout-local-vec_i64/ fixture; adds the explicit std-import-vec_i64/ fixture against repo-root lib/std/vec_i64.slo; adds focused integration coverage; and extends promotion-gate inventory for this connected baseline:

  • empty
  • append
  • len
  • at
  • singleton
  • append2
  • append3
  • pair
  • triple
  • is_empty
  • index_or
  • first_or
  • last_or
  • contains
  • sum

The source surface stays concrete to (vec i64) and immutable. It reuses only the promoted std.vec.i64 runtime names, leaves source vectors unchanged, and does not widen option/result payload families or introduce generic vector semantics.

Explicit Deferrals

No generic vectors, no vector payload families beyond the concrete (vec i32) and (vec i64) slices, no automatic standard-library imports, no edits under slovo/**, no compiler-loaded std source beyond the existing explicit search rules, no new compiler-known std.* runtime names beyond std.vec.i64.*, no slice or view types, no mutable vector locals, no mutating vector APIs, no option/result payload widening, no vector families for f64, string, or bool, no capacity or reserve management, no sorting, mapping, filtering, or iterator APIs, no stable ABI/layout guarantees, and no beta maturity are included.

exp-93

Release label: exp-93

Release date: 2026-05-20

Release state: gated experimental vec-i32-count-of-helper stdlib gate

Summary

Glagol exp-93 gates the concrete count-of helper extension for the staged std.vec_i32 source-authored facade.

The release updates the explicit std-import-vec_i32/ project, updates the local source-authored std-layout-local-vec_i32/ fixture, adds focused integration coverage, and extends promotion-gate inventory and sibling Slovo alignment checks for this helper:

  • count_of

The helper is an ordinary source-authored composition over the existing promoted std.vec.i32 runtime family and the already staged std.vec_i32 wrappers for len and at, plus equality and while. count_of(values,target) returns the number of elements of values equal to target; returns 0 for empty and no-match cases; counts repeated matches exactly; leaves the source vector unchanged; and adds no new parser, checker, runtime, formatter, or LLVM semantics for this release.

Explicit Deferrals

No generic vectors, no vector payload families beyond (vec i32), no automatic standard-library imports, no compiler-loaded std source, no new compiler-known std.* runtime names, no new private recursive helper loops, no broader aggregation/filter families beyond the current concrete vec surface, no slice or view types, no mutable (vec i32) local support, no capacity or reserve management, no sorting, mapping, filtering, or iterator APIs, no stable ABI/layout guarantees, and no beta maturity are included.

exp-92

Release label: exp-92

Release date: 2026-05-20

Release state: gated experimental vec-i32-without-prefix-helper stdlib gate

Summary

Glagol exp-92 gates the concrete without-prefix helper extension for the staged std.vec_i32 source-authored facade.

The release updates the explicit std-import-vec_i32/ project, updates the local source-authored std-layout-local-vec_i32/ fixture, adds focused integration coverage, and extends promotion-gate inventory and sibling Slovo alignment checks for this helper:

  • without_prefix

The helper is an ordinary source-authored composition over the existing promoted std.vec.i32 runtime family and the already staged std.vec_i32 wrappers for empty, append, len, and at, plus the already staged source helpers starts_with, drop, and len. without_prefix(values,prefix) removes a matching leading prefix from values; returns values unchanged for empty, longer, or mismatched prefixes; returns (empty) for an exact match; preserves the order of the remaining suffix; leaves both source vectors unchanged; and adds no new parser, checker, runtime, formatter, or LLVM semantics for this release.

Explicit Deferrals

No generic vectors, no vector payload families beyond (vec i32), no automatic standard-library imports, no compiler-loaded std source, no new compiler-known std.* runtime names, no new private recursive helper loops, no broader prefix/suffix helper families beyond the current starts_with, without_prefix, ends_with, and without_suffix helpers, no slice or view types, no mutable (vec i32) local support, no capacity or reserve management, no sorting, mapping, filtering, or iterator APIs, no stable ABI/layout guarantees, and no beta maturity are included.

exp-91

Release label: exp-91

Release date: 2026-05-20

Release state: gated experimental vec-i32-without-suffix-helper stdlib gate

Summary

Glagol exp-91 gates the concrete without-suffix helper extension for the staged std.vec_i32 source-authored facade.

The release updates the explicit std-import-vec_i32/ project, updates the local source-authored std-layout-local-vec_i32/ fixture, adds focused integration coverage, and extends promotion-gate inventory and sibling Slovo alignment checks for this helper:

  • without_suffix

The helper is an ordinary source-authored composition over the existing promoted std.vec.i32 runtime family and the already staged std.vec_i32 wrappers for empty, append, len, and at, plus the already staged source helpers ends_with, take, and len. without_suffix(values,suffix) removes a matching trailing suffix from values; returns values unchanged for empty, longer, or mismatched suffixes; returns (empty) for an exact match; preserves the order of the remaining prefix; leaves both source vectors unchanged; and adds no new parser, checker, runtime, formatter, or LLVM semantics for this release.

Explicit Deferrals

No generic vectors, no vector payload families beyond (vec i32), no automatic standard-library imports, no compiler-loaded std source, no new compiler-known std.* runtime names, no new private recursive helper loops, no broader prefix/suffix helper families beyond the current starts_with, ends_with, and without_suffix helpers, no slice or view types, no mutable (vec i32) local support, no capacity or reserve management, no sorting, mapping, filtering, or iterator APIs, no stable ABI/layout guarantees, and no beta maturity are included.

exp-90

Release label: exp-90

Release date: 2026-05-20

Release state: gated experimental vec-i32-ends-with-helper stdlib gate

Summary

Glagol exp-90 gates the concrete ends-with helper extension for the staged std.vec_i32 source-authored facade.

The release updates the explicit std-import-vec_i32/ project, updates the local source-authored std-layout-local-vec_i32/ fixture, adds focused integration coverage, and extends promotion-gate inventory and sibling Slovo alignment checks for this helper:

  • ends_with

The helper is an ordinary source-authored composition over the existing promoted std.vec.i32 runtime family and the already staged std.vec_i32 wrappers for empty, append, len, and at, plus the already staged source helpers drop and vec equality. ends_with(values,suffix) returns true exactly when values ends with all elements of suffix in order; returns true for an empty suffix; returns false when len(suffix) > len(values); returns true for equal vectors and shorter matching suffixes; returns false for mismatched suffixes; leaves both source vectors unchanged; and adds no new parser, checker, runtime, formatter, or LLVM semantics for this release.

Explicit Deferrals

No generic vectors, no vector payload families beyond (vec i32), no automatic standard-library imports, no compiler-loaded std source, no new compiler-known std.* runtime names, no new private recursive helper loops, no broader prefix/suffix query families beyond the current starts_with and ends_with helpers, no slice or view types, no mutable (vec i32) local support, no capacity or reserve management, no sorting, mapping, filtering, or iterator APIs, no stable ABI/layout guarantees, and no beta maturity are included.

exp-89

Release label: exp-89

Release date: 2026-05-20

Release state: gated experimental vec-i32-starts-with-helper stdlib gate

Summary

Glagol exp-89 gates the concrete starts-with helper extension for the staged std.vec_i32 source-authored facade.

The release updates the explicit std-import-vec_i32/ project, updates the local source-authored std-layout-local-vec_i32/ fixture, adds focused integration coverage, and extends promotion-gate inventory and sibling Slovo alignment checks for this helper:

  • starts_with

The helper is an ordinary source-authored composition over the existing promoted std.vec.i32 runtime family and the already staged std.vec_i32 wrappers for empty, append, len, and at, plus the already staged source helpers take and vec equality. starts_with(values,prefix) returns true exactly when values begins with all elements of prefix in order; returns true for an empty prefix; returns false when len(prefix) > len(values); returns true for equal vectors and shorter matching prefixes; returns false for mismatched prefixes; leaves both source vectors unchanged; and adds no new parser, checker, runtime, formatter, or LLVM semantics for this release.

Explicit Deferrals

No generic vectors, no vector payload families beyond (vec i32), no automatic standard-library imports, no compiler-loaded std source, no new compiler-known std.* runtime names, no new private recursive helper loops, no broader prefix/suffix query families beyond this single helper, no slice or view types, no mutable (vec i32) local support, no capacity or reserve management, no sorting, mapping, filtering, or iterator APIs, no stable ABI/layout guarantees, and no beta maturity are included.

exp-88

Release label: exp-88

Release date: 2026-05-20

Release state: gated experimental vec-i32-replace-range-helper stdlib gate

Summary

Glagol exp-88 gates the concrete replace-range helper extension for the staged std.vec_i32 source-authored facade.

The release updates the explicit std-import-vec_i32/ project, updates the local source-authored std-layout-local-vec_i32/ fixture, adds focused integration coverage, and extends promotion-gate inventory and sibling Slovo alignment checks for this helper:

  • replace_range

The helper is an ordinary source-authored composition over the existing promoted std.vec.i32 runtime family and the already staged std.vec_i32 wrappers for empty, append, len, and at, plus the already staged source helpers take, drop, and concat. replace_range(values,start,end_exclusive,replacement) returns values unchanged when start < 0, when end_exclusive <= start, or when start >= len(values); replaces the half-open range [start, end_exclusive) when both bounds are in range; replaces the tail from start when end_exclusive >= len(values); preserves the order of both vectors; leaves both source vector values unchanged; and adds no new parser, checker, runtime, formatter, or LLVM semantics for this release.

Explicit Deferrals

No generic vectors, no vector payload families beyond (vec i32), no automatic standard-library imports, no compiler-loaded std source, no new compiler-known std.* runtime names, no new private recursive helper loops, no bulk-edit APIs beyond this single contiguous replacement helper, no slice or view types, no mutable (vec i32) local support, no capacity or reserve management, no sorting, mapping, filtering, or iterator APIs, no stable ABI/layout guarantees, and no beta maturity are included.

exp-87

Release label: exp-87

Release date: 2026-05-20

Release state: gated experimental vec-i32-insert-range-helper stdlib gate

Summary

Glagol exp-87 gates the concrete insert-range helper extension for the staged std.vec_i32 source-authored facade.

The release updates the explicit std-import-vec_i32/ project, updates the local source-authored std-layout-local-vec_i32/ fixture, adds focused integration coverage, and extends promotion-gate inventory and sibling Slovo alignment checks for this helper:

  • insert_range

The helper is an ordinary source-authored composition over the existing promoted std.vec.i32 runtime family and the already staged std.vec_i32 wrappers for empty, append, len, and at, plus the already staged source helpers take, drop, and concat. insert_range(values,position,inserted) returns values unchanged when position < 0 or position > len(values); inserts inserted before the current element when 0 <= position < len(values); appends inserted when position == len(values); preserves the order of both vectors; leaves both source vector values unchanged; and adds no new parser, checker, runtime, formatter, or LLVM semantics for this release.

Explicit Deferrals

No generic vectors, no vector payload families beyond (vec i32), no automatic standard-library imports, no compiler-loaded std source, no new compiler-known std.* runtime names, no new private recursive helper loops, no bulk-edit APIs beyond this single contiguous range insertion helper, no multi-position insertion helpers, no mutable (vec i32) local support, no capacity or reserve management, no sorting, mapping, filtering, or iterator APIs, no stable ABI/layout guarantees, and no beta maturity are included.

exp-86

Release label: exp-86

Release date: 2026-05-20

Release state: gated experimental vec-i32-remove-range-helper stdlib gate

Summary

Glagol exp-86 gates the concrete remove-range helper extension for the staged std.vec_i32 source-authored facade.

The release updates the explicit std-import-vec_i32/ project, updates the local source-authored std-layout-local-vec_i32/ fixture, adds focused integration coverage, and extends promotion-gate inventory and sibling Slovo alignment checks for this helper:

  • remove_range

The helper is an ordinary source-authored composition over the existing promoted std.vec.i32 runtime family and the already staged std.vec_i32 wrappers for empty, append, len, and at, plus the already staged source helpers take, drop, and concat. remove_range(values,start,end_exclusive) returns values unchanged when start < 0, when end_exclusive <= start, or when start >= len(values); returns the prefix before start when end_exclusive >= len(values); otherwise returns a new vector with the half-open range [start, end_exclusive) removed, preserves the order of the remaining elements, and leaves the source vector value unchanged. Glagol adds no new parser, checker, runtime, formatter, or LLVM semantics for this release.

Explicit Deferrals

No generic vectors, no vector payload families beyond (vec i32), no automatic standard-library imports, no compiler-loaded std source, no new compiler-known std.* runtime names, no new private recursive helper loops, no bulk-edit APIs beyond this single contiguous removal helper, no mutable (vec i32) local support, no capacity or reserve management, no sorting, mapping, filtering, or iterator APIs, no stable ABI/layout guarantees, and no beta maturity are included.

exp-85

Release label: exp-85

Release date: 2026-05-20

Release state: gated experimental vec-i32-subvec-helper stdlib gate

Summary

Glagol exp-85 gates the concrete subvector-helper extension for the staged std.vec_i32 source-authored facade.

The release updates the explicit std-import-vec_i32/ project, updates the local source-authored std-layout-local-vec_i32/ fixture, adds focused integration coverage, and extends promotion-gate inventory and sibling Slovo alignment checks for this helper:

  • subvec

The helper is an ordinary source-authored composition over the existing promoted std.vec.i32 runtime family and the already staged std.vec_i32 wrappers for empty, append, len, and at, plus the already staged source helpers drop and take. subvec(values,start,end_exclusive) returns the empty vector when start < 0, when end_exclusive <= start, or when start >= len(values); returns the remaining tail from start when end_exclusive > len(values); otherwise returns a copied contiguous subvector [start, end_exclusive) with preserved left-to-right order; and leaves the source vector value unchanged. Glagol adds no new parser, checker, runtime, formatter, or LLVM semantics for this release.

Explicit Deferrals

No generic vectors, no vector payload families beyond (vec i32), no automatic standard-library imports, no compiler-loaded std source, no new compiler-known std.* runtime names, no new private recursive helper loops, no slice or view types, no mutable (vec i32) local support, no capacity or reserve management, no sorting, mapping, filtering, or iterator APIs, no stable ABI/layout guarantees, and no beta maturity are included.

exp-84

Release label: exp-84

Release date: 2026-05-20

Release state: gated experimental vec-i32-insert-helper stdlib gate

Summary

Glagol exp-84 gates the concrete insert-helper extension for the staged std.vec_i32 source-authored facade.

The release updates the explicit std-import-vec_i32/ project, updates the local source-authored std-layout-local-vec_i32/ fixture, adds focused integration coverage, and extends promotion-gate inventory and sibling Slovo alignment checks for this helper:

  • insert_at

The helper is an ordinary source-authored composition over the existing promoted std.vec.i32 runtime family and the already staged std.vec_i32 wrappers for empty, append, len, and at, plus the already staged source helpers take, drop, and concat. insert_at(values,position,value) returns values unchanged when position < 0 or position > len(values); inserts value before the current element when 0 <= position < len(values); appends value when position == len(values); preserves the surrounding order; increases the result length by one for valid insertions; and leaves the source vector value unchanged. Glagol adds no new parser, checker, runtime, formatter, or LLVM semantics for this release.

Explicit Deferrals

No generic vectors, no vector payload families beyond (vec i32), no automatic standard-library imports, no compiler-loaded std source, no new compiler-known std.* runtime names, no new private recursive helper loops, no bulk-edit APIs, no multi-index insertion, no mutable (vec i32) local support, no capacity or reserve management, no sorting, mapping, filtering, or iterator APIs, no stable ABI/layout guarantees, and no beta maturity are included.

exp-83

Release label: exp-83

Release date: 2026-05-20

Release state: gated experimental vec-i32-remove-helper stdlib gate

Summary

Glagol exp-83 gates the concrete remove-helper extension for the staged std.vec_i32 source-authored facade.

The release updates the explicit std-import-vec_i32/ project, updates the local source-authored std-layout-local-vec_i32/ fixture, adds focused integration coverage, and extends promotion-gate inventory and sibling Slovo alignment checks for this helper:

  • remove_at

The helper is an ordinary source-authored composition over the existing promoted std.vec.i32 runtime family and the already staged std.vec_i32 wrappers for empty, append, len, and at, plus the already staged source helpers take, drop, and concat. remove_at(values,position) returns values unchanged when position < 0 or position >= len(values); otherwise it returns a new vector with the element at position removed, preserves the order of the remaining elements, shortens the result length by one, and leaves the source vector value unchanged. Glagol adds no new parser, checker, runtime, formatter, or LLVM semantics for this release.

Explicit Deferrals

No generic vectors, no vector payload families beyond (vec i32), no automatic standard-library imports, no compiler-loaded std source, no new compiler-known std.* runtime names, no new private recursive helper loops, no insert helpers, no bulk-edit APIs, no multi-index removal, no mutable (vec i32) local support, no capacity or reserve management, no sorting, mapping, filtering, or iterator APIs, no stable ABI/layout guarantees, and no beta maturity are included.

exp-82

Release label: exp-82

Release date: 2026-05-20

Release state: gated experimental vec-i32-replace-helper stdlib gate

Summary

Glagol exp-82 gates the concrete replace-helper extension for the staged std.vec_i32 source-authored facade.

The release updates the explicit std-import-vec_i32/ project, updates the local source-authored std-layout-local-vec_i32/ fixture, adds focused integration coverage, and extends promotion-gate inventory and sibling Slovo alignment checks for this helper:

  • replace_at

The helper is an ordinary source-authored composition over the existing promoted std.vec.i32 runtime family and the already staged std.vec_i32 wrappers for empty, append, len, and at, plus the already staged source helpers take, drop, and concat. replace_at(values,position,replacement) returns values unchanged when position < 0 or position >= len(values); otherwise it returns a new vector with the same length and order except for the replaced slot. Glagol adds no new parser, checker, runtime, formatter, or LLVM semantics for this release.

Explicit Deferrals

No generic vectors, no vector payload families beyond (vec i32), no automatic standard-library imports, no compiler-loaded std source, no new compiler-known std.* runtime names, no private mutation loops, no insert or remove helpers, no bulk-edit APIs, no mutable (vec i32) local support, no capacity or reserve management, no sorting, mapping, filtering, or iterator APIs, no stable ABI/layout guarantees, and no beta maturity are included.

exp-81

Release label: exp-81

Release date: 2026-05-20

Release state: released experimental vec-i32-range-helper stdlib gate

Summary

Glagol exp-81 gates the concrete range-helper extension for the staged std.vec_i32 source-authored facade.

The release updates the explicit std-import-vec_i32/ project, updates the local source-authored std-layout-local-vec_i32/ fixture, adds focused integration coverage, and extends promotion-gate inventory and sibling Slovo alignment checks for this helper:

  • range

The helper is ordinary source-authored recursion over the existing promoted std.vec.i32 runtime family and the already staged std.vec_i32 wrappers for empty, append, len, and at. range(start,end_exclusive) generates the ascending half-open sequence [start, start + 1, ..., end_exclusive - 1], returns the empty vector when end_exclusive <= start, and accepts negative bounds. The recursive generation helper remains private to the fixture source. Glagol adds no new parser, checker, runtime, formatter, or LLVM semantics for this release.

Explicit Deferrals

No generic vectors, no vector payload families beyond (vec i32), no automatic standard-library imports, no compiler-loaded std source, no new compiler-known std.* runtime names, no edit helpers, no descending, stepped, or inclusive range variants, no mutable (vec i32) local support, no capacity or reserve management, no sorting, mapping, filtering, or iterator APIs, no stable ABI/layout guarantees, and no beta maturity are included.

exp-80

Release label: exp-80

Release date: 2026-05-20

Release state: released experimental vec-i32-generated-constructor-helper stdlib gate

Summary

Glagol exp-80 gates the concrete generated-constructor-helper extension for the staged std.vec_i32 source-authored facade.

The release updates the explicit std-import-vec_i32/ project, updates the local source-authored std-layout-local-vec_i32/ fixture, adds focused integration coverage, and extends promotion-gate inventory and sibling Slovo alignment checks for these helpers:

  • repeat
  • range_from_zero

The helpers are ordinary source-authored recursion over the existing promoted std.vec.i32 runtime family and the already staged std.vec_i32 wrappers for empty, append, len, and at. repeat(value,count) returns the empty vector for count <= 0, and range_from_zero(count) generates the ascending half-open sequence [0, 1, ..., count - 1], returning the empty vector for count <= 0. The recursive generation helpers remain private to the fixture source. Glagol adds no new parser, checker, runtime, formatter, or LLVM semantics for this release.

Explicit Deferrals

No generic vectors, no vector payload families beyond (vec i32), no automatic standard-library imports, no compiler-loaded std source, no new compiler-known std.* runtime names, no edit helpers, no public range helper, no descending, stepped, or inclusive range variants, no mutable (vec i32) local support, no capacity or reserve management, no sorting, mapping, filtering, or iterator APIs, no stable ABI/layout guarantees, and no beta maturity are included.

exp-79

Release label: exp-79

Release date: 2026-05-20

Release state: released experimental vec-i32-transform-helper stdlib gate

Summary

Glagol exp-79 gates the concrete transform-helper extension for the staged std.vec_i32 source-authored facade.

The release updates the explicit std-import-vec_i32/ project, updates the local source-authored std-layout-local-vec_i32/ fixture, adds focused integration coverage, and extends promotion-gate inventory and sibling Slovo alignment checks for these helpers:

  • concat
  • take
  • drop
  • reverse

The helpers are ordinary source-authored recursion over the existing promoted std.vec.i32 runtime family and the already staged std.vec_i32 wrappers for empty, append, len, and at. Glagol adds no new parser, checker, runtime, formatter, or LLVM semantics for this release.

Explicit Deferrals

No generic vectors, no vector payload families beyond (vec i32), no automatic standard-library imports, no compiler-loaded std source, no new compiler-known std.* runtime names, no mutable (vec i32) local support, no capacity or reserve management, no sorting, mapping, filtering, or iterator APIs, no stable ABI/layout guarantees, and no beta maturity are included.

exp-78

Release label: exp-78

Release date: 2026-05-20

Release state: released experimental cli-local-source-facade stdlib gate

Summary

Glagol exp-78 gates the Glagol-side local source-authored cli facade that mirrors the existing staged std.cli helper surface without widening it.

The release adds examples/projects/std-layout-local-cli/ with explicit local cli.slo, process.slo, and string.slo modules plus the matching main.slo consumer, adds focused integration coverage, and extends promotion-gate inventory/alignment checks for these helpers:

  • arg_text_result
  • arg_i32_result
  • arg_i32_or_zero
  • arg_i32_or
  • arg_i64_result
  • arg_i64_or_zero
  • arg_i64_or
  • arg_f64_result
  • arg_f64_or_zero
  • arg_f64_or
  • arg_bool_result
  • arg_bool_or_false
  • arg_bool_or

The local fixture stays source-authored and explicit: main.slo imports local cli, cli.slo imports local process and string, process.slo wraps only the existing promoted std.process.arg_result, and string.slo wraps only the existing promoted concrete parse-result helpers. Glagol adds no new parser, checker, runtime, formatter, or LLVM semantics for this release.

Explicit Deferrals

No widened std.cli API, no automatic standard-library imports, no compiler- loaded std source, no automatic standard-library search semantics, no new compiler-known std.* runtime names, no process spawning, exit/status control, no current-directory APIs, no signal handling, no shell parsing, no subcommands, no flag or option frameworks, no stable ABI/layout guarantees, and no beta maturity are included.

exp-77

Release label: exp-77

Release date: 2026-05-20

Release state: released experimental vec-i32-option-query-helper stdlib gate

Summary

Glagol exp-77 extends the concrete (vec i32) source-authored collection facade in the staged std.vec_i32 module with option-returning query helpers.

The release updates the explicit std-import-vec_i32/ project, updates the local source-authored std-layout-local-vec_i32/ fixture, adds focused integration coverage, and extends promotion-gate inventory and sibling Slovo alignment checks for these helpers:

  • index_option
  • first_option
  • last_option
  • index_of_option
  • last_index_of_option

The helpers are ordinary source wrappers and loops over the existing promoted std.vec.i32 runtime family plus the existing (option i32) surface. Glagol adds no new parser, checker, runtime, or LLVM semantics for this release.

Explicit Deferrals

No generic vectors, no vector payload families beyond (vec i32), no option payload families beyond (option i32), no automatic standard-library imports, no compiler-loaded std source, no new compiler-known std.* runtime names, no capacity or reserve management, no sorting, mapping, filtering, or iterator APIs, no mutating collection APIs, no stable ABI/layout guarantees, and no beta maturity are included.

exp-76

Release label: exp-76

Release date: 2026-05-20

Release state: released experimental vec-i32-source-helper stdlib gate

Summary

Glagol exp-76 gates a concrete (vec i32) source-authored collection facade in the staged std.vec_i32 module.

The release adds the explicit std-import-vec_i32/ project, adds the local source-authored std-layout-local-vec_i32/ fixture, adds focused integration coverage, and extends promotion-gate inventory and sibling Slovo alignment checks for these helpers:

  • empty
  • append
  • len
  • at
  • singleton
  • append2
  • append3
  • pair
  • triple
  • is_empty
  • index_or
  • first_or
  • last_or
  • contains
  • sum

The helpers are ordinary source wrappers and loops over the existing promoted std.vec.i32 runtime family. Glagol adds no new parser, checker, runtime, or LLVM semantics for this release.

Explicit Deferrals

No generic vectors, no vector payload families beyond (vec i32), no automatic standard-library imports, no compiler-loaded std source, no new compiler-known std.* runtime names, no capacity or reserve management, no sorting, mapping, filtering, or iterator APIs, no stable ABI/layout guarantees, and no beta maturity are included.

exp-75

Release label: exp-75

Release date: 2026-05-20

Release state: released experimental option-constructor stdlib gate

Summary

Glagol exp-75 gates source-authored concrete option constructors in the staged std.option facade.

The release expands the explicit std-import-option/ project, updates the local source-authored std-layout-local-option/ fixture, and extends focused integration coverage plus promotion-gate inventory/alignment checks for these helpers:

  • some_i32
  • none_i32

The helpers are ordinary source wrappers over the existing some and none forms for the currently promoted (option i32) family. Glagol adds no new parser, checker, runtime, or LLVM semantics for this release.

Explicit Deferrals

No generic option helpers, no new option payload families, no automatic standard-library imports, no compiler-loaded std source, no new compiler-known std.* runtime names, no stable ABI/layout guarantees, and no beta maturity are included.

exp-74

Release label: exp-74

Release date: 2026-05-20

Release state: released experimental result-constructor stdlib gate

Summary

Glagol exp-74 gates source-authored concrete result constructors in the staged std.result facade.

The release expands the explicit std-import-result/ project, updates the local source-authored std-layout-local-result/ fixture, and extends focused integration coverage plus promotion-gate inventory/alignment checks for these helpers:

  • ok_i32
  • err_i32
  • ok_i64
  • err_i64
  • ok_string
  • err_string
  • ok_f64
  • err_f64
  • ok_bool
  • err_bool

The helpers are ordinary source wrappers over the existing ok and err forms for the currently promoted concrete result families. Glagol adds no new parser, checker, runtime, or LLVM semantics for this release.

Explicit Deferrals

No generic result helpers, no new result payload families, no richer error ADTs, no automatic standard-library imports, no compiler-loaded std source, no new compiler-known std.* runtime names, no stable ABI/layout guarantees, and no beta maturity are included.

exp-73

Release label: exp-73

Release date: 2026-05-20

Release state: released experimental io-value-helper stdlib gate

Summary

Glagol exp-73 gates source-authored value-returning print helpers in the staged std.io facade.

The release expands the explicit std-import-io/ project, adds the local source-authored std-layout-local-io/ fixture plus focused integration coverage, and extends promotion-gate inventory/alignment checks for these helpers:

  • print_i32_value
  • print_i64_value
  • print_f64_value
  • print_string_value
  • print_bool_value

The helpers are ordinary source wrappers over the existing promoted print runtime calls. Glagol adds no new parser, checker, runtime, or LLVM semantics for this release.

Explicit Deferrals

No automatic standard-library imports, no compiler-loaded std source, no stderr facade helpers, no stdin facade helpers, no line iteration, no prompt APIs, no terminal control, no binary or streaming IO, no async IO, no new compiler-known std.* runtime names, no stable ABI/layout guarantees, and no beta maturity are included.

exp-72

Release label: exp-72

Release date: 2026-05-20

Release state: released experimental cli-custom-fallback stdlib gate

Summary

Glagol exp-72 gates source-authored typed CLI argument custom-fallback helpers in the staged std.cli facade.

The release expands the explicit std-import-cli/ project, adds focused integration coverage, and extends promotion-gate inventory/alignment checks for these helpers:

  • arg_i32_or
  • arg_i64_or
  • arg_f64_or
  • arg_bool_or

The helpers are ordinary source wrappers over the existing argument lookup and concrete parse result families. Glagol adds no new parser, checker, runtime, or LLVM semantics for this release.

Explicit Deferrals

No automatic standard-library imports, no compiler-loaded std source, no process spawning, no exit/status control, no current-directory APIs, no signal handling, no shell parsing, no subcommands, no richer CLI framework APIs, no generic configuration helpers, no new compiler-known std.* runtime names, no stable ABI/layout guarantees, and no beta maturity are included.

exp-71

Release label: exp-71

Release date: 2026-05-20

Release state: released experimental process-custom-fallback stdlib gate

Summary

Glagol exp-71 gates source-authored typed process argument custom-fallback helpers in the staged std.process facade.

The release expands the local source-authored process fixture at examples/projects/std-layout-local-process/ with a local string.slo parse wrapper module, expands the explicit std-import-process/ project, adds focused integration coverage, and extends promotion-gate inventory/alignment checks for these helpers:

  • arg_i32_or
  • arg_i64_or
  • arg_f64_or
  • arg_bool_or

The helpers are ordinary source wrappers over the existing argument lookup and concrete parse result families. Glagol adds no new parser, checker, runtime, or LLVM semantics for this release.

Explicit Deferrals

No automatic standard-library imports, no compiler-loaded std source, no process spawning, no exit/status control, no current-directory APIs, no signal handling, no shell parsing, no subcommands, no richer CLI framework APIs, no generic configuration helpers, no new compiler-known std.* runtime names, no stable ABI/layout guarantees, and no beta maturity are included.

exp-70

Release label: exp-70

Release date: 2026-05-20

Release state: released experimental fs-custom-fallback stdlib gate

Summary

Glagol exp-70 gates source-authored typed filesystem read custom-fallback helpers in the staged std.fs facade.

The release expands the local source-authored fs fixture at examples/projects/std-layout-local-fs/ with a local string.slo parse wrapper module, expands the explicit std-import-fs/ project, adds focused integration coverage, and extends promotion-gate inventory/alignment checks for these helpers:

  • read_i32_or
  • read_i64_or
  • read_f64_or
  • read_bool_or

The helpers are ordinary source wrappers over the existing text-read and concrete parse result families. Glagol adds no new parser, checker, runtime, or LLVM semantics for this release.

Explicit Deferrals

No automatic standard-library imports, no compiler-loaded std source, no binary file APIs, no directory traversal, no streaming file IO, no async file IO, no typed file writes, no rich host errors, no new compiler-known std.* runtime names, no stable ABI/layout guarantees, and no beta maturity are included.

exp-69

Release label: exp-69

Release date: 2026-05-20

Release state: released experimental env-custom-fallback stdlib gate

Summary

Glagol exp-69 gates source-authored typed environment parse custom-fallback helpers in the staged std.env facade.

The release expands the local source-authored env fixture at examples/projects/std-layout-local-env/, expands the explicit std-import-env/ project, adds deterministic present/missing/invalid environment setup to focused integration coverage, and extends promotion-gate inventory/alignment checks for these helpers:

  • get_i32_or
  • get_i64_or
  • get_f64_or
  • get_bool_or

The helpers are ordinary source wrappers over the existing environment lookup and concrete parse result families. Glagol adds no new parser, checker, runtime, or LLVM semantics for this release.

Explicit Deferrals

No automatic standard-library imports, no compiler-loaded std source, no generic configuration helpers, no environment mutation, no environment enumeration, no environment writes, no rich host errors, no new compiler-known std.* runtime names, no stable ABI/layout guarantees, and no beta maturity are included.

exp-68

Release label: exp-68

Release date: 2026-05-20

Release state: released experimental string-custom-fallback stdlib gate

Summary

Glagol exp-68 gates source-authored typed string parse custom-fallback helpers in the staged std.string facade.

The release expands the local source-authored string fixture at examples/projects/std-layout-local-string/, expands the explicit std-import-string/ project, adds focused integration coverage, and extends promotion-gate inventory/alignment checks for these helpers:

  • parse_i32_or
  • parse_i64_or
  • parse_f64_or
  • parse_bool_or

The helpers are ordinary source wrappers over the existing concrete parse result families. Glagol adds no new parser, checker, runtime, or LLVM semantics for this release.

Explicit Deferrals

No automatic standard-library imports, no compiler-loaded std source, no generic parse helpers, no whitespace trimming, no case-insensitive bool parsing, no rich parse errors, no new compiler-known std.* runtime names, no stable ABI/layout guarantees, and no beta maturity are included.

exp-67

Release label: exp-67

Release date: 2026-05-20

Release state: released experimental process-typed stdlib gate

Summary

Glagol exp-67 gates source-authored typed process argument helpers in the staged std.process facade.

The release expands the local source-authored process fixture at examples/projects/std-layout-local-process/ with a local string.slo parse wrapper module, expands the explicit std-import-process/ project, adds focused integration coverage, and extends promotion-gate inventory/alignment checks for these helpers:

  • arg_i32_result
  • arg_i32_or_zero
  • arg_i64_result
  • arg_i64_or_zero
  • arg_f64_result
  • arg_f64_or_zero
  • arg_bool_result
  • arg_bool_or_false

The helpers are ordinary source wrappers over the existing argument lookup and concrete parse result families. Glagol adds no new parser, checker, runtime, or LLVM semantics for this release.

Explicit Deferrals

No automatic standard-library imports, no compiler-loaded std source, no process spawning, no exit/status control, no current-directory APIs, no signal handling, no shell parsing, no subcommands, no richer CLI framework APIs, no rich host errors, no new compiler-known std.* runtime names, no stable ABI/layout guarantees, and no beta maturity are included.

exp-66

Release label: exp-66

Release date: 2026-05-20

Release state: released experimental fs-typed-read stdlib gate

Summary

Glagol exp-66 gates source-authored typed filesystem read helpers in the staged std.fs facade.

The release expands the local source-authored fs fixture at examples/projects/std-layout-local-fs/ with a local string.slo parse wrapper module, expands the explicit std-import-fs/ project, adds focused integration coverage, and extends promotion-gate inventory/alignment checks for these helpers:

  • read_i32_result
  • read_i32_or_zero
  • read_i64_result
  • read_i64_or_zero
  • read_f64_result
  • read_f64_or_zero
  • read_bool_result
  • read_bool_or_false

The helpers are ordinary source wrappers over the existing text-read and concrete parse result families. Glagol adds no new parser, checker, runtime, or LLVM semantics for this release.

Explicit Deferrals

No automatic standard-library imports, no compiler-loaded std source, no binary file APIs, no directory traversal, no streaming file IO, no async file IO, no typed file writes, no rich host errors, no new compiler-known std.* runtime names, no stable ABI/layout guarantees, and no beta maturity are included.

exp-65

Release label: exp-65

Release date: 2026-05-20

Release state: released experimental env-typed stdlib gate

Summary

Glagol exp-65 gates source-authored typed environment helpers in the staged std.env facade.

The release expands the local source-authored env fixture at examples/projects/std-layout-local-env/ with a local string.slo parse wrapper module, expands the explicit std-import-env/ project, adds deterministic present/missing/invalid environment setup to focused integration coverage, and extends promotion-gate inventory/alignment checks for these helpers:

  • get_i32_result
  • get_i32_or_zero
  • get_i64_result
  • get_i64_or_zero
  • get_f64_result
  • get_f64_or_zero
  • get_bool_result
  • get_bool_or_false

The helpers are ordinary source wrappers over the existing environment lookup and concrete parse result families. Glagol adds no new parser, checker, runtime, or LLVM semantics for this release.

Explicit Deferrals

No automatic standard-library imports, no compiler-loaded std source, no environment mutation, no environment enumeration, no environment writes, no generic configuration helpers, no rich host errors, no new compiler-known std.* runtime names, no stable ABI/layout guarantees, and no beta maturity are included.

exp-64

Release label: exp-64

Release date: 2026-05-20

Release state: released experimental num-fallback stdlib gate

Summary

Glagol exp-64 gates source-authored checked conversion fallback helpers in the staged std.num facade.

The release adds a local source-authored num fixture at examples/projects/std-layout-local-num/, expands the explicit std-import-num/ project, adds focused integration coverage, and extends promotion-gate inventory/alignment checks for these helpers:

  • i64_to_i32_or
  • f64_to_i32_or
  • f64_to_i64_or

The helpers are ordinary source wrappers over the existing checked numeric conversion result families. Glagol adds no new parser, checker, runtime, or LLVM semantics for this release.

Explicit Deferrals

No automatic standard-library imports, no compiler-loaded std source, no unchecked narrowing conversions, no saturating conversions, no generic numeric traits, no new compiler-known std.* runtime names, no stable ABI/layout guarantees, and no beta maturity are included.

exp-63

Release label: exp-63

Release date: 2026-05-20

Release state: released experimental fs-fallback stdlib gate

Summary

Glagol exp-63 gates source-authored fallback/status helpers in the staged std.fs facade.

The release expands the local source-authored fs fixture at examples/projects/std-layout-local-fs/, expands the explicit std-import-fs/ project, adds focused integration coverage, and extends promotion-gate inventory/alignment checks for these helpers:

  • read_text_or
  • write_text_ok

The helpers are ordinary source wrappers over the existing text filesystem result families. Glagol adds no new parser, checker, runtime, or LLVM semantics for this release.

Explicit Deferrals

No automatic standard-library imports, no compiler-loaded std source, no binary file APIs, no directory traversal, no streaming file IO, no async file IO, no rich host errors, no new compiler-known std.* runtime names, no stable ABI/layout guarantees, and no beta maturity are included.

exp-62

Release label: exp-62

Release date: 2026-05-20

Release state: released experimental env-fallback stdlib gate

Summary

Glagol exp-62 gates source-authored fallback helpers in the staged std.env facade.

The release expands the local source-authored env fixture at examples/projects/std-layout-local-env/, expands the explicit std-import-env/ project, adds deterministic present/missing environment setup to focused integration coverage, and extends promotion-gate inventory/alignment checks for these helpers:

  • has
  • get_or

The helpers are ordinary source wrappers over the existing environment lookup result family. Glagol adds no new parser, checker, runtime, or LLVM semantics for this release.

Explicit Deferrals

No automatic standard-library imports, no compiler-loaded std source, no environment mutation, no environment enumeration, no platform/configuration APIs, no rich host errors, no new compiler-known std.* runtime names, no stable ABI/layout guarantees, and no beta maturity are included.

exp-61

Release label: exp-61

Release date: 2026-05-20

Release state: released experimental process-fallback stdlib gate

Summary

Glagol exp-61 gates source-authored fallback helpers in the staged std.process facade.

The release adds a local source-authored process fixture at examples/projects/std-layout-local-process/, expands the explicit std-import-process/ project, adds focused integration coverage, and extends promotion-gate inventory/alignment checks for these helpers:

  • arg_or
  • arg_or_empty

The helpers are ordinary source wrappers over the existing process argument result family. Glagol adds no new parser, checker, runtime, or LLVM semantics for this release.

Explicit Deferrals

No automatic standard-library imports, no compiler-loaded std source, no shell parsing, no option/flag parsing, no subcommands, no spawning, no exit/status control, no rich host errors, no new compiler-known std.* runtime names, no stable ABI/layout guarantees, and no beta maturity are included.

exp-60

Release label: exp-60

Release date: 2026-05-20

Release state: released experimental string-fallback stdlib gate

Summary

Glagol exp-60 gates source-authored string parse fallback helpers in the staged std.string facade.

The release adds a local source-authored string fixture at examples/projects/std-layout-local-string/, expands the explicit std-import-string/ project, adds focused integration coverage, and extends promotion-gate inventory/alignment checks for these helpers:

  • parse_i32_or_zero
  • parse_i64_or_zero
  • parse_f64_or_zero
  • parse_bool_or_false

The helpers are ordinary source wrappers over the existing concrete parse result families. Glagol adds no new parser, checker, runtime, or LLVM semantics for this release.

Explicit Deferrals

No automatic standard-library imports, no compiler-loaded std source, no generic parse helpers, no whitespace trimming, no case-insensitive bool parsing, no rich parse errors, no new compiler-known std.* runtime names, no stable ABI/layout guarantees, and no beta maturity are included.

exp-59

Release label: exp-59

Release date: 2026-05-20

Release state: released experimental hosted-build optimization and benchmark publication gate

Summary

Glagol exp-59 tightens hosted executable builds and refreshes the publication process around the benchmark evidence.

The release keeps the language surface unchanged, but it now builds hosted executables through clang -O2, lowers immutable numeric locals directly as SSA values where the current checker/runtime model allows it, updates the benchmark methodology/writeups, and adds repo-local PDF rendering scripts for the current whitepaper and compiler manifest.

Explicit Deferrals

No general optimizer pass pipeline, no benchmark thresholds, no cross-machine performance claims, no stable ABI/layout guarantees, no broad SSA lowering for every value family, and no beta maturity are included.

exp-58

Release label: exp-58

Release date: 2026-05-19

Release state: released experimental boolean logic compiler gate

Summary

Glagol exp-58 gates and, or, and not as boolean logic forms.

The release adds examples/boolean-logic.slo, focused integration coverage, promotion-gate coverage, and sibling Slovo fixture alignment. and and or lower through existing if semantics and short-circuit.

Explicit Deferrals

No truthiness, variadic boolean operators, pattern guards, macro expansion, stable ABI/layout, optimizer guarantees, benchmark thresholds, or beta maturity are included.

exp-57

Release label: exp-57

Release date: 2026-05-19

Release state: released experimental integer bitwise compiler/stdlib gate

Summary

Glagol exp-57 gates bit_and, bit_or, and bit_xor for same-width i32 and i64 operands.

The release adds examples/integer-bitwise.slo, focused integration coverage, promotion-gate coverage, and expanded std.math project coverage for bit_and_i32, bit_or_i32, bit_xor_i32, bit_and_i64, bit_or_i64, and bit_xor_i64.

Explicit Deferrals

No shifts, bit-not, unsigned arithmetic, bit-width-specific integer families, floating-point bitwise operations, generic math, mixed numeric arithmetic, stable ABI/layout, optimizer guarantees, benchmark thresholds, or beta maturity are included.

exp-56

Release label: exp-56

Release date: 2026-05-19

Release state: released experimental integer remainder compiler/stdlib gate

Summary

Glagol exp-56 gates % as signed integer remainder for same-width i32 and i64 operands.

The release adds examples/integer-remainder.slo, focused integration coverage, promotion-gate coverage, and expanded std.math project coverage for rem_i32, is_even_i32, is_odd_i32, rem_i64, is_even_i64, and is_odd_i64.

Explicit Deferrals

No floating-point remainder, Euclidean modulo, unsigned arithmetic, bit operations, generic math, mixed numeric arithmetic, stable ABI/layout, optimizer guarantees, benchmark thresholds, or beta maturity are included.

exp-55

Release label: exp-55

Release date: 2026-05-19

Release state: released experimental f64/bool result source-flow gate

Summary

Glagol exp-55 gates source constructors and source match payload bindings for (result f64 i32) and (result bool i32).

The release adds examples/result-f64-bool-match.slo, focused integration coverage, and updated std.cli coverage. The CLI facade now propagates missing argument indexes as err 1 for f64 and bool helpers instead of using trap-based argument lookup.

Explicit Deferrals

No generic result types, result payload families beyond the already promoted concrete families, generic map/and_then, exception handling, automatic standard-library imports, stable ABI/layout/ownership, optimizer guarantees, benchmark thresholds, or beta maturity are included.

exp-54

Release label: exp-54

Release date: 2026-05-19

Release state: released experimental typed CLI facade gate

Summary

Glagol exp-54 gates the expanded std.cli source facade with typed argument parse helpers for i64, f64, and bool.

The release updates examples/projects/std-import-cli/, focused integration coverage, and promotion-gate coverage. The deterministic fixture checks missing-index result propagation for the current source-supported string, i32, and i64 result families, while keeping f64 and bool parse-result helpers compile-gated through the explicit import surface.

Explicit Deferrals

No automatic standard-library imports, std.slo aggregator, package registry behavior, lockfiles, package std dependencies, new compiler-known runtime names, err f64 i32 or err bool i32 source constructors, source match over (result f64 i32) or (result bool i32), shell parsing, option/flag parsing, subcommands, environment-backed configuration, stable CLI framework APIs, stable ABI/layout/ownership, optimizer guarantees, benchmark thresholds, or beta maturity are included.

exp-53

Release label: exp-53

Release date: 2026-05-19

Release state: released experimental CLI-facade standard-source search gate

Summary

Glagol exp-53 gates explicit project-mode source search for the staged standard CLI facade module: std.cli.

The release adds examples/projects/std-import-cli/, focused integration coverage, and promotion-gate coverage. The fixture imports sibling Slovo standard source without carrying a local copied module, and the facade exercises transitive standard-source imports through std.process and std.string.

Explicit Deferrals

No automatic standard-library imports, std.slo aggregator, package registry behavior, lockfiles, package std dependencies, new compiler-known runtime names, shell parsing, option/flag parsing, subcommands, environment-backed configuration, stable CLI framework APIs, stable ABI/layout/ownership, optimizer guarantees, benchmark thresholds, or beta maturity are included.

exp-52

Release label: exp-52

Release date: 2026-05-19

Release state: released experimental process-facade standard-source search gate

Summary

Glagol exp-52 gates explicit project-mode source search for the staged standard process facade module: std.process.

The release adds examples/projects/std-import-process/, focused integration coverage, and promotion-gate coverage. The fixture imports sibling Slovo standard source without carrying a local copied module.

Explicit Deferrals

No automatic standard-library imports, std.slo aggregator, package registry behavior, lockfiles, package std dependencies, new compiler-known process runtime names, process spawning, exit/status control, current-directory APIs, signal handling, stable ABI/layout/ownership, optimizer guarantees, benchmark thresholds, or beta maturity are included.

exp-51

Release label: exp-51

Release date: 2026-05-19

Release state: released experimental standard-library path-list discovery gate

Summary

Glagol exp-51 interprets SLOVO_STD_PATH as an ordered OS path list. The standard-source resolver checks listed roots in order and resolves the first root containing the requested module file.

This supports layered standard-library development: an override root can contain only the module under test, while a later root can provide the rest of the staged standard library.

Explicit Deferrals

No automatic standard-library imports, std.slo aggregator, package registry behavior, lockfiles, package std dependencies, semantic version solving, stable package manager behavior, broad standard-library APIs, stable ABI/layout/ownership, optimizer guarantees, benchmark thresholds, or beta maturity are included.

exp-50

Release label: exp-50

Release date: 2026-05-19

Release state: released experimental installed standard-library discovery gate

Summary

Glagol exp-50 gates installed-toolchain discovery for explicit standard-source imports. A copied glagol binary can find staged Slovo standard-library modules under executable-relative ../share/slovo/std without SLOVO_STD_PATH or a sibling checkout.

The resolver now checks candidates per requested module file, so an earlier partial std root does not mask a later root containing the module.

Explicit Deferrals

No automatic standard-library imports, std.slo aggregator, package registry behavior, lockfiles, package std dependencies, stable install layout guarantees beyond this alpha candidate, new compiler-known runtime names, broad standard-library APIs, stable ABI/layout/ownership, optimizer guarantees, benchmark thresholds, or beta maturity are included.

exp-49

Release label: exp-49

Release date: 2026-05-19

Release state: released experimental io-facade standard-source search gate

Summary

Glagol exp-49 gates explicit project-mode source search for the staged standard IO facade module: std.io.

The release adds examples/projects/std-import-io/, focused integration coverage, and promotion-gate coverage. The fixture imports sibling Slovo standard source without carrying a local copied module.

Explicit Deferrals

No automatic standard-library imports, std.slo aggregator, package registry behavior, installed stdlib paths, new compiler-known IO names, formatted output APIs, stream abstractions, async IO, stable ABI/layout/ownership, optimizer guarantees, benchmark thresholds, or beta maturity are included.

exp-48

Release label: exp-48

Release date: 2026-05-19

Release state: released experimental core-facade standard-source search gate

Summary

Glagol exp-48 gates explicit project-mode source search for the staged standard core facade modules: std.string and std.num.

The release adds examples/projects/std-import-string/ and examples/projects/std-import-num/, focused integration coverage, and promotion-gate coverage. Each fixture imports sibling Slovo standard source without carrying a local copied module.

Explicit Deferrals

No automatic standard-library imports, std.slo aggregator, package registry behavior, installed stdlib paths, generic parse/format APIs, broad numeric casts, stable ABI/layout/ownership, optimizer guarantees, benchmark thresholds, or beta maturity are included.

exp-47

Release label: exp-47

Release date: 2026-05-19

Release state: released experimental host-facade standard-source search gate

Summary

Glagol exp-47 gates explicit project-mode source search for the staged standard host facade modules: std.time, std.random, std.env, and std.fs.

The release adds examples/projects/std-import-time/, examples/projects/std-import-random/, examples/projects/std-import-env/, and examples/projects/std-import-fs/, focused integration coverage, and promotion-gate coverage. Each fixture imports sibling Slovo standard source without carrying a local copied module.

Explicit Deferrals

No automatic standard-library imports, std.slo aggregator, workspace dependency syntax for std, package registry behavior, installed stdlib paths, broad host APIs, stable ABI/layout/ownership, optimizer guarantees, benchmark thresholds, or beta maturity are included.

exp-46

Release label: exp-46

Release date: 2026-05-19

Release state: released experimental workspace standard-source search gate

Summary

Glagol exp-46 implements explicit standard-library source search inside workspace packages. Workspace package modules can import std.<module> source modules using the same SLOVO_STD_PATH or lib/std discovery model as project mode.

The release adds examples/workspaces/std-import-option/, focused integration coverage, and promotion-gate coverage.

Explicit Deferrals

No automatic standard-library imports, workspace dependency syntax for std, package registry behavior, installed toolchain stdlib paths, std.slo aggregator, generic option helpers, broad stdlib APIs, stable ABI/layout/ownership, optimizer guarantees, benchmark thresholds, or beta maturity are included.

exp-45

Release label: exp-45

Release date: 2026-05-19

Release state: released experimental result/option standard-source search gate

Summary

Glagol exp-45 gates the exp-44 source-search resolver for two additional staged standard modules: std.result and std.option.

The release adds examples/projects/std-import-result/ and examples/projects/std-import-option/, focused integration coverage, and promotion-gate coverage. Both fixtures import repo-root Slovo standard source without carrying local result.slo or option.slo copies.

Explicit Deferrals

No automatic standard-library imports, workspace/package std imports, package registry behavior, std.slo aggregator, glob imports, aliases, qualified member access, generic result helpers, generic option helpers, broad stdlib APIs, stable ABI/layout/ownership, optimizer guarantees, benchmark thresholds, or beta maturity are included.

exp-44

Release label: exp-44

Release date: 2026-05-19

Release state: released experimental standard-library source-search gate

Summary

Glagol exp-44 implements project-mode source search for explicit std.<module> imports, starting with std.math. A project can now write (import std.math (...)) and the compiler loads sibling Slovo std/math.slo source instead of requiring a local copied math.slo.

The release adds examples/projects/std-import-math/, focused integration coverage, and promotion-gate coverage. The standard-library root is discovered through SLOVO_STD_PATH or a lib/std checkout.

Explicit Deferrals

No automatic standard-library imports, workspace/package std imports, package registry behavior, std.slo aggregator, glob imports, aliases, qualified member access, compiler-known std.* runtime names, broad stdlib APIs, stable ABI/layout/ownership, optimizer guarantees, benchmark thresholds, or beta maturity are included.

exp-43

Release label: exp-43

Release date: 2026-05-19

Release state: released experimental technical whitepaper and design-skill gates

Summary

Glagol exp-43 publishes docs/GLAGOL_WHITEPAPER.md, generated PDF publication artifacts, a concise compiler manifest, and a repository-local beta compiler-design skill under .llm/skills/.

Explicit Deferrals

No parser behavior, checker behavior, backend behavior, runtime APIs, compiler-known std.* names, automatic standard-library imports, stable ABI/layout/ownership, optimizer guarantees, benchmark thresholds, cross-machine performance claims, package registry behavior, or beta maturity are included.

exp-42

Release label: exp-42

Release date: 2026-05-19

Release state: released experimental hot-loop benchmark mode gates

Summary

Glagol exp-42 separates two benchmark meanings in the shared runner: cold-process for one normal startup-inclusive run, and hot-loop for a larger runtime-supplied loop count with total time plus normalized median time for the base loop count.

The benchmark metadata now records hot-loop counts and checksums. The Slovo benchmark fixtures accept the runner loop count through process arguments with stdin fallback, so Slovo can participate in hot-loop mode.

Explicit Deferrals

No language semantics, compiler optimizations, high-resolution Slovo timing APIs, stable benchmark thresholds, cross-machine performance claims, stable ABI/layout/ownership, package registry behavior, hot-runtime benchmark daemon, or beta maturity are included.

exp-41

Release label: exp-41

Release date: 2026-05-19

Release state: released experimental Lisp benchmark comparison gates

Summary

Glagol exp-41 extends the local benchmark suite with Common Lisp/SBCL source slots beside the existing Clojure slots. The benchmark suite includes math-loop, branch-loop, and parse-loop scaffolds, each with Slovo, C, Rust, Python, Clojure, and Common Lisp/SBCL source slots where the local toolchain is available.

The shared runner detects SBCL through sbcl, SBCL, or --sbcl. Benchmark timing remains cold-process local-machine evidence only: Clojure timings include JVM and Clojure startup, while Common Lisp timings include SBCL script startup.

Explicit Deferrals

No language semantics, compiler optimizations, stable benchmark thresholds, cross-machine performance claims, stable ABI/layout/ownership, package registry behavior, hot-runtime benchmark daemon, or beta maturity are included.

exp-40

Release label: exp-40

Release date: 2026-05-19

Release state: released experimental benchmark-suite and license gates

Summary

Glagol exp-40 adds a broader local benchmark suite and project license files. The benchmark suite includes math-loop, branch-loop, and parse-loop scaffolds, each with Slovo, C, Rust, Python, and Clojure source slots where the local toolchain is available.

The shared runner validates deterministic checksums, skips missing toolchains, and reports local-machine timing comparisons only. Clojure is detected through clojure, CLOJURE, or CLOJURE_JAR.

Glagol is documented and licensed as MIT OR Apache-2.0, matching the Cargo package metadata. Alpha/beta release criteria are recorded in .llm/.

Explicit Deferrals

No language semantics, compiler optimizations, stable benchmark thresholds, cross-machine performance claims, stable ABI/layout/ownership, package registry behavior, or beta maturity are included.

exp-39

Release label: exp-39

Release date: 2026-05-19

Release state: released experimental math-helper and benchmark-scaffold gates

Summary

Glagol exp-39 implements Standard Math Extensions And Benchmark Scaffold Alpha on the Glagol side as fixture, documentation, promotion-gate coverage, and a local benchmark scaffold. It extends examples/projects/std-layout-local-math/ so an ordinary project explicitly imports local math.slo helpers for abs, neg, min, max, clamp, square, cube, is_zero, is_positive, is_negative, and inclusive in_range across i32, i64, and finite f64.

It also adds benchmarks/math-loop/, with Slovo, C, Rust, and Python implementations plus a runner for local-machine timing comparisons. The runner supplies the loop count through stdin, validates a shared checksum, skips missing toolchains where possible, and reports timing data only as local evidence.

Explicit Deferrals

No new compiler-known std.* names, automatic std import/search path, compiler-loaded std source, new numeric primitives, modulo, trigonometry/sqrt/pow/logarithm APIs, generic math, overloads, traits, mixed numeric arithmetic, optimizer guarantees, benchmark thresholds, cross-machine performance claims, runtime ABI changes, stable ABI/layout/ownership, or beta maturity are included.

exp-38

Release label: exp-38

Release date: 2026-05-19

Release state: released experimental source-facade gates

Summary

Glagol exp-38 implements Standard Host Source Facades Alpha on the Glagol side as fixture, documentation, and promotion-gate coverage. It adds examples/projects/std-layout-local-random/, examples/projects/std-layout-local-env/, and examples/projects/std-layout-local-fs/ so ordinary projects explicitly import local facades backed by already promoted std.random.i32, std.env.get, std.env.get_result, std.fs.read_text, std.fs.read_text_result, std.fs.write_text, and std.fs.write_text_result calls.

The gated facade set is random_i32, random_i32_non_negative, get, get_result, read_text, read_text_result, write_text_status, and write_text_result.

The default promotion gate checks the local fixtures remain explicit. The ignored monorepo Slovo std-source gate now also checks sibling std/random.slo, std/env.slo, and std/fs.slo as part of the exact std source inventory and facade-name alignment.

Explicit Deferrals

No new compiler-known std.* names, automatic std import/search path, compiler-loaded std source, seed/range/bytes/float/UUID/crypto random APIs, environment mutation/enumeration, binary/directory/streaming/async filesystem APIs, rich host error ADTs, runtime ABI changes, stable ABI/layout/ownership, or beta maturity are included.

exp-37

Release label: exp-37

Release date: 2026-05-19

Release state: released experimental source-facade gates

Summary

Glagol exp-37 implements Standard Time Source Facade Alpha on the Glagol side as fixture, documentation, and promotion-gate coverage. It adds examples/projects/std-layout-local-time/ so an ordinary project explicitly imports local time.slo facades backed by the existing promoted std.time.monotonic_ms and std.time.sleep_ms calls.

The gated facade set is monotonic_ms and sleep_ms_zero. sleep_ms_zero calls std.time.sleep_ms 0 and returns 0, because source unit-return facade functions are not promoted.

The default promotion gate checks the local fixture remains explicit. The ignored monorepo Slovo std-source gate now also checks repo lib/std/time.slo as part of the exact std source inventory and facade-name alignment.

Explicit Deferrals

No new compiler-known std.* names, automatic std import/search path, compiler-loaded std source, wall-clock/calendar/timezone APIs, high-resolution timers, async timers, cancellation, scheduling guarantees, runtime ABI changes, stable ABI/layout/ownership, or beta maturity are included.

exp-36

Release label: exp-36

Release date: 2026-05-19

Release state: released experimental source-helper gates

Summary

Glagol exp-36 implements Standard Option Source Helpers Alpha on the Glagol side as fixture, documentation, and promotion-gate coverage. It adds examples/projects/std-layout-local-option/ so an ordinary project explicitly imports local option.slo helpers for source-authored (option i32) values created with some and none.

The gated helper set is is_some_i32, is_none_i32, unwrap_some_i32, and unwrap_or_i32.

The default promotion gate checks the local fixture remains explicit and source-authored, with no automatic std imports and no compiler-known std.option.* names. The ignored monorepo Slovo std-source gate now also checks repo lib/std/option.slo inventory and helper-name alignment.

Explicit Deferrals

No new compiler-known std.* names, generic option helpers, option payload families beyond i32, source-loaded std modules, automatic std import/search path, runtime ABI changes, manifest schema changes, stable ABI/layout/ownership, or beta maturity are included. exp-95 later broadens the same staged facade and compiler slice to concrete (option i64).

exp-35

Release label: exp-35

Release date: 2026-05-19

Release state: released experimental source-helper gates

Summary

Glagol exp-35 implements Standard Result Bool Source Helpers Alpha on the Glagol side as fixture, documentation, and promotion-gate coverage. It extends examples/projects/std-layout-local-result/ so an ordinary project explicitly imports local result.slo helpers for (result bool i32) values produced by std.string.parse_bool_result.

The gated helper set is is_ok_bool, is_err_bool, unwrap_ok_bool, unwrap_err_bool, and unwrap_or_bool.

The default promotion gate checks the local fixture remains explicit and source-authored, with no automatic std imports and no compiler-known std.result.unwrap_or. The ignored monorepo Slovo std-source gate now also checks repo lib/std/result.slo bool helper-name alignment.

Explicit Deferrals

No source-authored (result bool i32) constructors, generic bool result matching, generic result helpers, compiler-known std.result.unwrap_or, std.result.map, std.result.and_then, option helpers, new compiler-known std.* runtime calls, runtime ABI changes, automatic std import/search path, compiler-loaded std source, manifest schema changes, stable ABI/layout/ownership, or beta maturity are included.

exp-34

Release label: exp-34

Release date: 2026-05-19

Release state: released experimental compiler support

Summary

Glagol exp-34 implements String Parse Bool Result Alpha. The compiler now promotes exactly std.string.parse_bool_result : (string) -> (result bool i32).

The release accepts only complete lowercase ASCII true and false, returns ok true or ok false, and returns err 1 for empty strings, uppercase/mixed-case text, leading or trailing whitespace, numeric text, or any other text. Ordinary parse failure does not trap.

The compiler lowers the call through the private runtime helper __glagol_string_parse_bool_result, and the test runner mirrors the same exact lowercase semantics. The fixture is examples/string-parse-bool-result.slo.

Explicit Deferrals

No generic parse APIs, trap-based std.string.parse_bool, case-insensitive parsing, whitespace trimming, locale/Unicode parsing, numeric bool parsing, string/bytes parse APIs, rich parse errors, generic result support, source-authored (result bool i32) constructors or matches, stable helper ABI/layout/ownership, runtime headers/libraries, manifest schema changes, or beta maturity are included.

exp-33

Release label: exp-33

Release date: 2026-05-19

Release state: released experimental source-helper gates

Summary

Glagol exp-33 implements Standard Result Source Helpers Alpha on the Glagol side as fixture, documentation, and promotion-gate coverage. It adds examples/projects/std-layout-local-result/ so an ordinary project explicitly imports a local result.slo module with source-authored helpers over the current concrete result families.

The gated helper set is is_err_i64, unwrap_err_i64, is_err_string, unwrap_err_string, is_err_f64, unwrap_err_f64, unwrap_or_i32, unwrap_or_i64, unwrap_or_string, and unwrap_or_f64.

The default promotion gate checks the local fixture remains explicit and source-authored, with no automatic std imports and no compiler-known std.result.unwrap_or. The ignored monorepo Slovo std-source gate now also checks repo lib/std/result.slo helper-name alignment.

Explicit Deferrals

No generic result helpers, compiler-known std.result.unwrap_or, std.result.map, std.result.and_then, option helpers, new result payload families, new compiler-known std.* runtime calls, runtime ABI changes, automatic std import/search path, compiler-loaded std source, manifest schema changes, stable ABI/layout/ownership, or beta maturity are included.

exp-32

Release label: exp-32

Release date: 2026-05-19

Release state: released experimental source-helper gates

Summary

Glagol exp-32 implements Standard Math Source Helpers Alpha on the Glagol side as fixture, documentation, and promotion-gate coverage. It extends examples/projects/std-layout-local-math/ so an ordinary project explicitly imports a local math.slo module with source-authored helpers for the current i32, i64, and f64 numeric families.

The gated helper set is abs_i32, min_i32, max_i32, clamp_i32, square_i32, abs_i64, min_i64, max_i64, clamp_i64, square_i64, abs_f64, min_f64, max_f64, clamp_f64, and square_f64.

The default promotion gate checks the local fixture remains explicit and source-authored, with no std.* runtime calls. The ignored monorepo Slovo std-source gate now also checks repo lib/std/math.slo helper-name alignment.

Explicit Deferrals

No new compiler-known std.* runtime calls, runtime ABI changes, automatic std import/search path, compiler-loaded std source, broad math library, trigonometry/sqrt/pow, f32, unsigned or narrower integer families, generic math, overloads, traits, mixed numeric arithmetic, manifest schema changes, stable ABI/layout/ownership, or beta maturity are included.

exp-31

Release label: exp-31

Release date: 2026-05-19

Release state: released experimental compiler support

Summary

Glagol exp-31 implements Checked F64 To I64 Result Alpha. The compiler now promotes exactly std.num.f64_to_i64_result : (f64) -> (result i64 i32).

The call returns ok value only when the input is finite, exactly integral, and inside the signed i64 range. It returns err 1 for non-finite, fractional, or out-of-range input without trapping for ordinary conversion failure. The implementation executes in the deterministic test runner, formats through the existing formatter, preserves surface/checked lowering snapshots, and lowers directly to LLVM with ordered range checks before fptosi.

The promoted fixture is f64-to-i64-result.slo.

Explicit Deferrals

No unchecked f64 to i64, casts or cast syntax, generic cast_checked, f32, unsigned or narrower integer families, additional numeric conversion families, mixed numeric arithmetic, numeric containers, stable ABI/layout, manifest schema changes, or beta maturity are claimed by this slice.

exp-30

Release label: exp-30

Release date: 2026-05-19

Release state: released experimental contract-gate support

Summary

Glagol exp-30 implements Standard Library Source Layout Alpha on the compiler side as documentation and gates for the Slovo lib/std/ source layout contract. The expected Slovo contract files are std/README.md, std/io.slo, std/string.slo, std/num.slo, std/result.slo, and std/math.slo.

Glagol adds examples/projects/std-layout-local-math/, a normal project-mode fixture that explicitly imports a local math.slo module. This demonstrates that the source pattern remains valid for ordinary explicit imports without claiming automatic standard-library loading.

The ignored promotion gate hermeticum_slovo_std_source_layout_alpha_is_preserved checks the sibling Slovo lib/std/ layout plus source-shape and formatter stability.

Explicit Deferrals

No new source syntax, new compiler-known standard-runtime functions, automatic std/ import/search path, package registry behavior, manifest schema changes, self-hosted replacement for compiler-known std.* calls, runtime ABI/layout claim, or beta maturity is included. Promoted std.* calls continue to execute through compiler/src/std_runtime.rs.

exp-29

Release label: exp-29

Release date: 2026-05-19

Release state: released experimental compiler support

Summary

Glagol exp-29 implements Numeric Struct Fields Alpha. Top-level structs may use direct immutable i64 and finite f64 fields alongside existing direct i32, bool, immutable string, and current enum fields.

The release covers struct constructors, immutable local/parameter/return/call flow, field access returning i64 or f64, and use of accessed fields with existing same-type arithmetic/comparison plus existing print and format helpers where those helpers are already supported.

The promoted fixture is numeric-struct-fields.slo.

Explicit Deferrals

Struct field mutation, nested structs, arrays/vectors/options/results as fields, enum payload widening, numeric containers, f32, unsigned or narrower integer families, mixed numeric arithmetic, implicit conversions, new parse/format APIs, generic structs, methods/traits, stable ABI/layout/ ownership, manifest schema changes, FFI layout claims, and beta maturity remain outside this slice.

exp-28

Release label: exp-28

Release date: 2026-05-19

Release state: released experimental compiler support

Summary

Glagol exp-28 implements String Parse F64 Result Alpha. The compiler now promotes exactly std.string.parse_f64_result : (string) -> (result f64 i32).

The call accepts complete finite ASCII decimal text in the narrow -?digits.digits shape, returns ok value for finite parsed f64 values, and returns err 1 for ordinary parse failure, non-finite text, unsupported leading/trailing characters, or out-of-domain input. The concrete (result f64 i32) family is supported for direct fixture flow and existing result helpers without making result handling generic. Source-authored (ok f64 i32 ...), (err f64 i32 ...), and match over (result f64 i32) remain deferred.

The implementation executes in the deterministic test runner, formats through the existing formatter, preserves surface/checked lowering snapshots, and lowers hosted builds through private runtime helper __glagol_string_parse_f64_result.

The promoted fixture is string-parse-f64-result.slo.

Explicit Deferrals

No generic parse, trap-based std.string.parse_f64, leading +, exponent notation, missing digits around ., locale parsing, Unicode digits, underscores, rich parse errors, stable helper ABI/layout, runtime headers/libraries, generic result support, f64 containers, mixed numeric arithmetic, manifest schema changes, or beta maturity are claimed by this slice.

exp-27

Release label: exp-27

Release date: 2026-05-19

Release state: released experimental compiler support

Summary

Glagol exp-27 implements Checked F64 To I32 Result Alpha. The compiler now promotes exactly std.num.f64_to_i32_result : (f64) -> (result i32 i32).

The call returns ok value only when the input is finite, exactly integral, and inside the signed i32 range. It returns err 1 for non-finite, fractional, or out-of-range input without trapping for ordinary conversion failure. The implementation executes in the deterministic test runner, formats through the existing formatter, preserves surface/checked lowering snapshots, and lowers directly to LLVM with ordered range checks before fptosi.

The promoted fixture is f64-to-i32-result.slo.

Explicit Deferrals

No unchecked f64 to i32, casts or cast syntax, generic cast_checked, f32, unsigned or narrower integer families, additional numeric conversion families, f64 parse, mixed numeric arithmetic, numeric containers, stable ABI/layout, runtime headers/libraries, manifest schema changes, or beta maturity are claimed by this slice.

exp-26

Release label: exp-26

Release date: 2026-05-18

Release state: released experimental compiler support

Summary

Glagol exp-26 implements F64 To String Alpha. The compiler now promotes exactly std.num.f64_to_string : (f64) -> string.

The call returns finite decimal ASCII text for promoted finite f64 inputs. It type checks like other promoted standard-runtime names, executes in the deterministic test runner, formats through the existing formatter, preserves surface/checked lowering snapshots, lowers hosted builds through a private runtime helper, and adds machine diagnostic snapshots for arity, type, context, bool context, standard-name shadowing, and helper-name shadowing. The promoted fixture is f64-to-string.slo.

Explicit Deferrals

No f32, f64 parse, generic format/display/interpolation, locale/base/radix/ grouping/padding/precision controls, stable NaN/infinity text, implicit conversion, stable helper ABI/layout, runtime headers/libraries, manifest schema changes, or beta maturity are claimed by this slice.

exp-25

Release label: exp-25

Release date: 2026-05-18

Release state: released experimental compiler support

Summary

Glagol exp-25 implements String Parse I64 Result Alpha. The compiler now promotes exactly std.string.parse_i64_result : (string) -> (result i64 i32).

The call accepts an entire non-empty signed decimal ASCII string, permits only an optional leading -, rejects leading +, whitespace, underscores, base/radix prefixes, locale forms, Unicode digits, suffixes, and trailing bytes, and returns ok value only inside the signed i64 range. Malformed or out-of-range inputs return err 1 without ordinary traps. The promoted fixture is string-parse-i64-result.slo.

The implementation type checks the call, executes it in the deterministic test runner, formats it through the existing formatter, preserves surface/checked lowering snapshots, lowers hosted builds through a private runtime helper, and adds machine diagnostic snapshots for arity, type, context, bool context, standard-name shadowing, and helper-name shadowing.

Explicit Deferrals

No leading +, whitespace trimming, locale/base/radix/underscore handling, Unicode digit parsing, f64 parse, bool/string/bytes parse, generic parse, rich parse errors, stable helper ABI/layout, runtime headers/libraries, manifest schema changes, or beta maturity are claimed by this slice.

exp-24

Release label: exp-24

Release date: 2026-05-18

Release state: released experimental compiler support

Summary

Glagol exp-24 implements Integer To String Alpha. The compiler now promotes exactly std.num.i32_to_string : (i32) -> string and std.num.i64_to_string : (i64) -> string.

The calls return signed decimal ASCII strings with a leading - for negative values and no leading +. They type check like other promoted standard-runtime names, execute in the deterministic test runner, format through the existing formatter, and lower to private runtime helpers that allocate strings consistently with current string runtime behavior. The promoted fixture is integer-to-string.slo.

Explicit Deferrals

No f64 formatting, parse APIs, locale/base/radix/grouping/padding controls, generic display/format traits, implicit conversions, stable helper ABI/layout, manifest schema changes, or beta maturity are claimed by this slice.

exp-23

Release label: exp-23

Release date: 2026-05-18

Release state: released experimental compiler support

Summary

Glagol exp-23 implements Checked I64-To-I32 Conversion Alpha. The compiler now promotes exactly std.num.i64_to_i32_result : (i64) -> (result i32 i32).

The call returns ok value for signed i64 inputs in the signed i32 range [-2147483648, 2147483647] and err 1 for out-of-range inputs. It type checks like other promoted standard-runtime names, executes in the deterministic test runner, formats through the existing formatter, and lowers directly to LLVM range checks plus truncation into the existing (result i32 i32) representation. The promoted fixture is checked-i64-to-i32-conversion.slo.

Explicit Deferrals

No traps, implicit promotion, unchecked narrowing, cast syntax, additional narrowing conversions, f64 conversions, stable helper ABI/layout, manifest schema changes, or beta maturity are claimed by this slice.

exp-22

Release label: exp-22

Release date: 2026-05-18

Release state: released experimental compiler support

Summary

Glagol exp-22 implements Numeric Widening Conversions Alpha. The compiler now promotes exactly std.num.i32_to_i64 : (i32) -> i64, std.num.i32_to_f64 : (i32) -> f64, and std.num.i64_to_f64 : (i64) -> f64.

The calls type check like other promoted standard-runtime names, execute in the test runner, format through the existing formatter, and lower directly to LLVM sext or sitofp conversion instructions. The promoted fixture is numeric-widening-conversions.slo.

Explicit Deferrals

Implicit promotion, mixed numeric operators, narrowing or checked conversions, cast syntax, f32, unsigned and narrower integer families, char/bytes/decimal, numeric parse/format APIs, stable ABI/layout, manifest schema changes, and beta maturity remain outside this slice.

exp-21

Release label: exp-21

Release date: 2026-05-18

Release state: released experimental compiler support

Summary

Glagol exp-21 implements I64 Numeric Primitive Alpha. The compiler accepts direct i64 type names, explicit signed decimal i64 suffix atoms, immutable i64 locals, parameters, returns, calls, tests, same-type arithmetic and comparison, LLVM i64 lowering, and std.io.print_i64 : (i64) -> unit.

The promoted fixture is i64-numeric-primitive.slo.

Explicit Deferrals

f32, unsigned integers, narrower signed integer widths, char/bytes/decimal, casts, implicit promotion, mixed numeric operators, i64 containers, i64 enum payloads or struct fields, parse_i64, random i64, stable ABI/layout, manifest schema changes, and beta maturity remain outside this slice.

exp-20

Release label: exp-20

Release date: 2026-05-18

Release state: released experimental compiler support

Summary

Glagol exp-20 implements F64 Numeric Primitive Alpha. The language now accepts direct f64 type names and float atoms, checks f64 locals, parameters, returns, calls, top-level tests, arithmetic + - * /, equality, and ordered comparisons when both operands are f64, and emits LLVM double value flow.

The standard runtime promotes exactly std.io.print_f64 : (f64) -> unit, lowering to print_f64(double) in runtime/runtime.c with %.17g\n formatting. The promoted fixture is f64-numeric-primitive.slo.

Explicit Deferrals

f32, i64/u64/u32/u16/u8/i16/i8, char, bytes, decimal, casts, mixed i32/f64 arithmetic or comparison, f64 arrays/vectors/options/results/enum payloads/ struct fields, parse_f64, random floats, stable ABI/layout, manifest schema changes, and beta maturity remain outside this slice.

exp-19

Release label: exp-19

Release date: 2026-05-18

Release state: released experimental compiler support

Summary

Glagol exp-19 implements Primitive Struct Fields Alpha. Top-level structs may use direct bool and immutable string fields alongside existing direct i32 fields and exp-18 direct enum fields.

The slice covers struct construction, field access, immutable struct locals, parameters, returns, calls, top-level tests, lowering inspection, formatter stability, and LLVM aggregate emission for direct primitive fields. The promoted fixture is primitive-struct-fields.slo.

Explicit Deferrals

Arrays, vectors, options, and results containing primitive fields remain unsupported as struct fields. Nested structs, struct field/value mutation, broader string ownership and cleanup promises, generics, methods/traits, stable ABI/layout, manifest schema changes, import/package widening, and beta maturity remain outside this slice.

exp-18

Release label: exp-18

Release date: 2026-05-18

Release state: released experimental compiler support

Summary

Glagol exp-18 implements Enum Struct Fields Alpha. Top-level structs may use current user-defined enum types directly as fields, alongside existing i32 fields. This covers payloadless enums and unary i32 payload enum values in struct construction, field access, immutable locals, parameters, returns, calls, same-enum equality, exhaustive enum matches, top-level tests, and main.

The promoted fixture is enum-struct-fields.slo, with formatter and lowering snapshots plus focused diagnostics for enum containers inside struct fields.

Explicit Deferrals

Arrays, vectors, options, and results containing enums remain unsupported as struct fields and continue to report UnsupportedEnumContainer. Nested struct fields, struct/enum mutation, printing enum values, enum ordering/hash/ reflection/discriminants, broader enum payloads, generics, stable ABI/layout, manifest schema changes, package registry behavior, import aliases/globs/ re-exports, and beta maturity remain outside this slice.

exp-17

Release label: exp-17

Release date: 2026-05-18

Release state: released experimental compiler support

Summary

Glagol exp-17 implements Project/Workspace Enum Imports Alpha. Top-level enum declarations now participate in flat project and local workspace visibility: modules can export enum names and consumers can import those enum types alongside functions and structs.

Imported enums preserve exp-4 payloadless and exp-16 unary i32 payload metadata across module and package boundaries. Imported enum values work in function signatures, immutable locals, calls/returns, qualified constructors, same-enum equality, exhaustive enum matches, main, and tests.

The promoted project fixture is examples/projects/enum-imports/.

Explicit Deferrals

Non-i32 payload types, multiple payloads, record variants, enum containers, enum mutation, enum printing, enum ordering/hash/reflection/discriminants, generics, stable ABI/layout, manifest schema changes, registry/package-manager behavior, and beta maturity remain outside this slice.

exp-16

Release label: exp-16

Release date: 2026-05-18

Release state: released experimental compiler support

Summary

Glagol exp-16 implements Unary I32 Enum Payloads Alpha. User enum declarations may mix payloadless variants with unary i32 payload variants, for example (Value i32). Qualified constructors support (Reading.Missing) and (Reading.Value value), and exhaustive enum matches require no binding for payloadless variants and exactly one immutable arm-local i32 binding for payload variants.

Enum values flow through immutable locals, parameters, returns, calls, tests, main, and same-enum equality. Equality compares tag plus payload for payload enums and tag only for payloadless enums. LLVM and the test runner use a compiler-owned { i32, i32 } tag/payload representation for payload enums; this is not a stable ABI or layout claim.

The promoted fixture is enum-payload-i32.slo, with formatter and lowering snapshots plus focused diagnostics for unsupported payload types, constructor arity/type failures, and match binding requirements.

Explicit Deferrals

Non-i32 payload types, multiple payloads, record variants, generic enums/functions, wildcard/rest/nested enum patterns, pattern guards, enum values in containers, enum mutation, enum printing, enum ordering/hash/ reflection/discriminants, runtime/runtime.c changes, stable ABI/layout, manifest schema changes, and beta maturity remain outside this slice.

exp-15

Release label: exp-15

Release date: 2026-05-18

Release state: released experimental compiler support

Summary

Glagol exp-15 implements Result Helper Standard Names Alpha. It accepts std.result.is_ok, std.result.is_err, std.result.unwrap_ok, and std.result.unwrap_err for exactly (result i32 i32) and (result string i32), mapping them to the existing result observer and unwrap behavior.

Legacy is_ok, is_err, unwrap_ok, and unwrap_err remain supported. No std.result.map, std.result.unwrap_or, std.result.and_then, option standard names, generic results, new result payload families, runtime API, manifest schema change, or beta maturity is claimed.

exp-14

Release label: exp-14

Release date: 2026-05-18

Release state: released experimental conformance alignment

Summary

Glagol exp-14 is the Standard Runtime Conformance Alignment release. It aligns docs, fixtures, formatter/lowering snapshots, promotion inventories, and a focused conformance gate over the already released exp-13 surface plus released exp-8 time/sleep support. It is not beta.

This release adds no source syntax, type forms, standard-library operations, runtime APIs, ABI/layout promises, or manifest schema changes.

Gate

The focused conformance gate, full release gate, and Slovo/Glagol review pass together. The new time/sleep fixture uses only std.time.monotonic_ms and std.time.sleep_ms 0; it does not assert positive-duration timing behavior.

exp-13

Release label: exp-13

Release date: 2026-05-18

Release state: released experimental compiler support

Summary

Glagol exp-13 implements Slovo exp-13 String Parse I32 Result Alpha as released experimental compiler support. It is not beta.

The release promotes exactly one standard-runtime call:

  • std.string.parse_i32_result : (string) -> (result i32 i32)

The operation parses an entire ASCII decimal signed i32 string and returns ok value on success or ordinary parse failure as err 1.

Release State

The fixture, diagnostics, lowering snapshots, and promotion inventories are released experimental compiler-support state after the implementation, diagnostics, lowering-inspector snapshots, runtime/test-runner behavior, promotion gates, release review, and full release gate passed.

No trap-based std.string.parse_i32, float/bool/string/bytes parsing, whitespace/locale/base-prefix/underscore/plus-sign parsing, generic parse API, rich parse errors, Unicode digit parsing, string indexing/slicing, tokenizer/scanner API, stdin line API, manifest schema changes, stable helper ABI/layout, runtime headers/libraries, or beta maturity is claimed.

exp-12

Release label: exp-12

Release date: 2026-05-18

Summary

Glagol exp-12 implements Slovo exp-12 Standard Input Result Alpha as released experimental compiler support. It is not beta.

The release promotes exactly one standard-runtime call:

  • std.io.read_stdin_result : () -> (result string i32)

The release returns ok with remaining stdin text, including ordinary EOF as ok ""; ordinary host/input failure returns err 1.

Release State

exp-12 is released experimental compiler support after the implementation, Slovo fixture alignment, formatter, diagnostics, lowering-inspector snapshots, test-runner, LLVM/runtime, promotion gates, release review, and full release gate passed.

No trap-based std.io.read_stdin, line iteration, prompt APIs, terminal mode, binary stdin, streaming, async stdin, encoding/Unicode promise, stable helper ABI/layout, runtime headers/libraries, manifest schema change, or beta maturity is claimed.

exp-11

Release label: exp-11

Release date: 2026-05-18

Summary

Glagol exp-11 implements Slovo exp-11 Basic Randomness Alpha. It is released experimental compiler support, not beta.

The release promotes exactly one standard-runtime call:

  • std.random.i32 : () -> i32

The call returns a non-negative implementation-owned i32 suitable only for basic command-line programs. If native runtime randomness is unavailable, the runtime trap text must be exactly slovo runtime error: random i32 unavailable.

Release State

exp-11 is released experimental compiler support after Slovo and Glagol fixtures, formatter, diagnostics, lowering-inspector snapshots, test-runner, LLVM/runtime, promotion gates, release review, and release gates passed.

No seed APIs, deterministic public sequences, cryptographic suitability, range/bounds APIs, bytes, strings, UUIDs, artifact-manifest schema changes, stable helper ABI, runtime headers/libraries, or beta maturity are claimed.

exp-10

Release label: exp-10

Release date: 2026-05-18

Summary

Glagol exp-10 implements Slovo exp-10 Result-Based Host Errors Alpha. It is released experimental compiler support, not beta.

The release promotes exactly one new concrete result family, (result string i32), and four additive host calls:

  • std.process.arg_result : (i32) -> (result string i32)
  • std.env.get_result : (string) -> (result string i32)
  • std.fs.read_text_result : (string) -> (result string i32)
  • std.fs.write_text_result : (string string) -> (result i32 i32)

Ordinary host failure returns err 1. The exp-3 calls remain unchanged: argument/read failures still trap, missing environment variables still return "", and writes still return 0 or 1.

Release State

exp-10 is released experimental compiler support after formatter, checker, lowering, diagnostics, test-runner, LLVM/runtime, fixture-alignment, release review, and release gates passed.

exp-9

Release label: exp-9

Release date: 2026-05-18

Summary

Glagol exp-9 is the released experimental hardening slice over the released exp-8 surface. The exp-9 work includes compatibility inventory, migration guide, source-reachable panic audit, benchmark smoke notes, release gate evidence, and deterministic hardening tests in compiler/tests/reliability_hardening.rs.

Controller verification has passed the focused exp-9 hardening test and the full local release gate. Benchmark smoke records structured ToolchainUnavailable for hosted native-build checks because clang was not on PATH in this environment.

exp-9 is hardening-only. It does not add source syntax, type-system behavior, standard-runtime names, runtime capabilities, package features, manifest schema versions, stable ABI/layout promises, public performance thresholds, or beta maturity.

Release State

exp-9 is released experimental compiler support after matching Slovo and Glagol gates.

exp-8

Release label: exp-8

Release date: 2026-05-18

Summary

Glagol exp-8 implements the conservative host time and sleep alpha. It adds exactly two compiler-known standard-runtime calls:

  • std.time.monotonic_ms : () -> i32
  • std.time.sleep_ms : (i32) -> unit

std.time.monotonic_ms returns non-negative process-relative host monotonic elapsed milliseconds, saturating to i32::MAX. std.time.sleep_ms accepts non-negative millisecond durations; 0 is valid and deterministic in the test runner.

Diagnostics And Limits

Negative sleeps trap as slovo runtime error: sleep_ms negative duration. Hosted runtime failure to read monotonic time traps as slovo runtime error: monotonic time unavailable; non-negative sleep failure may trap as slovo runtime error: sleep failed.

exp-8 adds no source syntax, wall-clock/calendar API, time zones, high-resolution clock contract, timers, threads, channels, async behavior, scheduling guarantees, cancellation, or stable helper ABI. The current artifact manifest has no general standard-runtime usage structure, so exp-8 does not add one-off time metadata.

exp-7

Release label: exp-7

Release date: 2026-05-18

Summary

Glagol exp-7 implements the experimental test selection and test-run metadata alpha. glagol test <file.slo|project> --filter <substring> and the legacy single-file glagol --run-tests --filter <substring> <file.slo> route select tests by deterministic, case-sensitive display-name substring matching.

Selected tests execute in existing order. Non-selected discovered tests are skipped before evaluation and counted as skipped. Zero matches is a successful run. Text output and artifact manifests expose total_discovered, selected, passed, failed, skipped, and optional filter metadata.

Diagnostics And Limits

Missing filter values, repeated --filter, and use of --filter outside test mode are command-line diagnostics. The exp-6 C-import test-runner boundary is unchanged: selected tests that reach imported C calls report UnsupportedTestExpression, while non-selected C-import tests are skipped before evaluation.

LSP/editor protocols, debug metadata, source maps, SARIF, watch/daemon behavior, documentation comments, lint categories, benchmark behavior, test tags/groups/retries/parallelism, and new Slovo source syntax are deferred. exp-7 is experimental, not beta.

exp-6

Release label: exp-6

Release date: 2026-05-18

Summary

Glagol exp-6 implements the experimental C FFI scalar imports alpha. It accepts top-level imports such as:

(import_c c_add ((lhs i32) (rhs i32)) -> i32)

Imported C functions use conservative C symbol names, accept only i32 parameters, and return only i32 or builtin unit. Calls to imported C functions are allowed only inside lexical (unsafe ...); calls outside unsafe report UnsafeRequired.

Native builds lower imports to LLVM external declarations and direct calls. glagol build --link-c <path> links explicit local C source inputs, and artifact manifests record foreign_imports plus c_link_inputs.

Diagnostics And Limits

The interpreter-style test runner does not execute imported C calls in exp-6; tests that reach a C import report UnsupportedTestExpression. Raw unsafe heads, including ffi_call, remain unsupported operations.

Pointers, raw allocation/deallocation, raw unsafe head execution, ownership/lifetime rules, C exports, callbacks, headers/libraries, broad linker configuration, and stable ABI/layout are deferred. exp-6 is experimental, not beta.

exp-5

Release label: exp-5

Release date: 2026-05-18

Summary

Glagol exp-5 implements the experimental local packages/workspaces alpha. A workspace slovo.toml can declare [workspace] members, and each member can declare [package] name, version, source_root, entry, plus local [dependencies] entries such as mathlib = { path = "../mathlib" }.

The implemented slice builds a deterministic closed local package graph, accepts package-qualified imports such as (import mathlib.math (add_one)), checks cross-package visibility through existing module export lists, and records the workspace/package graph in artifact manifests.

Diagnostics

The exp-5 diagnostic gate covers missing package manifests or packages, duplicate package names, dependency cycles, workspace/dependency/source-root path escapes, invalid package names, invalid package versions, private cross-package visibility, and dependency key/name mismatches.

Explicit Deferrals

Registries, lockfiles, semver solving, aliases, globs, re-exports, generated code, build scripts, publishing, optional/dev/target dependencies, stable package ABI, and remote dependencies remain outside this experimental slice. exp-5 is not beta and is not package-manager support.

exp-4

Release label: exp-4

Release date: 2026-05-18

Summary

Glagol exp-4 implements experimental payloadless user-defined enum support. Enums can be declared with one or more unique variants, constructed through qualified constructors such as (Signal.Red), compared for equality when both operands have the same enum type, passed through immutable locals, parameters, returns, calls, and top-level tests, and matched exhaustively by variant.

The promoted release fixture is enum-basic.slo, byte-aligned with Slovo's supported fixture. Lowering inspector snapshots cover both surface and checked enum forms, and diagnostics snapshots cover the exp-4 boundary cases.

Explicit Deferrals

Payload variants, generic ADTs, type aliases, traits, methods, unqualified variant constructors, enum mutation, enum printing, enum ordering, enum values inside containers, stable layout, and stable ABI claims remain outside this slice. Unqualified variant constructor calls currently report the generic UnknownFunction diagnostic.

Gates

The exp-4 gate covers Slovo/Glagol fixture equality for enum-basic.slo, formatter and lowering-inspector fixtures, enum LLVM discriminant shape, top-level enum tests, and golden machine diagnostics for supported boundary failures.

exp-3

Release label: exp-3

Release date: 2026-05-17

Summary

Glagol exp-3 implements the conservative standard IO and host-environment slice. It adds compiler-known standard-runtime functions:

  • std.io.eprint : (string) -> unit
  • std.process.argc : () -> i32
  • std.process.arg : (i32) -> string
  • std.env.get : (string) -> string
  • std.fs.read_text : (string) -> string
  • std.fs.write_text : (string string) -> i32

Missing environment variables return an empty string. write_text returns 0 on success and 1 on host failure. eprint writes to stderr without adding a newline. Native programs initialize a private runtime process view from host argc/argv.

Runtime traps are:

  • slovo runtime error: process argument index out of bounds
  • slovo runtime error: file read failed

The runtime helper symbols are private implementation details and are reserved from source/project names. exp-3 does not stabilize host error payloads, file ownership/lifetime behavior, process layout, runtime ABI, or C helper symbols.

Explicit Deferrals

Networking, async IO, binary IO, directory traversal, terminal control, stdin full-read/iteration, time, randomness, result-string host errors, and stable ABI/layout claims remain outside this slice.

Gates

The exp-3 gate covers checker diagnostics, lowering-inspector fixtures, LLVM runtime-call shape, interpreted host behavior where practical, hosted runtime smoke tests, and trap behavior for process arguments and file reads.

exp-2

Release label: exp-2

Release date: 2026-05-17

Summary

Glagol exp-2 implements the first collections alpha slice from the Slovo contract. It adds one concrete growable vector type, (vec i32), plus compiler-known standard-runtime functions:

  • std.vec.i32.empty : () -> (vec i32)
  • std.vec.i32.append : ((vec i32), i32) -> (vec i32)
  • std.vec.i32.len : ((vec i32)) -> i32
  • std.vec.i32.index : ((vec i32), i32) -> i32

append returns a new immutable runtime-owned vector. (vec i32) values can flow through immutable locals, parameters, returns, calls, top-level tests, formatter output, lowering inspection, LLVM, runtime C, and the test runner. Vector equality with = compares (vec i32) values by length and element contents.

Runtime traps are:

  • slovo runtime error: vector allocation failed
  • slovo runtime error: vector index out of bounds

The runtime helper symbols are private implementation details and are reserved from source/project names. exp-2 does not stabilize vector layout, C ABI, allocator behavior, lifetime, destruction, FFI, or ownership semantics.

Explicit Deferrals

Generic vectors, non-i32 elements, vector mutation through var or set, push aliases, nested vectors, vectors inside arrays/structs/options/results, slices, maps, sets, user-visible allocation/deallocation, and stable layout or ABI promises remain outside this slice.

Gates

The exp-2 release gate covers checker diagnostics, formatter stability, lowering-inspector fixtures, LLVM runtime-call shape, top-level test-runner evaluation, hosted runtime smoke tests, vector trap behavior, allocation-trap probing, promotion-gate inventory, and Slovo fixture alignment without editing Slovo fixtures.

exp-1

Release label: exp-1

Release date: 2026-05-17

Summary

Glagol exp-1 implements the first owned-runtime-string slice from the Slovo contract. It adds compiler-known std.string.concat with signature (string, string) -> string, returning an immutable runtime-owned string. Existing string equality, std.string.len, std.io.print_string, string locals, parameters, returns, and calls can use the result.

No legacy string_concat alias is accepted. The runtime helper is private implementation detail, not a stable ABI, layout, allocator, lifetime, or FFI promise.

Gates

The exp-1 release gate covered checker diagnostics, formatter stability, lowering-inspector fixtures, LLVM runtime-call shape, top-level test-runner evaluation, hosted runtime smoke tests, and Slovo fixture alignment.

v2.0.0-beta.1

Release tag: v2.0.0-beta.1

Release date: 2026-05-17

Summary

Glagol v2.0.0-beta.1 is an experimental gate/readiness release over the completed v1.7 toolchain. It does not add new Slovo source syntax or semantics. The release documents the current supported surface and proves the integrated experimental workflow through project scaffolding, fmt --check, test, doc, and hosted build when the host toolchain is available.

Experimental-Supported Surface

  • v1.7 CLI and project tooling, including new, fmt --check, fmt --write, doc, test, and hosted build.
  • Flat local project mode with explicit imports and exports.
  • v1.5 standard-runtime alpha as the basic IO/string subset: std.io.print_i32, std.io.print_string, std.io.print_bool, and std.string.len.
  • Fixed-size immutable i32 arrays as the current collection subset.
  • Existing v1.7 language behavior for strings, structs, option/result values, exact option/result match, and lexical unsafe diagnostics.

Explicit Deferrals

At tag time, the experimental release deferred vectors and growable collections, packages and registries, stable ABI/layout, FFI, executable raw-memory behavior, LSP/watch mode, stable debug metadata, source-map files, direct machine-code output, and self-hosting until future beta work. The later exp-2 slice now implements only the narrow (vec i32) collections alpha.

Release Gates

The experimental gate runs through scripts/release-gate.sh: whitespace checks, cargo fmt --check, full cargo test, and the ignored promotion, binary, and LLVM smoke gates. Full cargo test includes the v1.7 DX gate and the experimental workflow proof.

v1.7

Release tag: v1.7

Release date: 2026-05-17

Summary

Glagol v1.7 is a Developer Experience Hardening release. It adds conservative tooling around the existing Slovo v1.6 language surface and does not introduce new Slovo syntax or semantics.

Tooling Additions

  • glagol new <project-dir> [--name <name>] scaffolds a minimal project with slovo.toml and src/main.slo.
  • glagol fmt --check <file-or-project> verifies canonical formatting without writes and reports FormatCheckFailed when a file would change.
  • glagol fmt --write <file-or-project> writes canonical formatting in place and emits no stdout on success.
  • glagol doc <file-or-project> -o <dir> writes deterministic Markdown documentation to index.md.
  • scripts/release-gate.sh runs the local release gate.

Explicit Deferrals

v1.7 does not add package management, workspaces, nested modules, import aliases, semantic reflection, LSP/watch mode, new formatter semantics beyond existing project syntax, or any new Slovo language behavior.

v1.6

Release tag: v1.6

Release date: 2026-05-17

Summary

Glagol v1.6 is the Memory And Unsafe Design Slice release. It mirrors Slovo's conservative v1.6 contract by hardening the reserved unsafe vocabulary and lexical unsafe diagnostics without promoting executable raw-memory behavior. The v1.1 through v1.5 sections below are historical release records.

The compiler-known unsafe operation heads are:

  • alloc
  • dealloc
  • load
  • store
  • ptr_add
  • unchecked_index
  • reinterpret
  • ffi_call

Diagnostics And Reservation

Outside lexical (unsafe ...), each unsafe head reports UnsafeRequired before user-function lookup. Inside lexical (unsafe ...), each head reports UnsupportedUnsafeOperation.

These names are reserved from user functions, project imports and exports, parameters, locals, structs, and match payload bindings where the current reservation architecture applies. This keeps the vocabulary available for a future contract without allowing accidental shadowing today.

Explicit Deferrals

v1.6 does not introduce raw pointers, allocation/deallocation semantics, pointer load/store, pointer arithmetic, unchecked indexing execution, reinterpretation, FFI calls, stable ABI/layout promises, runtime C symbols, or raw-memory LLVM lowering.

Release Gates

v1.6 verification covers unsafe-required and unsupported-inside-unsafe diagnostic snapshots for every unsafe head, focused reservation tests for local source and project visibility paths, existing lexical unsafe formatter and lowering fixtures, and regressions proving no raw unsafe operation reaches LLVM lowering.

v1.5

Release tag: v1.5

Release date: 2026-05-17

Summary

Glagol v1.5 is the Standard Library Alpha release. It mirrors Slovo's conservative v1.5 contract by promoting stable source-level standard-runtime names for existing runtime behavior without adding modules, imports, packages, new IO breadth, allocation, Unicode length semantics, or ABI promises. The v1.1 through v1.4 sections below are historical release records.

v1.5 promotes:

  • std.io.print_i32
  • std.io.print_string
  • std.io.print_bool
  • std.string.len

These are compiler-known source-level standard-runtime names. They do not require imports, do not name user modules, do not create package dependencies, are not foreign functions, and are not stable C ABI symbols.

Legacy print_i32, print_string, print_bool, and string_len remain compatibility aliases. New examples should prefer the promoted std.* names.

Diagnostics And Deferrals

Unknown or unpromoted std.* calls must produce structured diagnostics, with UnsupportedStandardLibraryCall as the suggested code. Arity and type mismatches use the existing diagnostics where applicable. The exact promoted std.* names are reserved from user function/export shadowing.

v1.5 does not support std.io.print_unit, file IO, environment variables, process arguments, time or clocks, collections, allocation, deallocation, ownership, user-defined standard modules, imports or packages for standard-runtime names, overloading, generic standard-library APIs, Unicode scalar/grapheme/display-width string length, stable C ABI symbols, runtime layout promises, or FFI contracts.

Release Gates

v1.5 verification covers parser/lowerer/checker/formatter support for the promoted std.* calls, aligned examples/standard-runtime.slo and tests/standard-runtime.slo fixtures, lowering-inspector snapshots, runtime smoke tests matching legacy stdout and byte-length behavior, diagnostic snapshots for the v1.5 boundaries, and regressions proving v1.4, v1.3, and v1.2 behavior remains unchanged.

v1.4

Release tag: v1.4

Release date: 2026-05-17

Summary

Glagol v1.4 is the Core Language Expansion release. It mirrors Slovo's conservative source-level match contract for existing option/result values without widening into enums, generics, mutation, vectors, or ABI promises.

  • Promotes match for exactly (option i32) and (result i32 i32) subjects.
  • Requires exhaustive two-arm forms: some and none for options, ok and err for results.
  • Adds immutable i32 payload binding for some, ok, and err; payload bindings are visible only inside the selected arm body.
  • Treats each arm body as an arm-scoped sequential body with one or more expressions; the final expression is the arm value.
  • Types the match expression as the common arm result type.
  • Keeps existing is_some, is_none, is_ok, is_err, unwrap_some, unwrap_ok, and unwrap_err supported, while new examples should prefer match for payload-dependent option/result control flow.

Diagnostics And Formatting

The v1.4 diagnostic boundary requires stable codes for match subject type mismatches, unsupported payload types, non-exhaustive matches, duplicate arms, malformed patterns, arm result type mismatches, binding collisions, unsupported mutation, and unsupported option/result container positions.

The formatter target is a canonical multiline match shape: the head and subject stay on the opening line, each arm starts on its own line, pattern lists stay inline, and body expressions use the normal nested body indentation. The formatter preserves arm order and does not repair malformed arm sets.

Deferred From v1.4

  • User-defined enums or algebraic data types.
  • Generic, non-i32, or nested option/result payload matching beyond the current v1 limits.
  • Options/results inside arrays, structs, or other containers.
  • Mutation of option/result values, struct fields, arrays, or vectors.
  • i64 or broader numeric expansion.
  • General (block ...) expressions outside match arms.
  • Pattern guards, wildcard/rest/catch-all patterns, and destructuring.
  • Result-oriented standard-library error conventions.
  • User-catchable exceptions, ownership, lifetime, layout, or ABI guarantees.

Release Gates

v1.4 verification covers parser/lowerer/checker/formatter support for the promoted match surface, fixture alignment with Slovo examples/supported/option-result-match.slo, formatter idempotence for Slovo examples/formatter/option-result-match.slo, lowering-inspector snapshots, LLVM or runtime smoke tests for arm selection and payload binding, diagnostic snapshots for every required match code, and regressions proving v1.3 project mode and v1.2 runtime values remain unchanged.

v1.3

Release tag: v1.3

Release date: 2026-05-17

Summary

Glagol v1.3 implements Slovo's conservative Project Mode And Modules contract. The release target is local, manifest-based, flat multi-file projects while preserving v1.2 single-file .slo command behavior.

  • Project manifests are named slovo.toml and contain [project] with required name, optional source_root = "src", and optional entry = "main". name is lowercase package-shaped text, source_root must remain under the project root, entry is a flat module identifier, and unknown sections or keys are diagnostics.
  • glagol check, glagol test, and glagol build enter project mode only when given a project root or the slovo.toml file itself.
  • Project source discovery is limited to immediate .slo files under the flat source root.
  • Modules can declare explicit exports, for example (module math (export add_one Point)).
  • Modules can import explicit exported names, for example (import math (add_one Point)).
  • Project diagnostics preserve multi-file source identity and cover manifest failures, missing imports, import cycles, duplicate names, visibility failures, ambiguous imports, and unsupported path/module boundaries.
  • Project artifact manifests record project roots, manifests, source roots, modules, import edges, diagnostics, tests, and build outputs in deterministic order.

Deferred From v1.3

  • Packages, package namespaces, dependencies, remote registries, lockfiles, and workspaces.
  • Import aliases, renames, glob imports, qualified imports, conditional imports, and re-exports.
  • Nested or hierarchical modules.
  • Project formatting, write-in-place formatting, and directory formatting.
  • Path escapes from the project root or source root, generated sources, watch mode, LSP/editor protocols, and incremental builds.
  • Build profiles, target triples, cross-compilation, object/library/header outputs, package artifacts, public ABI promises, and stable debug metadata.

Release Gates

v1.3 verification covers manifest parsing and diagnostics, project check/test/build command behavior, examples/projects/basic fixture alignment, diagnostic-family checks for import/export failures, deterministic module-order checks, cross-file related-span checks, project artifact-manifest snapshots for success and failure paths, and single-file regressions proving v1.2 mode is unchanged.

v1.2

Release tag: v1.2

Release date: 2026-05-17

Summary

Glagol v1.2 implements the Slovo v1.2 Practical Runtime Values contract while preserving the v1.1 single-file CLI/toolchain surface.

  • Immutable string value flow through string let locals, parameters, returns, and calls returning strings.
  • String equality through =.
  • String byte length through temporary compiler/runtime intrinsic string_len.
  • Boolean printing through temporary compiler/runtime intrinsic print_bool.
  • Deterministic runtime trap messages and process exit code 1 for array bounds failures and option/result unwrap failures.

Deferred From v1.2

  • print_unit.
  • Mutable strings, string var locals, and set of string locals.
  • String concatenation, indexing, slicing, ownership, allocation/free, and stable ABI/layout/FFI promises.
  • Strings inside arrays, structs, options, or results.
  • Project mode, imports, package management, and multi-file modules.
  • Any change to the v1.1 CLI/toolchain surface.

Release Gates

Final v1.2 verification includes the existing v1.1 gates plus fixture alignment for string-value-flow.slo and print-bool.slo, formatter idempotence, lowering-inspector snapshots, diagnostic snapshots for deferred forms, runtime smoke tests for strings and traps, and process-exit tests for runtime traps.

v1.1

Release tag: v1.1

Release date: 2026-05-17

Summary

Glagol v1.1 productizes the hosted single-file toolchain without expanding the Slovo v1 language surface.

Canonical Commands

  • Added glagol check <file.slo> for parse/lower/check/backend-support validation with no primary output.
  • Added glagol fmt <file.slo> as the canonical formatter command.
  • Added glagol test <file.slo> as the canonical top-level test runner.
  • Added glagol build <file.slo> -o <binary> for hosted native builds through emitted LLVM IR, runtime/runtime.c, and Clang.
  • Preserved v1 compatibility aliases: default LLVM emission, --emit=llvm, --format, --print-tree, --inspect-lowering=surface, --inspect-lowering=checked, --check-tests, and --run-tests.

Diagnostics, Manifests, And Exit Codes

  • Added --json-diagnostics newline-delimited JSON diagnostics using slovo.diagnostic schema version 1.
  • Added --no-color across canonical commands and compatibility modes.
  • Extended artifact manifests with command modes, diagnostics encoding, no-output check manifests, build output artifacts, and failure manifests when --manifest <path> has been parsed.
  • Implemented the v1.1 exit-code table: 0 success, 1 source/input/test failure, 2 usage error, 3 hosted toolchain failure, 4 internal compiler error, and 5 manifest or output artifact write failure.

Hosted Build

  • glagol build locates Clang through GLAGOL_CLANG or PATH.
  • Missing Clang, missing runtime C, and failed Clang execution are reported as toolchain failures with exit code 3.
  • Native output is staged through a temporary file in the destination directory before replacing the requested -o path on success.
  • Project mode, profiles, cross targets, object/library outputs, custom linker flags, and stable ABI promises remain deferred.

v1

Release tag: v1

Release date: 2026-05-17

Summary

Glagol v1 is the compiler release for the Slovo v1 contract. It keeps the tree-first compiler pipeline visible, expands value flow beyond v0, and hardens the CLI/tooling surface without claiming direct native executable output.

The default successful primary output remains LLVM IR text. Native execution is the explicit external workflow: emitted LLVM IR plus runtime/runtime.c and Clang.

Promoted v1 Value Flow

  • Added immutable struct locals, struct parameters, struct returns, calls returning structs, and stored field access for the promoted Slovo v1 struct slice.
  • Added immutable fixed-size i32 array locals, parameters, returns, calls returning arrays, and runtime-checked dynamic indexing with a runtime trap.
  • Added option/result value flow for the i32 subset, including immutable option/result locals, parameters, calls returning option/result values, tag observation, and explicit payload extraction with trap-based invalid unwraps.
  • Added a narrow string runtime slice: direct string literals lower to borrowed immutable NUL-terminated static storage as LLVM ptr, and the temporary print_string intrinsic prints one string plus a newline through the runtime.
  • Kept full option/result matching, full string value flow, broad runtime printing, raw unsafe memory/FFI operations, stable ABI/layout promises, and stable debug metadata deferred for the v1 scope freeze.

CLI Polish

  • Added --emit=llvm as the explicit spelling for the default LLVM IR emission mode.
  • Added -o <path> to route successful primary output to a file instead of stdout.
  • Added --version, reported from Cargo package metadata.
  • Kept stdin source input deferred until source naming and span behavior are specified.
  • Kept JSON diagnostics and lowering-inspection output deferred until the text contract needs a versioned machine-readable companion.

Slovo v1 Tooling Contract

  • Updated machine diagnostics to the Slovo v1 textual schema with root (diagnostic ...), (schema slovo.diagnostic), and (version 1).
  • Added --manifest <path> to write slovo.artifact-manifest version 1 manifests for successful primary modes and source-diagnostic failures.
  • Added UnsupportedUnitSignatureType diagnostics for user-written unit parameter and return signatures while keeping unit internal to compiler/runtime unit-producing forms.
  • Added golden lowering-inspector snapshots for every promoted v1 fixture in both surface and checked modes.
  • Audited the golden diagnostic matrix and added snapshots for the current unsupported string escape, string literal, and bare string expression boundaries.
  • Kept primary output on stdout or -o and diagnostics on stderr; direct native executable output remains deferred behind the LLVM-plus-Clang workflow.
  • Clarified that artifact manifests are invocation records for textual artifacts, not native executable output.

Formatter And Inspection Stability

  • Added the v1 formatter stability contract for supported comments, nested promoted forms, and long inline forms.
  • Added full-line comment preservation fixtures and structured UnsupportedFormatterComment rejection for unsupported comment positions, including same-line/trailing comments.
  • Added golden --inspect-lowering=surface and --inspect-lowering=checked snapshots for every promoted v1 fixture family, including formatter comments/stability fixtures accepted by inspector mode.
  • Expanded the golden diagnostic matrix for Slovo's required rejected v1 boundaries: struct duplicate/unknown/mutation shapes, non-i32 option/result signature payloads, and array promoted-flow type mismatches.

Release Gates

Final v1 verification covers:

cargo test
cargo fmt --check
cargo test --test promotion_gate -- --ignored
cargo test --test binary_smoke -- --ignored
cargo test --test llvm_smoke -- --ignored
git diff --check

v0

Release tag: v0

Release date: 2026-05-16

Release commit: 4ccd201

Summary

Glagol v0 is the first released compiler for Slovo. It implements the Slovo v0 language contract as a Rust binary CLI that parses, formats, checks, tests, inspects, lowers, and emits LLVM IR for the supported fixture set.

v0 intentionally keeps the compiler surface small and explicit. The default output is LLVM IR text; direct executable output remains deferred.

CLI Surface

Supported v0 commands:

glagol <file.slo>
glagol --format <file.slo>
glagol --print-tree <file.slo>
glagol --inspect-lowering=surface <file.slo>
glagol --inspect-lowering=checked <file.slo>
glagol --check-tests <file.slo>
glagol --run-tests <file.slo>
glagol test <file.slo|project> --filter <substring>
glagol --run-tests --filter <substring> <file.slo>

CLI behavior:

  • success writes primary output to stdout and exits 0
  • source diagnostics write human and machine diagnostics to stderr and exit 1
  • input/read failures exit 1
  • usage errors exit 2
  • --help writes usage information to stderr and exits 0
  • experimental exp-7 test filtering selects by case-sensitive test display-name substring, skips non-selected tests before evaluation, and records total_discovered, selected, passed, failed, skipped, and optional filter metadata in test reports/manifests

Supported Fixture Set

Glagol v0 supports these compiler fixtures:

examples/add.slo
examples/array.slo
examples/if.slo
examples/local-variables.slo
examples/option-result.slo
examples/struct.slo
examples/unsafe.slo
examples/while.slo
tests/top-level-test.slo

These are aligned with Slovo's examples/supported/ and examples/formatter/ fixtures by the ignored monorepo alignment gate.

Compiler Pipeline

The v0 pipeline is:

.slo source
-> tokens
-> S-expression tree
-> AST
-> typed AST
-> LLVM IR text

The compiler keeps source-reachable failures diagnostic-first. Checked source forms should not reach backend panics.

Test Coverage

The v0 suite covers:

  • supported fixture LLVM shape
  • canonical formatter behavior
  • parse-tree printing
  • surface and checked lowering inspection
  • top-level test checking and running
  • structured machine diagnostics
  • source spans and line/column ranges
  • value-producing if
  • locals and assignment
  • while
  • structs
  • arrays and literal indexing
  • option/result constructors
  • lexical unsafe
  • CLI usage and exit codes

Explicit Deferrals

Glagol v0 does not implement:

  • direct executable output
  • -o <path>
  • explicit --emit=llvm
  • stdin source input
  • --version
  • runtime strings
  • dynamic array indexing and runtime bounds traps
  • complete struct, array, and option/result value flow
  • raw memory operations
  • FFI
  • stable ABI/layout promises
  • package management
  • direct machine-code backend

Post-v0 Direction

Post-v0 work starts in .llm/V1_ROADMAP.md and should remain locked to Slovo's SPEC-v1.md.

The recommended first compiler slice is struct value flow after Slovo specifies the v1 contract for struct locals, parameters, returns, and stored field access.