5840 lines
218 KiB
Markdown
5840 lines
218 KiB
Markdown
# Slovo 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 is now documented as an
|
|
experimental integration/readiness release, not as a beta maturity claim.
|
|
|
|
The current release is `1.0.0-beta.4`, published on 2026-05-22. It keeps the
|
|
`1.0.0-beta` language surface, includes the first post-beta tooling/install
|
|
hardening bundle from `1.0.0-beta.1`, and adds the first runtime/resource
|
|
foundation bundle from `1.0.0-beta.2` plus the first standard-library
|
|
stabilization bundle from `1.0.0-beta.3` and the first language-usability
|
|
diagnostics bundle.
|
|
|
|
## Unreleased
|
|
|
|
- Local workspace manifests may now declare
|
|
`[workspace] default_package = "name"` to make build/run entry selection
|
|
deterministic when more than one package has an entry module.
|
|
- Duplicate workspace member paths after normalization are now a dedicated
|
|
`DuplicateWorkspaceMember` diagnostic.
|
|
- Missing `default_package` references are now a dedicated
|
|
`WorkspaceDefaultPackageMissing` diagnostic. A selected default package that
|
|
lacks its configured entry module is diagnosed as
|
|
`WorkspaceDefaultPackageEntryMissing` during build/run.
|
|
- Workspace documentation generated by `glagol doc` now includes a
|
|
deterministic summary of members, packages, and local dependency edges.
|
|
- Generated workspace templates and the canonical local workspace examples now
|
|
declare `default_package = "app"`.
|
|
- `docs/language/PACKAGES.md` now documents the beta local package/workspace
|
|
rules and the explicit no-registry/no-lockfile policy.
|
|
|
|
## 1.0.0-beta.4
|
|
|
|
Release label: `1.0.0-beta.4`
|
|
|
|
Release name: Language Usability Diagnostics Bundle
|
|
|
|
Release date: 2026-05-22
|
|
|
|
Status: released beta diagnostics usability update on the `1.0.0-beta`
|
|
language baseline.
|
|
|
|
`1.0.0-beta.4` improves diagnostics while keeping the accepted source-language
|
|
surface unchanged:
|
|
|
|
- project/workspace build and run entry failures now report entry-specific
|
|
diagnostic codes and spell out the required `(fn main () -> i32 ...)`
|
|
contract
|
|
- non-exhaustive `match` diagnostics now use clearer missing-arm wording and a
|
|
deterministic found-arm list
|
|
- `.llm/BETA_4_LANGUAGE_USABILITY.md` records the beta.4 usability contract
|
|
and deferrals
|
|
|
|
This release does not add new syntax, type aliases, argument-taking `main`,
|
|
`unit`-returning `main`, changed `match` semantics, or stable ABI/layout
|
|
guarantees.
|
|
|
|
## 1.0.0-beta.3
|
|
|
|
Release label: `1.0.0-beta.3`
|
|
|
|
Release name: Standard Library Stabilization Bundle
|
|
|
|
Release date: 2026-05-22
|
|
|
|
Status: released beta standard-library stabilization update on the
|
|
`1.0.0-beta` language baseline.
|
|
|
|
`1.0.0-beta.3` contains the first standard-library stabilization slice:
|
|
|
|
- `docs/language/STDLIB_API.md` is generated from the exported helpers in
|
|
`lib/std/*.slo`
|
|
- `scripts/render-stdlib-api-doc.sh` regenerates that catalog, and
|
|
`scripts/release-gate.sh` fails if the generated catalog is stale
|
|
- `examples/projects/stdlib-composition` adds a realistic command-line project
|
|
that composes explicit `std.fs`, `std.string`, `std.math`, and `std.io`
|
|
imports for file write/read, parse, compute, cleanup, and hosted run output
|
|
- `.llm/BETA_3_STDLIB_STABILIZATION.md` records the beta.3 stabilization
|
|
contract and deferred decisions
|
|
|
|
This release does not freeze stable standard-library APIs. It still defers
|
|
generics, an automatic prelude, stable ABI/layout guarantees, richer host error
|
|
codes, maps/sets, networking, and async behavior.
|
|
|
|
## 1.0.0-beta.2
|
|
|
|
Release label: `1.0.0-beta.2`
|
|
|
|
Release name: Runtime Resource Foundation Bundle
|
|
|
|
Release date: 2026-05-22
|
|
|
|
Status: released beta runtime/resource foundation update on the `1.0.0-beta`
|
|
language baseline.
|
|
|
|
`1.0.0-beta.2` contains the first runtime/resource foundation slice:
|
|
|
|
- `std.fs.open_text_read_result : (string) -> (result i32 i32)` opens a
|
|
read-only text file and returns an opaque positive `i32` handle
|
|
- `std.fs.read_open_text_result : (i32) -> (result string i32)` reads remaining
|
|
text from an open read handle
|
|
- `std.fs.close_result : (i32) -> (result i32 i32)` closes an open handle
|
|
- `std.fs.exists : (string) -> bool`, `std.fs.is_file : (string) -> bool`,
|
|
and `std.fs.is_dir : (string) -> bool` expose narrow filesystem status
|
|
checks
|
|
- `std.fs.remove_file_result : (string) -> (result i32 i32)` removes a file
|
|
and `std.fs.create_dir_result : (string) -> (result i32 i32)` creates one
|
|
directory, both returning `ok 0` or `err 1`
|
|
- `lib/std/fs.slo` wraps those calls with explicit source facades
|
|
`open_text_read_result`, `read_open_text_result`, `close_result`,
|
|
`read_text_via_handle_result`, `close_ok`, status helpers, and narrow
|
|
file/directory mutation helpers
|
|
|
|
This release keeps handles beta-scoped. It does not add writable handles,
|
|
binary IO, directory handles, directory enumeration, recursive filesystem
|
|
operations, process handles, sockets, async IO, platform error codes, rich
|
|
host-error ADTs, or stable handle ABI/layout promises.
|
|
|
|
## 1.0.0-beta.1
|
|
|
|
Release label: `1.0.0-beta.1`
|
|
|
|
Release name: First Post-Beta Tooling Hardening Bundle
|
|
|
|
Release date: 2026-05-22
|
|
|
|
Status: released beta tooling update on the `1.0.0-beta` language baseline.
|
|
|
|
`1.0.0-beta.1` contains tooling hardening only:
|
|
|
|
- `glagol run <file.slo|project>` builds and executes through the hosted native
|
|
toolchain using `.slovo/build` when `-o` is not provided
|
|
- `glagol clean <file.slo|project>` removes generated `.slovo/build` artifacts
|
|
- `glagol new --template binary|library|workspace` scaffolds binary projects,
|
|
library projects, and local package workspaces using existing manifest rules
|
|
- `scripts/install.sh` installs the compiler, `lib/std`, and runtime C input
|
|
under a configurable prefix
|
|
- installed `glagol` discovers `share/slovo/std` and
|
|
`share/slovo/runtime/runtime.c` relative to its executable, with environment
|
|
overrides still available
|
|
- the release gate prints a concise final success line after all checks pass
|
|
|
|
This beta.1 slice does not add source-language syntax, stable ABI/layout
|
|
guarantees, networking, package registry behavior, or a stable standard-library
|
|
freeze.
|
|
|
|
## 1.0.0-beta
|
|
|
|
Release label: `1.0.0-beta`
|
|
|
|
Release name: First Real General-Purpose Beta
|
|
|
|
Release date: 2026-05-21
|
|
|
|
Status: released beta language contract.
|
|
|
|
The normative Slovo-side beta contract is `.llm/V1_0_0_BETA.md`.
|
|
|
|
`1.0.0-beta` includes:
|
|
|
|
- `i32`, `i64`, `u32`, `u64`, `f64`, `bool`, and `string`
|
|
- current fixed immutable arrays, current concrete vector families, structs,
|
|
enums, option/result, and lexical `unsafe` gating
|
|
- explicit `std/*.slo` imports for strings, numerics, IO, CLI, process args,
|
|
env, text FS, time, randomness, result/option, and concrete vectors
|
|
- local packages, workspaces, deterministic dependency handling, generated
|
|
docs, formatter modes, JSON diagnostics, and the paired local release gate
|
|
|
|
`1.0.0-beta` still defers generics, maps/sets, remote registries,
|
|
networking/async, and stable ABI/layout/ownership guarantees.
|
|
|
|
## exp-125 (final experimental precursor scope)
|
|
|
|
Release label: `exp-125`
|
|
|
|
Release name: Unsigned U32 U64 Numeric And Stdlib Breadth Alpha
|
|
|
|
Target date: 2026-05-21
|
|
|
|
Status: completed experimental precursor scope absorbed into `1.0.0-beta`.
|
|
|
|
The normative Slovo-side contract target is
|
|
`.llm/EXP_125_UNSIGNED_U32_U64_NUMERIC_AND_STDLIB_BREADTH_ALPHA.md`.
|
|
|
|
exp-125 broadens the numeric and staged stdlib surface with one connected
|
|
unsigned scope:
|
|
|
|
- direct `u32` and `u64` value flow
|
|
- decimal suffixed literals `42u32` and `42u64`
|
|
- same-type unsigned arithmetic and comparison
|
|
- compiler-known `std.io.print_u32`, `std.io.print_u64`,
|
|
`std.num.u32_to_string`, `std.num.u64_to_string`,
|
|
`std.string.parse_u32_result`, and `std.string.parse_u64_result`
|
|
- source helper parity across `std.result`, `std.option`, `std.string`,
|
|
`std.num`, `std.io`, `std.env`, `std.fs`, `std.process`, and `std.cli`
|
|
|
|
The matching Slovo-side fixtures include
|
|
`examples/supported/u32-numeric-primitive.slo`,
|
|
`examples/supported/u64-numeric-primitive.slo`,
|
|
`examples/supported/unsigned-integer-to-string.slo`,
|
|
`examples/supported/string-parse-u32-result.slo`,
|
|
`examples/supported/string-parse-u64-result.slo`, their formatter mirrors,
|
|
and the widened explicit import fixtures under `examples/projects/std-import-*`.
|
|
|
|
exp-125 itself did not claim beta maturity, implicit numeric promotion, mixed
|
|
signed/unsigned arithmetic, broader cast families, unsigned widths beyond
|
|
`u32`/`u64`, generic numeric helpers, unsigned collections, unsigned enum
|
|
payloads or struct fields, stable ABI/layout/ownership, or released compiler
|
|
support before the sibling Glagol work landed.
|
|
|
|
## exp-124 (released experimental alpha)
|
|
|
|
Release label: `exp-124`
|
|
|
|
Release name: Fixed Array Enum And Struct Elements Alpha
|
|
|
|
Release date: 2026-05-21
|
|
|
|
Status: released experimental alpha language contract, not beta.
|
|
|
|
The normative Slovo-side contract target is
|
|
`.llm/EXP_124_FIXED_ARRAY_ENUM_AND_STRUCT_ELEMENTS_ALPHA.md`.
|
|
|
|
exp-124 broadens the fixed immutable array surface with two connected element
|
|
lanes:
|
|
|
|
- direct known enum elements
|
|
- current known non-recursive struct elements
|
|
|
|
The release promotes immutable locals, parameters, returns, calls returning
|
|
arrays, and checked `i32` indexing over those new element families. It adds
|
|
`examples/supported/array-enum.slo`,
|
|
`examples/formatter/array-enum.slo`,
|
|
`examples/supported/array-struct-elements.slo`, and
|
|
`examples/formatter/array-struct-elements.slo`.
|
|
|
|
exp-124 does not add zero-length arrays, mutable arrays, element mutation,
|
|
array equality, array printing, nested arrays, slices, generics, stable
|
|
ABI/layout/ownership claims, or beta maturity.
|
|
|
|
## exp-123 (released experimental alpha)
|
|
|
|
Release label: `exp-123`
|
|
|
|
Release name: Owned Vector Benchmark Suite Extension And Whitepaper Refresh Alpha
|
|
|
|
Release date: 2026-05-21
|
|
|
|
Status: released experimental alpha documentation/tooling contract, not beta.
|
|
|
|
The normative Slovo-side contract target is
|
|
`.llm/EXP_123_OWNED_VECTOR_BENCHMARK_SUITE_EXTENSION_AND_WHITEPAPER_REFRESH_ALPHA.md`.
|
|
|
|
exp-123 keeps the exp-121 language surface unchanged and refreshes the current
|
|
publication baseline around one connected benchmark/documentation scope:
|
|
|
|
- `docs/SLOVO_WHITEPAPER.md` refreshed from the earlier exp-122 publication
|
|
framing to the current language/tooling state through exp-121
|
|
- benchmark methodology widened from seven kernels to nine:
|
|
`math-loop`, `branch-loop`, `parse-loop`, `array-index-loop`,
|
|
`string-eq-loop`, `array-struct-field-loop`, `enum-struct-payload-loop`,
|
|
`vec-i32-index-loop`, and `vec-string-eq-loop`
|
|
- paired same-machine benchmark refresh targets widened from seven rows to
|
|
nine rows for the controller-owned publication pass
|
|
- local-machine-only wording, no threshold claim, and no cross-machine claim
|
|
retained
|
|
- `docs/README.md`, README release metadata, and spec/roadmap wording aligned
|
|
to the refreshed publication baseline
|
|
|
|
The matching publication artifacts remain `docs/SLOVO_WHITEPAPER.pdf` and
|
|
`WHITEPAPER.pdf`, regenerated after the paired controller-side benchmark data
|
|
refresh and release publication pass.
|
|
|
|
exp-123 does not add new source syntax, type forms, standard-library APIs,
|
|
compiler-known runtime names, optimizer guarantees, benchmark thresholds,
|
|
cross-machine performance claims, stable ABI/layout/ownership claims, or beta
|
|
maturity.
|
|
|
|
## exp-122 (released experimental alpha)
|
|
|
|
Release label: `exp-122`
|
|
|
|
Release name: Composite Data Benchmark Suite Extension And Whitepaper Refresh Alpha
|
|
|
|
Release date: 2026-05-21
|
|
|
|
Status: released experimental alpha documentation/tooling contract, not beta.
|
|
|
|
The normative Slovo-side contract target is
|
|
`.llm/EXP_122_COMPOSITE_DATA_BENCHMARK_SUITE_EXTENSION_AND_WHITEPAPER_REFRESH_ALPHA.md`.
|
|
|
|
exp-122 keeps the exp-121 language surface unchanged and refreshes the current
|
|
publication baseline around one connected benchmark/documentation scope:
|
|
|
|
- `docs/SLOVO_WHITEPAPER.md` refreshed from the earlier exp-119 publication
|
|
framing to the current language/tooling state through exp-121
|
|
- benchmark methodology widened from five kernels to seven:
|
|
`math-loop`, `branch-loop`, `parse-loop`, `array-index-loop`,
|
|
`string-eq-loop`, `array-struct-field-loop`, and
|
|
`enum-struct-payload-loop`
|
|
- paired same-machine benchmark refresh targets widened from five rows to
|
|
seven rows for the controller-owned publication pass
|
|
- local-machine-only wording, no threshold claim, and no cross-machine claim
|
|
retained
|
|
- `docs/README.md`, README release metadata, and spec/roadmap wording aligned
|
|
to the refreshed publication baseline
|
|
|
|
The matching publication artifacts remain `docs/SLOVO_WHITEPAPER.pdf` and
|
|
`WHITEPAPER.pdf`, regenerated after the paired controller-side benchmark data
|
|
refresh and release publication pass.
|
|
|
|
exp-122 does not add new source syntax, type forms, standard-library APIs,
|
|
compiler-known runtime names, optimizer guarantees, benchmark thresholds,
|
|
cross-machine performance claims, stable ABI/layout/ownership claims, or beta
|
|
maturity.
|
|
|
|
## exp-121 (released experimental alpha)
|
|
|
|
Release label: `exp-121`
|
|
|
|
Release name: Non-Recursive Struct Enum Payloads Alpha
|
|
|
|
Release date: 2026-05-21
|
|
|
|
Status: released experimental alpha language contract, not beta.
|
|
|
|
The normative Slovo-side contract target is
|
|
`.llm/EXP_121_NON_RECURSIVE_STRUCT_ENUM_PAYLOADS_ALPHA.md`.
|
|
|
|
exp-121 broadens the enum payload surface with one connected struct-payload
|
|
scope:
|
|
|
|
- unary enum payload variants may use current known non-recursive struct types
|
|
- payload variants in one enum still share the same payload type when payload
|
|
variants are present
|
|
- qualified payload constructors over those struct types
|
|
- immutable enum locals, parameters, returns, calls, tests, and `main`
|
|
- exhaustive `match` with one immutable payload binding
|
|
- existing field access behavior on bound struct payloads, including array
|
|
field access and checked indexing where already promoted by exp-120
|
|
|
|
The matching supported and formatter fixtures are
|
|
`examples/supported/enum-payload-structs.slo` and
|
|
`examples/formatter/enum-payload-structs.slo`.
|
|
|
|
exp-121 does not add enum equality requirements for struct-payload enums,
|
|
direct array/vec/option/result payloads, multiple payload fields,
|
|
recursive/cyclic payloads, mutation, generics, stable ABI/layout/ownership
|
|
claims, or beta maturity.
|
|
|
|
## exp-120 (released experimental alpha)
|
|
|
|
Release label: `exp-120`
|
|
|
|
Release name: Fixed Array Struct Fields Alpha
|
|
|
|
Release date: 2026-05-21
|
|
|
|
Status: released experimental alpha language contract, not beta.
|
|
|
|
The normative Slovo-side contract target is
|
|
`.llm/EXP_120_FIXED_ARRAY_STRUCT_FIELDS_ALPHA.md`.
|
|
|
|
exp-120 broadens the struct-field surface with one connected fixed-array
|
|
scope:
|
|
|
|
- direct struct field declarations over `(array i32 N)`, `(array i64 N)`,
|
|
`(array f64 N)`, `(array bool N)`, and `(array string N)`
|
|
- struct construction from matching fixed-array expressions
|
|
- immutable struct locals initialized from matching struct-valued expressions
|
|
- struct parameters and returns for structs carrying those field types
|
|
- calls returning structs carrying those field types
|
|
- field access returning the declared fixed-array type
|
|
- checked indexing through field access with `i32` expressions only
|
|
|
|
The matching supported and formatter fixtures are
|
|
`examples/supported/array-struct-fields.slo` and
|
|
`examples/formatter/array-struct-fields.slo`.
|
|
|
|
The earlier `array*` fixtures remain valid as the underlying fixed-array
|
|
lanes. The earlier `enum-struct-fields.slo`, `primitive-struct-fields.slo`,
|
|
`numeric-struct-fields.slo`, and `composite-struct-fields.slo` fixtures remain
|
|
valid as narrower or sibling struct-field lanes.
|
|
|
|
exp-120 does not add zero-length arrays, mutable arrays, element mutation,
|
|
field mutation, array equality, array printing, nested arrays, arrays of
|
|
unsupported element kinds, arrays inside unsupported containers, slices,
|
|
generics, stable ABI/layout/ownership claims, or beta maturity.
|
|
|
|
## exp-119 (released experimental alpha)
|
|
|
|
Release label: `exp-119`
|
|
|
|
Release name: Benchmark Suite Extension And Whitepaper Refresh Alpha
|
|
|
|
Release date: 2026-05-21
|
|
|
|
Status: released experimental alpha documentation/tooling contract, not beta.
|
|
|
|
The normative Slovo-side contract target is
|
|
`.llm/EXP_119_BENCHMARK_SUITE_EXTENSION_AND_WHITEPAPER_REFRESH_ALPHA.md`.
|
|
|
|
exp-119 keeps the exp-118 language surface unchanged and refreshes the current
|
|
publication baseline around one connected benchmark/documentation scope:
|
|
|
|
- `docs/SLOVO_WHITEPAPER.md` refreshed from the older exp-59 framing to the
|
|
current language/tooling state through exp-118
|
|
- benchmark methodology widened from three kernels to five:
|
|
`math-loop`, `branch-loop`, `parse-loop`, `array-index-loop`, and
|
|
`string-eq-loop`
|
|
- benchmark result tables widened from three rows to five rows for paired
|
|
same-machine publication refresh
|
|
- local-machine-only wording, no threshold claim, and no cross-machine claim
|
|
retained
|
|
- `docs/README.md`, release metadata, and spec/roadmap wording aligned to the
|
|
refreshed publication baseline
|
|
|
|
The matching publication artifacts remain `docs/SLOVO_WHITEPAPER.pdf` and
|
|
`WHITEPAPER.pdf`, regenerated after the paired controller-side benchmark data
|
|
refresh and release publication pass.
|
|
|
|
exp-119 does not add new source syntax, type forms, standard-library APIs,
|
|
compiler-known runtime names, optimizer guarantees, benchmark thresholds,
|
|
cross-machine performance claims, stable ABI/layout/ownership claims, or beta
|
|
maturity.
|
|
|
|
## exp-118 (released experimental alpha)
|
|
|
|
Release label: `exp-118`
|
|
|
|
Release name: String Fixed Arrays Alpha
|
|
|
|
Release date: 2026-05-21
|
|
|
|
Status: released experimental alpha language contract, not beta.
|
|
|
|
The normative Slovo-side contract target is
|
|
`.llm/EXP_118_STRING_FIXED_ARRAYS_ALPHA.md`.
|
|
|
|
exp-118 broadens the fixed-array surface with one connected string-array
|
|
scope:
|
|
|
|
- fixed array types over `string`
|
|
- positive literal lengths only
|
|
- direct array constructors over `string`
|
|
- immutable array locals initialized from matching array-valued expressions
|
|
- fixed-array parameters and returns over `string`
|
|
- calls returning arrays over `string`
|
|
- checked literal indexing and runtime-checked dynamic indexing
|
|
- `i32` index expressions only
|
|
|
|
The matching supported and formatter fixtures are
|
|
`examples/supported/array-string.slo`,
|
|
`examples/formatter/array-string.slo`,
|
|
`examples/supported/array-string-value-flow.slo`, and
|
|
`examples/formatter/array-string-value-flow.slo`.
|
|
|
|
The earlier `examples/supported/array.slo` and
|
|
`examples/supported/array-value-flow.slo` fixtures remain valid as narrower
|
|
`i32`-only predecessors. The earlier `array-direct-scalars*` fixtures remain
|
|
valid as the direct scalar widening lane from exp-117.
|
|
|
|
exp-118 does not add zero-length arrays, mutable arrays, element mutation,
|
|
array equality, printing arrays, nested arrays, arrays in struct fields,
|
|
arrays of other unsupported element types, slices, generics, stable
|
|
ABI/layout/ownership claims for string elements, or beta maturity.
|
|
|
|
## exp-117 (released experimental alpha)
|
|
|
|
Release label: `exp-117`
|
|
|
|
Release name: Direct Scalar Fixed Arrays Alpha
|
|
|
|
Release date: 2026-05-21
|
|
|
|
Status: released experimental alpha language contract, not beta.
|
|
|
|
The normative Slovo-side contract target is
|
|
`.llm/EXP_117_DIRECT_SCALAR_FIXED_ARRAYS_ALPHA.md`.
|
|
|
|
exp-117 broadens the fixed-array surface with one connected direct-scalar
|
|
scope:
|
|
|
|
- fixed array types over `i32`, `i64`, `f64`, and `bool`
|
|
- positive literal lengths only
|
|
- direct array constructors over those element families
|
|
- immutable array locals initialized from matching array-valued expressions
|
|
- fixed-array parameters and returns over those element families
|
|
- calls returning arrays over those element families
|
|
- checked literal indexing and runtime-checked dynamic indexing
|
|
- `i32` index expressions only
|
|
|
|
The matching supported and formatter fixtures are
|
|
`examples/supported/array-direct-scalars.slo`,
|
|
`examples/formatter/array-direct-scalars.slo`,
|
|
`examples/supported/array-direct-scalars-value-flow.slo`, and
|
|
`examples/formatter/array-direct-scalars-value-flow.slo`.
|
|
|
|
The earlier `examples/supported/array.slo` and
|
|
`examples/supported/array-value-flow.slo` fixtures remain valid as narrower
|
|
`i32`-only predecessors.
|
|
|
|
exp-117 does not add zero-length arrays, mutable arrays, element mutation,
|
|
array equality, printing arrays, nested arrays, arrays in struct fields, string
|
|
arrays, arrays of other unsupported element types, slices, generics, stable
|
|
ABI/layout claims, or beta maturity.
|
|
|
|
## exp-116 (released experimental alpha)
|
|
|
|
Release label: `exp-116`
|
|
|
|
Release name: Direct Scalar And String Enum Payloads Alpha
|
|
|
|
Release date: 2026-05-21
|
|
|
|
Status: released experimental alpha language contract, not beta.
|
|
|
|
The normative Slovo-side contract target is
|
|
`.llm/EXP_116_DIRECT_SCALAR_AND_STRING_ENUM_PAYLOADS_ALPHA.md`.
|
|
|
|
exp-116 broadens the user-defined enum payload surface with one connected
|
|
direct-payload scope:
|
|
|
|
- payloadless variants remain supported
|
|
- unary `(Variant i32)` payload variants remain supported
|
|
- unary direct `(Variant i64)` payload variants
|
|
- unary direct `(Variant f64)` payload variants
|
|
- unary direct `(Variant bool)` payload variants
|
|
- unary direct `(Variant string)` payload variants
|
|
- qualified zero-argument payloadless constructors and qualified one-argument
|
|
payload constructors
|
|
- immutable enum locals, parameters, returns, calls, top-level tests, and
|
|
`main`
|
|
- exhaustive enum `match` with one immutable arm-local payload binding for
|
|
payload variants
|
|
- same-enum equality by tag for payloadless variants and by tag plus payload
|
|
for unary direct payload variants
|
|
|
|
The matching supported and formatter fixtures are
|
|
`examples/supported/enum-payload-direct-scalars.slo` and
|
|
`examples/formatter/enum-payload-direct-scalars.slo`.
|
|
|
|
exp-116 does not add mixed payload kinds inside one enum, multiple payloads,
|
|
record variants, tuple variants beyond one direct payload, vec/array/option/
|
|
result/struct/enum payloads, enum mutation, richer pattern families, generic
|
|
enums, methods, traits, new compiler-known runtime names, manifest schema
|
|
changes, or beta maturity.
|
|
|
|
## exp-115 (released experimental alpha)
|
|
|
|
Release label: `exp-115`
|
|
|
|
Release name: Composite Struct Fields And Nested Structs Alpha
|
|
|
|
Release date: 2026-05-21
|
|
|
|
Status: released experimental alpha language contract, not beta.
|
|
|
|
The normative Slovo-side contract target is
|
|
`.llm/EXP_115_COMPOSITE_STRUCT_FIELDS_AND_NESTED_STRUCTS_ALPHA.md`.
|
|
|
|
exp-115 broadens the struct-field surface with one connected composite-field
|
|
scope:
|
|
|
|
- direct struct fields over `(vec i32)`, `(vec i64)`, `(vec f64)`,
|
|
`(vec bool)`, and `(vec string)`
|
|
- direct struct fields over `(option i32)`, `(option i64)`, `(option f64)`,
|
|
`(option bool)`, and `(option string)`
|
|
- direct struct fields over `(result i32 i32)`, `(result i64 i32)`,
|
|
`(result f64 i32)`, `(result bool i32)`, and `(result string i32)`
|
|
- direct struct fields over current known non-recursive struct types
|
|
- coexistence with the already supported direct scalar, immutable string, and
|
|
current enum field families
|
|
- immutable struct locals, parameters, returns, calls, top-level tests, and
|
|
`main` for structs carrying those fields
|
|
|
|
The matching supported and formatter fixtures are
|
|
`examples/supported/composite-struct-fields.slo` and
|
|
`examples/formatter/composite-struct-fields.slo`.
|
|
|
|
exp-115 does not add arrays as struct fields, mutable arrays, field mutation,
|
|
vector element mutation, option/result payload mutation, enum payload
|
|
mutation, recursive or cyclic struct layouts, new compiler-known runtime
|
|
names, manifest schema changes, or beta maturity.
|
|
|
|
## exp-114 (released experimental alpha)
|
|
|
|
Release label: `exp-114`
|
|
|
|
Release name: Mutable Composite Locals Alpha
|
|
|
|
Release date: 2026-05-21
|
|
|
|
Status: released experimental alpha language contract, not beta.
|
|
|
|
The normative Slovo-side contract target is
|
|
`.llm/EXP_114_MUTABLE_COMPOSITE_LOCALS_ALPHA.md`.
|
|
|
|
exp-114 broadens the local-value surface with one connected mutable-composite
|
|
scope:
|
|
|
|
- same-type mutable whole-value `var` / `set` reassignment for `string`
|
|
- same-type mutable whole-value `var` / `set` reassignment for `(vec i32)`,
|
|
`(vec i64)`, `(vec f64)`, `(vec bool)`, and `(vec string)`
|
|
- same-type mutable whole-value `var` / `set` reassignment for current
|
|
concrete option/result families
|
|
- same-type mutable whole-value `var` / `set` reassignment for current known
|
|
struct values and current enum values
|
|
- ordinary function bodies, top-level tests, and `main`
|
|
|
|
The matching supported and formatter fixtures are
|
|
`examples/supported/composite-locals.slo` and
|
|
`examples/formatter/composite-locals.slo`.
|
|
|
|
exp-114 does not add array mutation or mutable arrays, field mutation, vector
|
|
element mutation, option/result payload mutation, enum payload mutation,
|
|
mixed-type assignment, new compiler-known runtime names, manifest schema
|
|
changes, or beta maturity.
|
|
|
|
## exp-113 (released experimental alpha)
|
|
|
|
Release label: `exp-113`
|
|
|
|
Release name: Mutable Scalar Locals Alpha
|
|
|
|
Release date: 2026-05-21
|
|
|
|
Status: released experimental alpha language contract, not beta.
|
|
|
|
The normative Slovo-side contract target is
|
|
`.llm/EXP_113_MUTABLE_SCALAR_LOCALS_ALPHA.md`.
|
|
|
|
exp-113 broadens the local-value surface with one connected mutable-scalar
|
|
scope:
|
|
|
|
- direct mutable `var` locals declared as `bool`, `i64`, and `f64`
|
|
- same-type `set` reassignment from already promoted scalar expressions for
|
|
those declared local types
|
|
- ordinary function bodies, top-level tests, and `main`
|
|
|
|
The matching supported and formatter fixtures remain
|
|
`examples/supported/local-variables.slo` and
|
|
`examples/formatter/local-variables.slo`, now broadened to include mutable
|
|
`bool`, `i64`, and `f64` local var/set flows alongside the earlier i32 local
|
|
forms and exp-112 immutable bool locals.
|
|
|
|
exp-113 does not add mutable `string` locals, vector mutation, option/result
|
|
mutation, struct or enum mutation, mixed-type assignment, new compiler-known
|
|
runtime names, manifest schema changes, or beta maturity.
|
|
|
|
## exp-112 (released experimental alpha)
|
|
|
|
Release label: `exp-112`
|
|
|
|
Release name: Immutable Bool Locals Alpha
|
|
|
|
Release date: 2026-05-21
|
|
|
|
Status: released experimental alpha language contract, not beta.
|
|
|
|
The normative Slovo-side contract target is
|
|
`.llm/EXP_112_IMMUTABLE_BOOL_LOCALS_ALPHA.md`.
|
|
|
|
exp-112 broadens the local-value surface with one connected immutable-bool
|
|
scope:
|
|
|
|
- direct immutable `let` locals declared as `bool`
|
|
- local initializers from already promoted bool literals, parameters, calls
|
|
returning bool, and `if` expressions returning bool
|
|
- local references in existing predicate, return, call, top-level test, and
|
|
`main` positions
|
|
|
|
The matching supported and formatter fixtures remain
|
|
`examples/supported/local-variables.slo` and
|
|
`examples/formatter/local-variables.slo`, now broadened to include direct
|
|
immutable bool locals alongside the earlier i32 local forms. The current
|
|
`examples/projects/std-import-io/` explicit import fixture also now uses
|
|
direct bool locals in its stdin bool-fallback helper path.
|
|
|
|
exp-112 does not add mutable bool locals, bool assignment, `var bool`, new
|
|
boolean operators, broader local-type widening, new compiler-known runtime
|
|
names, manifest schema changes, or beta maturity.
|
|
|
|
## exp-111 (released experimental alpha)
|
|
|
|
Release label: `exp-111`
|
|
|
|
Release name: Standard IO Stdin Source Helpers Alpha
|
|
|
|
Release date: 2026-05-21
|
|
|
|
Status: released experimental alpha stdlib/source contract, not beta.
|
|
|
|
The normative Slovo-side contract target is
|
|
`.llm/EXP_111_STANDARD_IO_STDIN_SOURCE_HELPERS_ALPHA.md`.
|
|
|
|
exp-111 broadens `std/io.slo` with one connected stdin helper package:
|
|
|
|
- `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 existing zero-returning and value-returning print helper surfaces remain
|
|
in place. All new helpers remain ordinary Slovo source over the already
|
|
promoted `std.io.read_stdin_result`, the released `std.string.parse_*_result`
|
|
helpers, and the exp-109 `std.result.ok_or_none_*` bridge helpers. The
|
|
scope adds no new compiler-known `std.*` names, no generics, and no new
|
|
runtime calls. The matching explicit import fixture
|
|
`examples/projects/std-import-io/` now exercises the expanded stdin helper
|
|
lane structurally instead of assuming a fixed runner stdin payload.
|
|
|
|
exp-111 does not add trap-based `std.io.read_stdin`, line/read-line APIs,
|
|
prompt APIs, terminal mode, binary stdin, streaming stdin, async IO,
|
|
generics, compiler-known `std.*` runtime names beyond the already released
|
|
lane, or beta maturity.
|
|
|
|
## exp-110 (released experimental alpha)
|
|
|
|
Release label: `exp-110`
|
|
|
|
Release name: Standard String, Env, Fs, Process, And Cli Option Helpers Alpha
|
|
|
|
Release date: 2026-05-21
|
|
|
|
Status: released experimental alpha stdlib/source contract, not beta.
|
|
|
|
The normative Slovo-side contract target is
|
|
`.llm/EXP_110_STANDARD_STRING_ENV_FS_PROCESS_AND_CLI_OPTION_HELPERS_ALPHA.md`.
|
|
|
|
exp-110 broadens `std/string.slo`, `std/env.slo`, `std/fs.slo`,
|
|
`std/process.slo`, and `std/cli.slo` with one connected option-helper
|
|
package:
|
|
|
|
- `std.string`: `parse_i32_option`, `parse_i64_option`,
|
|
`parse_f64_option`, `parse_bool_option`
|
|
- `std.env`: `get_option`, `get_i32_option`, `get_i64_option`,
|
|
`get_f64_option`, `get_bool_option`
|
|
- `std.fs`: `read_text_option`, `read_i32_option`, `read_i64_option`,
|
|
`read_f64_option`, `read_bool_option`
|
|
- `std.process`: `arg_option`, `arg_i32_option`, `arg_i64_option`,
|
|
`arg_f64_option`, `arg_bool_option`
|
|
- `std.cli`: `arg_text_option`, `arg_i32_option`, `arg_i64_option`,
|
|
`arg_f64_option`, `arg_bool_option`
|
|
|
|
The existing direct/result/fallback helper surfaces remain in place for all
|
|
five staged modules. All new helpers remain ordinary Slovo source over the
|
|
existing concrete result lanes through the exp-109 `std.result.ok_or_none_*`
|
|
bridge helpers. The scope adds no new compiler-known `std.*` names, no
|
|
generics, no new runtime calls, no stdin helpers, and no vec work.
|
|
|
|
The matching explicit import fixtures,
|
|
`examples/projects/std-import-string/`,
|
|
`examples/projects/std-import-env/`,
|
|
`examples/projects/std-import-fs/`,
|
|
`examples/projects/std-import-process/`, and
|
|
`examples/projects/std-import-cli/`, now deterministically exercise the new
|
|
option helpers alongside the earlier result and fallback lanes.
|
|
|
|
exp-110 does not add generic option/result combinators, automatic or
|
|
compiler-loaded std imports, stable ABI/layout claims, or beta maturity.
|
|
|
|
## exp-109 (released experimental alpha)
|
|
|
|
Release label: `exp-109`
|
|
|
|
Release name: Standard Option And Result Bridge Helpers Alpha
|
|
|
|
Release date: 2026-05-21
|
|
|
|
Status: released experimental alpha stdlib/source contract, not beta.
|
|
|
|
The normative Slovo-side contract target is
|
|
`.llm/EXP_109_STANDARD_OPTION_AND_RESULT_BRIDGE_HELPERS_ALPHA.md`.
|
|
|
|
exp-109 broadens `std/option.slo` and `std/result.slo` with one connected
|
|
bridge-helper package between the current concrete option and result
|
|
families:
|
|
|
|
- `std/option.slo`: `some_or_err_i32`, `some_or_err_i64`,
|
|
`some_or_err_f64`, `some_or_err_bool`, `some_or_err_string`
|
|
- `std/result.slo`: `ok_or_none_i32`, `ok_or_none_i64`,
|
|
`ok_or_none_string`, `ok_or_none_f64`, `ok_or_none_bool`
|
|
|
|
The existing concrete constructor, observer, unwrap, and fallback helpers
|
|
remain in place for both staged modules. All new helpers remain ordinary
|
|
Slovo source. `some_or_err_*` uses the existing raw `is_some`,
|
|
`unwrap_some`, `ok`, and `err` forms to produce `(result <payload> i32)`
|
|
without importing `std.result`. `ok_or_none_*` uses the existing
|
|
`std.result.is_ok`, `std.result.unwrap_ok`, `some`, and `none` forms to
|
|
produce `(option <payload>)` without importing `std.option`.
|
|
|
|
The matching explicit import fixtures,
|
|
`examples/projects/std-import-option/`,
|
|
`examples/workspaces/std-import-option/`, and
|
|
`examples/projects/std-import-result/`, now deterministically exercise the
|
|
new bridge helpers alongside the earlier concrete helper surfaces. The
|
|
project option fixture now passes 26 deterministic tests, the workspace
|
|
option fixture passes 1 deterministic test, and the project result fixture
|
|
passes 18 deterministic tests.
|
|
|
|
exp-109 does not add compiler-known `std.*` names, generic bridge helpers,
|
|
generic `map`/`and_then`/`transpose`/`flatten`, new payload families,
|
|
automatic or compiler-loaded std imports, stable ABI/layout claims, or beta
|
|
maturity.
|
|
|
|
## exp-108 (released experimental alpha)
|
|
|
|
Release label: `exp-108`
|
|
|
|
Release name: Standard Vec String, F64, And Bool Prefix And Suffix Helpers Alpha
|
|
|
|
Release date: 2026-05-21
|
|
|
|
Status: released experimental alpha stdlib/source contract, not beta.
|
|
|
|
The normative Slovo-side contract target is
|
|
`.llm/EXP_108_STANDARD_VEC_STRING_F64_AND_BOOL_PREFIX_AND_SUFFIX_HELPERS_ALPHA.md`.
|
|
|
|
exp-108 broadens `std/vec_string.slo`, `std/vec_f64.slo`, and
|
|
`std/vec_bool.slo` from their released edit baselines with one connected
|
|
immutable prefix/suffix package:
|
|
|
|
- `starts_with`
|
|
- `without_prefix`
|
|
- `ends_with`
|
|
- `without_suffix`
|
|
|
|
The baseline direct wrappers, builder helpers, query helpers, option-query
|
|
helpers, transform helpers, subvec helper, edit helpers, and simple
|
|
real-program helpers remain in place for the three concrete vec families.
|
|
All new helpers remain ordinary Slovo source over the four already released
|
|
runtime calls for each family plus existing helper composition. Empty
|
|
prefixes and suffixes behave as identity boundaries, exact whole-vector
|
|
prefix/suffix matches collapse to `empty`, and mismatched prefixes or
|
|
suffixes leave the input vector unchanged for the corresponding
|
|
`without_prefix` or `without_suffix` call.
|
|
|
|
The matching explicit import fixtures,
|
|
`examples/projects/std-import-vec_string/`,
|
|
`examples/projects/std-import-vec_f64/`, and
|
|
`examples/projects/std-import-vec_bool/`, now deterministically exercise the
|
|
baseline, option-query, prefix/suffix, transform, subvec, edit, and
|
|
real-program helper groups through explicit imports. Each project now passes
|
|
19 deterministic fixture tests.
|
|
|
|
exp-108 does not add compiler-known `std.*` names beyond the already
|
|
released vec-string, vec-f64, and vec-bool runtime families, generics,
|
|
sorting, mapping, filtering, nested/container vecs, mutating/capacity APIs,
|
|
automatic or compiler-loaded std imports, stable ABI/layout claims, or beta
|
|
maturity.
|
|
|
|
## exp-107 (released experimental alpha)
|
|
|
|
Release label: `exp-107`
|
|
|
|
Release name: Standard Vec String, F64, And Bool Edit Helpers Alpha
|
|
|
|
Release date: 2026-05-21
|
|
|
|
Status: released experimental alpha stdlib/source contract, not beta.
|
|
|
|
The normative Slovo-side contract target is
|
|
`.llm/EXP_107_STANDARD_VEC_STRING_F64_AND_BOOL_EDIT_HELPERS_ALPHA.md`.
|
|
|
|
exp-107 broadens `std/vec_string.slo`, `std/vec_f64.slo`, and
|
|
`std/vec_bool.slo` from their released option-query and transform baselines
|
|
with one connected immutable edit package:
|
|
|
|
- `insert_at`
|
|
- `insert_range`
|
|
- `replace_at`
|
|
- `replace_range`
|
|
- `remove_at`
|
|
- `remove_range`
|
|
|
|
The baseline direct wrappers, builder helpers, query helpers, option-query
|
|
helpers, transform helpers, subvec helper, and simple real-program helpers
|
|
remain in place for the three concrete vec families. All new helpers remain
|
|
ordinary Slovo source over the four already released runtime calls for each
|
|
family plus existing helper composition. `insert_at` appends on exact-length
|
|
positions and otherwise leaves invalid negative or past-end positions
|
|
unchanged; `insert_range` behaves the same for whole-vector insertion;
|
|
`replace_at` changes one in-range position or returns the original vector;
|
|
`replace_range` replaces a half-open in-range segment with tail saturation;
|
|
`remove_at` removes one in-range position or returns the original vector;
|
|
and `remove_range` removes a half-open in-range segment with tail saturation.
|
|
|
|
The matching explicit import fixtures,
|
|
`examples/projects/std-import-vec_string/`,
|
|
`examples/projects/std-import-vec_f64/`, and
|
|
`examples/projects/std-import-vec_bool/`, now deterministically exercise the
|
|
baseline, option-query, transform, subvec, edit, and real-program helper
|
|
groups through explicit imports. Each project now passes 15 deterministic
|
|
fixture tests.
|
|
|
|
exp-107 does not add compiler-known `std.*` names beyond the already
|
|
released vec-string, vec-f64, and vec-bool runtime families, generics,
|
|
prefix/suffix helpers, sorting, mapping, filtering, nested/container vecs,
|
|
mutating/capacity APIs, automatic or compiler-loaded std imports, stable
|
|
ABI/layout claims, or beta maturity.
|
|
|
|
## exp-106 (released experimental alpha)
|
|
|
|
Release label: `exp-106`
|
|
|
|
Release name: Standard Vec F64 And Bool Option Query Helpers Alpha
|
|
|
|
Release date: 2026-05-21
|
|
|
|
Status: released experimental alpha stdlib/source contract, not beta.
|
|
|
|
The normative Slovo-side contract target is
|
|
`.llm/EXP_106_STANDARD_VEC_F64_AND_BOOL_OPTION_QUERY_HELPERS_ALPHA.md`.
|
|
|
|
exp-106 broadens `std/vec_f64.slo` and `std/vec_bool.slo` from their
|
|
released transform baselines with one connected option-query package:
|
|
|
|
- `index_option`
|
|
- `first_option`
|
|
- `last_option`
|
|
- `index_of_option`
|
|
- `last_index_of_option`
|
|
|
|
The baseline direct wrappers, builder helpers, query helpers, transform
|
|
helpers, subvec helper, and simple real-program helpers remain in place for
|
|
both concrete vec families. All new helpers remain ordinary Slovo source
|
|
over the four already released runtime calls for each family and the already
|
|
promoted concrete option families they return. `index_option` returns `none`
|
|
for negative and out-of-range positions; `first_option` delegates to
|
|
`index_option values 0`; `last_option` returns `none` for empty vectors and
|
|
`some` of the last element otherwise; `index_of_option` returns the first
|
|
matching position or `none`; and `last_index_of_option` returns the last
|
|
matching position or `none`.
|
|
|
|
The matching explicit import fixtures,
|
|
`examples/projects/std-import-vec_f64/` and
|
|
`examples/projects/std-import-vec_bool/`, now deterministically exercise the
|
|
baseline, option-query, transform, subvec, and real-program helper groups
|
|
through explicit `(import std.vec_f64 (...))` and `(import std.vec_bool
|
|
(...))`. Each project now passes 9 deterministic fixture tests.
|
|
|
|
exp-106 does not add compiler-known `std.*` names beyond the already
|
|
released vec-f64 and vec-bool runtime families, generics, edit helpers,
|
|
nested/container vecs, mutating/capacity APIs, automatic or compiler-loaded
|
|
std imports, stable ABI/layout claims, or beta maturity.
|
|
|
|
## exp-105 (released experimental alpha)
|
|
|
|
Release label: `exp-105`
|
|
|
|
Release name: Standard Vec F64 And Bool Transform Helpers Alpha
|
|
|
|
Release date: 2026-05-21
|
|
|
|
Status: released experimental alpha stdlib/source contract, not beta.
|
|
|
|
The normative Slovo-side contract target is
|
|
`.llm/EXP_105_STANDARD_VEC_F64_AND_BOOL_TRANSFORM_HELPERS_ALPHA.md`.
|
|
|
|
exp-105 broadens `std/vec_f64.slo` and `std/vec_bool.slo` from their
|
|
released baselines with one connected transform-helper package:
|
|
|
|
- `concat`
|
|
- `take`
|
|
- `drop`
|
|
- `reverse`
|
|
- `subvec`
|
|
|
|
The baseline direct wrappers, builder helpers, query helpers, and simple
|
|
real-program helpers remain in place for both concrete vec families. All new
|
|
helpers remain ordinary Slovo source over the four already released runtime
|
|
calls for each family. `take` treats negative counts as zero and saturates
|
|
to the full source vector, `drop` treats negative counts as zero and
|
|
saturates at the source tail, `reverse` returns a copied reverse-order
|
|
vector, and `subvec` returns a copied half-open range or `empty` for
|
|
negative or empty starts.
|
|
|
|
The matching explicit import fixtures,
|
|
`examples/projects/std-import-vec_f64/` and
|
|
`examples/projects/std-import-vec_bool/`, now deterministically exercise the
|
|
baseline, transform, subvec, and real-program helper groups through explicit
|
|
`(import std.vec_f64 (...))` and `(import std.vec_bool (...))`. Each project
|
|
now passes 8 deterministic fixture tests.
|
|
|
|
exp-105 does not add compiler-known `std.*` names beyond the already
|
|
released vec-f64 and vec-bool runtime families, generics, option/result
|
|
helpers, edit helpers, nested/container vecs, mutating/capacity APIs,
|
|
automatic or compiler-loaded std imports, stable ABI/layout claims, or beta
|
|
maturity.
|
|
|
|
## exp-104 (released experimental alpha)
|
|
|
|
Release label: `exp-104`
|
|
|
|
Release name: Standard Vec Bool Baseline Alpha
|
|
|
|
Release date: 2026-05-21
|
|
|
|
Status: released experimental alpha stdlib/source contract, not beta.
|
|
|
|
The normative Slovo-side contract target is
|
|
`.llm/EXP_104_STANDARD_VEC_BOOL_BASELINE_ALPHA.md`.
|
|
|
|
exp-104 stages `std/vec_bool.slo` as the first source-authored `(vec bool)`
|
|
facade over the sibling concrete `std.vec.bool` runtime family.
|
|
|
|
The frozen source helper surface is:
|
|
|
|
- direct wrappers: `empty`, `append`, `len`, `at`
|
|
- builder helpers: `singleton`, `append2`, `append3`, `pair`, `triple`
|
|
- query helpers: `is_empty`, `index_or`, `first_or`, `last_or`
|
|
- simple real-program helpers: `contains`, `count_of`
|
|
|
|
All helpers remain ordinary Slovo source over the four released vec-bool
|
|
runtime calls. `index_or` returns its fallback for negative and out-of-range
|
|
positions, `first_or` delegates to `index_or values 0 fallback`, `last_or`
|
|
returns its fallback for empty vectors and the final element otherwise,
|
|
`contains` returns `true` exactly when some element equals the target, and
|
|
`count_of` returns `0` for empty vectors and counts repeated matches exactly.
|
|
|
|
The matching explicit import fixture,
|
|
`examples/projects/std-import-vec_bool/`, freezes deterministic direct,
|
|
builder, query, and real-program helper coverage through explicit
|
|
`(import std.vec_bool (...))`. The matching supported and formatter fixtures,
|
|
`examples/supported/vec-bool.slo` and `examples/formatter/vec-bool.slo`,
|
|
exercise the intended raw `std.vec.bool.*` runtime surface, append
|
|
immutability, concrete `(vec bool)` flow, and same-family vector equality on
|
|
the Slovo side.
|
|
|
|
exp-104 does not add compiler-known `std.*` names beyond the released vec-bool
|
|
runtime family, generics, option/result helpers, transform/range/edit
|
|
helpers, nested/container vecs, mutating/capacity APIs, automatic or
|
|
compiler-loaded std imports, stable ABI/layout claims, or beta maturity.
|
|
|
|
## exp-103 (released experimental alpha)
|
|
|
|
Release label: `exp-103`
|
|
|
|
Release name: Standard Vec F64 Baseline Alpha
|
|
|
|
Release date: 2026-05-21
|
|
|
|
Status: released experimental alpha stdlib/source contract plus concrete
|
|
vector-family contract. This is experimental maturity and not a beta
|
|
maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_103_STANDARD_VEC_F64_BASELINE_ALPHA.md`.
|
|
|
|
exp-103 adds `std/vec_f64.slo` as the first usable source-authored
|
|
`(vec f64)` facade over the sibling concrete `std.vec.f64` runtime family.
|
|
|
|
The staged source helper surface is:
|
|
|
|
- direct wrappers: `empty`, `append`, `len`, `at`
|
|
- builder helpers: `singleton`, `append2`, `append3`, `pair`, `triple`
|
|
- query helpers: `is_empty`, `index_or`, `first_or`, `last_or`
|
|
- simple real-program helpers: `contains`, `sum`
|
|
|
|
All helpers remain ordinary Slovo source over the four promoted vec-f64
|
|
runtime calls. `index_or` returns its fallback for negative and out-of-range
|
|
positions, `first_or` delegates to `index_or values 0 fallback`, `last_or`
|
|
returns its fallback for empty vectors and the final element otherwise,
|
|
`contains` returns `true` exactly when some element equals the target, and
|
|
`sum` returns `0.0` for empty vectors.
|
|
|
|
The matching explicit import fixture,
|
|
`examples/projects/std-import-vec_f64/`, deterministically exercises the
|
|
direct wrappers, builder helpers, query helpers, and real-program helpers
|
|
through explicit `(import std.vec_f64 (...))`. The matching supported and
|
|
formatter fixtures, `examples/supported/vec-f64.slo` and
|
|
`examples/formatter/vec-f64.slo`, exercise the compiler-known
|
|
`std.vec.f64.*` runtime surface, append immutability, concrete `(vec f64)`
|
|
flow, and same-family vector equality.
|
|
|
|
exp-103 does not add compiler-known `std.*` names beyond the vec-f64 runtime
|
|
family, generics, option-query helpers, transform/range/edit helpers,
|
|
nested/container vecs, automatic or compiler-loaded std imports, stable
|
|
ABI/layout claims, or beta maturity.
|
|
|
|
## exp-102 (released experimental alpha)
|
|
|
|
Release label: `exp-102`
|
|
|
|
Release name: Standard Option Bool And F64 Baseline Alpha
|
|
|
|
Release date: 2026-05-21
|
|
|
|
Status: released experimental alpha source/core-language contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_102_STANDARD_OPTION_BOOL_AND_F64_BASELINE_ALPHA.md`.
|
|
|
|
exp-102 broadens the staged `std/option.slo` helper surface and the current
|
|
core-language option slice from concrete `(option i32)`, `(option i64)`, and
|
|
`(option string)` to those families plus concrete `(option f64)` and
|
|
`(option bool)`.
|
|
|
|
The staged source helper surface is now:
|
|
|
|
- `(option i32)`: `some_i32`, `none_i32`, `is_some_i32`, `is_none_i32`,
|
|
`unwrap_some_i32`, `unwrap_or_i32`
|
|
- `(option i64)`: `some_i64`, `none_i64`, `is_some_i64`, `is_none_i64`,
|
|
`unwrap_some_i64`, `unwrap_or_i64`
|
|
- `(option f64)`: `some_f64`, `none_f64`, `is_some_f64`, `is_none_f64`,
|
|
`unwrap_some_f64`, `unwrap_or_f64`
|
|
- `(option bool)`: `some_bool`, `none_bool`, `is_some_bool`, `is_none_bool`,
|
|
`unwrap_some_bool`, `unwrap_or_bool`
|
|
- `(option string)`: `some_string`, `none_string`, `is_some_string`,
|
|
`is_none_string`, `unwrap_some_string`, `unwrap_or_string`
|
|
|
|
All helpers remain ordinary Slovo source over the already promoted option
|
|
forms, observers, extraction, `if`, parameters, and explicit signatures.
|
|
The release also broadens the supported and formatter `option-result*`
|
|
fixtures so raw option returns, immutable value flow, payload extraction, and
|
|
source-level `match` now cover `(option f64)` and `(option bool)` as well.
|
|
|
|
The matching explicit import fixture,
|
|
`examples/projects/std-import-option/`, now deterministically exercises the
|
|
`i32`, `i64`, `f64`, `bool`, and `string` helper families, with 16 passed
|
|
tests in the explicit project fixture. The matching workspace fixture,
|
|
`examples/workspaces/std-import-option/`, broadens the same staged helper
|
|
surface through the existing explicit workspace source-search lane.
|
|
|
|
exp-102 does not add compiler-known `std.option.*` runtime names, generic
|
|
option helpers, option payload families beyond `i32`, `i64`, `f64`, `bool`,
|
|
and `string`, option equality, option printing, nested/container option
|
|
support, automatic or compiler-loaded std imports, stable ABI/layout claims,
|
|
or beta maturity.
|
|
|
|
## exp-101 (released experimental alpha)
|
|
|
|
Release label: `exp-101`
|
|
|
|
Release name: Standard Vec String Option And Transform Helpers Alpha
|
|
|
|
Release date: 2026-05-21
|
|
|
|
Status: released experimental alpha stdlib/source contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_101_STANDARD_VEC_STRING_OPTION_AND_TRANSFORM_HELPERS_ALPHA.md`.
|
|
|
|
exp-101 broadens `std/vec_string.slo` from the exp-99 baseline with one
|
|
connected helper package:
|
|
|
|
- option-query helpers:
|
|
`index_option`, `first_option`, `last_option`, `index_of_option`,
|
|
`last_index_of_option`
|
|
- transform helpers:
|
|
`concat`, `take`, `drop`, `reverse`, `subvec`
|
|
|
|
The baseline direct wrappers, builder helpers, query helpers, and simple
|
|
real-program helpers remain in place. The new helpers stay ordinary Slovo
|
|
source over the existing `std.vec.string.*` facade operations, string
|
|
equality, integer comparisons, and raw current `(option string)` /
|
|
`(option i32)` forms. The lane stays recursive and immutable with no `var`
|
|
or `set`.
|
|
|
|
The matching explicit import fixture, `examples/projects/std-import-vec_string/`,
|
|
now deterministically exercises the baseline, option-query, transform,
|
|
subvec, and real-program helper groups, with 9 passed tests in the explicit
|
|
project fixture.
|
|
|
|
exp-101 does not add compiler-known `std.*` runtime names, generics, vec
|
|
element families beyond `i32`, `i64`, and `string`, edit helpers,
|
|
prefix/suffix helpers, nested vecs or vecs inside other containers,
|
|
mutating/capacity APIs, stable ABI/layout claims, or beta maturity.
|
|
|
|
## exp-100 (released experimental alpha)
|
|
|
|
Release label: `exp-100`
|
|
|
|
Release name: Standard Option String Baseline Alpha
|
|
|
|
Release date: 2026-05-21
|
|
|
|
Status: released experimental alpha source/core-language contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_100_STANDARD_OPTION_STRING_BASELINE_ALPHA.md`.
|
|
|
|
exp-100 broadens the staged `std/option.slo` helper surface and the current
|
|
core-language option slice from concrete `(option i32)` plus `(option i64)`
|
|
to concrete `(option i32)`, `(option i64)`, and `(option string)`.
|
|
|
|
The staged source helper surface is now:
|
|
|
|
- `(option i32)`: `some_i32`, `none_i32`, `is_some_i32`, `is_none_i32`,
|
|
`unwrap_some_i32`, `unwrap_or_i32`
|
|
- `(option i64)`: `some_i64`, `none_i64`, `is_some_i64`, `is_none_i64`,
|
|
`unwrap_some_i64`, `unwrap_or_i64`
|
|
- `(option string)`: `some_string`, `none_string`, `is_some_string`,
|
|
`is_none_string`, `unwrap_some_string`, `unwrap_or_string`
|
|
|
|
All helpers remain ordinary Slovo source over the already promoted option
|
|
forms, tag observers, extraction, `if`, parameters, and explicit
|
|
signatures. The release also broadens the supported and formatter
|
|
`option-result*` fixtures so raw option returns, immutable value flow,
|
|
payload extraction, and source-level `match` now cover `(option string)` as
|
|
well.
|
|
|
|
The matching explicit import fixture,
|
|
`examples/projects/std-import-option/`, now deterministically exercises the
|
|
`i32`, `i64`, and `string` helper families, with 10 passed tests in the
|
|
explicit project fixture. The matching workspace fixture,
|
|
`examples/workspaces/std-import-option/`, broadens the same staged helper
|
|
surface through the existing explicit workspace source-search lane.
|
|
|
|
exp-100 does not add compiler-known `std.option.*` runtime names, generic
|
|
option helpers, option payload families beyond `i32`, `i64`, and `string`,
|
|
option equality, option printing, nested/container option support, automatic
|
|
or compiler-loaded std imports, stable ABI/layout claims, or beta maturity.
|
|
|
|
## exp-99 (released experimental alpha)
|
|
|
|
Release label: `exp-99`
|
|
|
|
Release name: Standard Vec String Baseline Alpha
|
|
|
|
Release date: 2026-05-21
|
|
|
|
Status: released experimental alpha stdlib/source contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_99_STANDARD_VEC_STRING_BASELINE_ALPHA.md`.
|
|
|
|
exp-99 adds `std/vec_string.slo` as the first usable source-authored
|
|
`(vec string)` facade over the sibling concrete `std.vec.string` runtime
|
|
family. Its public surface is:
|
|
|
|
- direct wrappers: `empty`, `append`, `len`, and `at`
|
|
- builder helpers: `singleton`, `append2`, `append3`, `pair`, and `triple`
|
|
- query helpers: `is_empty`, `index_or`, `first_or`, and `last_or`
|
|
- simple real-program helpers: `contains` and `count_of`
|
|
|
|
The direct wrappers call only `std.vec.string.empty`,
|
|
`std.vec.string.append`, `std.vec.string.len`, and `std.vec.string.index`.
|
|
The remaining helpers are ordinary deterministic Slovo source helpers over
|
|
that direct surface, string equality, integer comparison, and `i32`
|
|
counting. `index_or` returns its fallback for negative and out-of-range
|
|
positions, `first_or` delegates to `index_or values 0 fallback`, `last_or`
|
|
provides a stable empty-vector fallback, `contains` returns `true` exactly
|
|
when any element equals the target, and `count_of` returns `0` for empty
|
|
vectors or absent targets while counting repeated matches exactly.
|
|
|
|
The matching explicit import fixture, `examples/projects/std-import-vec_string/`,
|
|
deterministically exercises the direct facade plus the builder, query,
|
|
contains, and count_of helpers, with 6 passed tests in the explicit project
|
|
fixture. The release also adds `examples/supported/vec-string.slo` with
|
|
matching formatter coverage in `examples/formatter/vec-string.slo` for the raw
|
|
`std.vec.string.*` runtime surface, vector equality, and append immutability.
|
|
|
|
exp-99 does not add generics, vec element families beyond `i32`, `i64`, and
|
|
`string`, option-query helpers, transform/range/edit helpers, nested vecs or
|
|
vecs inside other containers, mutating/capacity APIs, stable ABI/layout
|
|
claims, or beta maturity.
|
|
|
|
## exp-98 (released experimental alpha)
|
|
|
|
Release label: `exp-98`
|
|
|
|
Release name: Standard Vec I64 Edit Helpers Alpha
|
|
|
|
Release date: 2026-05-21
|
|
|
|
Status: released experimental alpha stdlib/source contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_98_STANDARD_VEC_I64_EDIT_HELPERS_ALPHA.md`.
|
|
|
|
exp-98 extends `std/vec_i64.slo` with exactly six new public helpers over
|
|
the existing concrete vec i64 runtime family:
|
|
|
|
- `insert_at`
|
|
- `insert_range`
|
|
- `replace_at`
|
|
- `replace_range`
|
|
- `remove_at`
|
|
- `remove_range`
|
|
|
|
The helper surface stays concrete to `(vec i64)` and remains source-authored
|
|
and compositional over the already released vec_i64 helper surface,
|
|
especially `concat`, `take`, `drop`, and `append`. The full `vec_i64`
|
|
source family stays recursive and immutable: there are no `var` or `set`
|
|
locals in `std/vec_i64.slo`.
|
|
|
|
`insert_at ((values (vec i64)) (position i32) (value i64)) -> (vec i64)`
|
|
inserts before the current element at an in-range `position`, appends at
|
|
`position == len(values)`, and returns `values` unchanged for negative or
|
|
greater-than-length positions. `insert_range ((values (vec i64))
|
|
(position i32) (inserted (vec i64))) -> (vec i64)` follows the same
|
|
position rules while preserving the order of both vectors. `replace_at`
|
|
replaces one in-range element and returns `values` unchanged for negative or
|
|
out-of-range positions. `replace_range ((values (vec i64)) (start i32)
|
|
(end_exclusive i32) (replacement (vec i64))) -> (vec i64)` replaces the
|
|
half-open range `[start, end_exclusive)`, returns `values` unchanged for
|
|
negative, empty, or past-end starts, and replaces the tail when
|
|
`end_exclusive` extends past the source length. `remove_at` removes one
|
|
in-range element and otherwise returns `values` unchanged. `remove_range`
|
|
removes the half-open range `[start, end_exclusive)`, returns `values`
|
|
unchanged for negative, empty, or past-end starts, and removes the tail
|
|
when `end_exclusive` extends past the source length.
|
|
|
|
The matching explicit import fixture, `examples/projects/std-import-vec_i64/`,
|
|
deterministically exercises the new edit helper package alongside the
|
|
earlier builder, query, option-query, transform, subvec, and real-program
|
|
groups, with 15 passed tests in the explicit project fixture.
|
|
|
|
exp-98 does not add generics, new compiler-known `std.*` runtime names,
|
|
mutation/capacity APIs, iterators, sort/map/filter, or beta maturity.
|
|
|
|
## exp-97 (released experimental alpha)
|
|
|
|
Release label: `exp-97`
|
|
|
|
Release name: Standard Vec I64 Transform Helpers Alpha
|
|
|
|
Release date: 2026-05-21
|
|
|
|
Status: released experimental alpha stdlib/source contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_97_STANDARD_VEC_I64_TRANSFORM_HELPERS_ALPHA.md`.
|
|
|
|
exp-97 extends `std/vec_i64.slo` with exactly five new public helpers over
|
|
the existing concrete vec i64 runtime family:
|
|
|
|
- `concat`
|
|
- `take`
|
|
- `drop`
|
|
- `reverse`
|
|
- `subvec`
|
|
|
|
The helper surface stays concrete to `(vec i64)` and remains source-authored
|
|
over the existing `append`, `len`, `at`, and `empty` facade operations only.
|
|
The full `vec_i64` source family stays recursive and immutable: there are no
|
|
`var` or `set` locals in `std/vec_i64.slo`.
|
|
|
|
`concat ((left (vec i64)) (right (vec i64))) -> (vec i64)` preserves the
|
|
order of both inputs and returns a copied left-then-right result. `take`
|
|
treats negative counts as zero and returns the original vector when the
|
|
requested count reaches or exceeds the current length. `drop` treats
|
|
negative counts as zero and returns an empty vector when the requested count
|
|
reaches or exceeds the current length. `reverse` returns a copied vector in
|
|
reverse order. `subvec ((values (vec i64)) (start i32) (end_exclusive i32))
|
|
-> (vec i64)` returns a copied half-open range, returns `(empty)` for
|
|
negative or empty ranges, and returns the remaining tail when
|
|
`end_exclusive` extends past the source length.
|
|
|
|
The matching explicit import fixture, `examples/projects/std-import-vec_i64/`,
|
|
deterministically exercises the new transform helper package alongside the
|
|
earlier direct-wrapper, builder, query, option-query, contains, and sum
|
|
groups, with 9 passed tests in the explicit project fixture.
|
|
|
|
exp-97 does not add insert/replace/remove helpers for `(vec i64)`, generics,
|
|
new compiler-known `std.*` runtime names, mutation/capacity APIs, iterators,
|
|
sort/map/filter, or beta maturity.
|
|
|
|
## exp-96 (released experimental alpha)
|
|
|
|
Release label: `exp-96`
|
|
|
|
Release name: Standard Vec I64 Option Query Helpers Alpha
|
|
|
|
Release date: 2026-05-20
|
|
|
|
Status: released experimental alpha stdlib/source contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_96_STANDARD_VEC_I64_OPTION_QUERY_HELPERS_ALPHA.md`.
|
|
|
|
exp-96 extends `std/vec_i64.slo` with exactly five new public helpers over
|
|
the existing concrete vec i64 runtime family:
|
|
|
|
- `index_option`
|
|
- `first_option`
|
|
- `last_option`
|
|
- `index_of_option`
|
|
- `last_index_of_option`
|
|
|
|
The option-returning helper surface stays concrete to `(option i64)` and
|
|
`(option i32)`. The module stays self-contained and explicit by constructing
|
|
raw current `some` and `none` option values directly instead of importing
|
|
`std.option`.
|
|
|
|
`index_option ((values (vec i64)) (position i32)) -> (option i64)` returns
|
|
`(none i64)` for negative and out-of-range positions and `(some i64 ...)`
|
|
for in-range positions. `first_option` delegates to `index_option values 0`.
|
|
`last_option` returns `(none i64)` for empty vectors and the final element as
|
|
`(some i64 ...)` otherwise. `index_of_option` returns the first matching
|
|
position as `(some i32 ...)` and `(none i32)` when the target is absent.
|
|
`last_index_of_option` returns the last matching position as `(some i32 ...)`
|
|
and `(none i32)` when the target is absent.
|
|
|
|
The full `vec_i64` source family now stays recursive and immutable: there are
|
|
no `var` or `set` locals in `std/vec_i64.slo`. The matching explicit import
|
|
fixture, `examples/projects/std-import-vec_i64/`, deterministically exercises
|
|
the new option-query helper group alongside the earlier direct-wrapper,
|
|
builder, query, contains, and sum groups, with 7 passed tests in the explicit
|
|
project fixture.
|
|
|
|
exp-96 does not add transform/range/edit helpers for `(vec i64)`, generics,
|
|
new compiler-known `std.*` runtime names, mutation/capacity APIs, iterators,
|
|
sort/map/filter, or beta maturity.
|
|
|
|
## exp-95 (released experimental alpha)
|
|
|
|
Release label: `exp-95`
|
|
|
|
Release name: Standard Option I64 Baseline Alpha
|
|
|
|
Release date: 2026-05-20
|
|
|
|
Status: released experimental alpha source/core-language contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_95_STANDARD_OPTION_I64_BASELINE_ALPHA.md`.
|
|
|
|
exp-95 broadens the conservative option slice from only `(option i32)` to
|
|
concrete `(option i32)` plus `(option i64)`.
|
|
|
|
On the staged standard-library side, `std/option.slo` now includes:
|
|
|
|
- constructors: `some_i32`, `none_i32`, `some_i64`, `none_i64`
|
|
- observers: `is_some_i32`, `is_none_i32`, `is_some_i64`, `is_none_i64`
|
|
- extract/fallback helpers: `unwrap_some_i32`, `unwrap_or_i32`,
|
|
`unwrap_some_i64`, and `unwrap_or_i64`
|
|
|
|
On the conservative core-language side, exp-95 broadens immutable option value
|
|
flow, direct constructor returns, tag observation, trap-based payload
|
|
extraction, and source-level `match` to `(option i64)`. The matching Slovo
|
|
fixtures now exercise raw `(option i64)` returns, value flow, payload access,
|
|
and `match`, and the explicit `std.option` import project now exercises both
|
|
the `i32` and `i64` helper families.
|
|
|
|
exp-95 does not add compiler-known `std.*` runtime names, automatic `std`
|
|
imports/search, generic option helpers, option payload families beyond `i32`
|
|
and `i64`, nested/container option support, option equality or printing,
|
|
stable ABI/layout claims, manifest schema changes, or beta maturity.
|
|
|
|
## exp-94 (released experimental alpha)
|
|
|
|
Release label: `exp-94`
|
|
|
|
Release name: Standard Vec I64 Baseline Alpha
|
|
|
|
Release date: 2026-05-20
|
|
|
|
Status: released experimental alpha stdlib/source contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_94_STANDARD_VEC_I64_BASELINE_ALPHA.md`.
|
|
|
|
exp-94 adds `std/vec_i64.slo` as the first usable source-authored `(vec i64)`
|
|
facade over the sibling concrete vec runtime family. Its public surface is:
|
|
|
|
- direct wrappers: `empty`, `append`, `len`, and `at`
|
|
- builder helpers: `singleton`, `append2`, `append3`, `pair`, and `triple`
|
|
- query helpers: `is_empty`, `index_or`, `first_or`, and `last_or`
|
|
- simple real-program helpers: `contains` and `sum`
|
|
|
|
The direct wrappers call only `std.vec.i64.empty`, `std.vec.i64.append`,
|
|
`std.vec.i64.len`, and `std.vec.i64.index`. The remaining helpers are
|
|
ordinary deterministic Slovo source helpers over that direct surface, current
|
|
control flow, integer comparison, equality, and `i64` addition. `index_or`
|
|
returns its fallback for negative and out-of-range positions, `first_or` and
|
|
`last_or` provide stable empty-vector fallbacks, `contains` returns `true`
|
|
exactly when any element equals the target, and `sum` returns `0i64` for empty
|
|
vectors.
|
|
The matching explicit import fixture, `examples/projects/std-import-vec_i64/`,
|
|
deterministically exercises the direct wrappers plus the builder, query,
|
|
contains, and sum helpers, with 6 passed tests in the explicit project
|
|
fixture. The release also adds `examples/supported/vec-i64.slo` with matching
|
|
formatter coverage in `examples/formatter/vec-i64.slo` for the raw
|
|
`std.vec.i64.*` runtime surface, vector equality, and append immutability.
|
|
|
|
exp-94 does not add generic vectors, `vec f64`, `vec string`,
|
|
option/result payload widening, automatic standard-library imports,
|
|
compiler-loaded standard-library source, new compiler-known `std.*` runtime
|
|
names on the Slovo side, transform/range-edit helper families for `(vec i64)`,
|
|
mutating vec APIs, capacity or reserve management, sorting, mapping,
|
|
filtering, iterators, stable ABI/layout/ownership, optimizer guarantees, or
|
|
beta maturity.
|
|
|
|
## exp-93 (released experimental alpha)
|
|
|
|
Release label: `exp-93`
|
|
|
|
Release name: Standard Vec I32 Count-Of Helper Alpha
|
|
|
|
Release date: 2026-05-20
|
|
|
|
Status: released experimental alpha stdlib/source contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_93_STANDARD_VEC_I32_COUNT_OF_HELPER_ALPHA.md`.
|
|
|
|
exp-93 extends `std/vec_i32.slo` with exactly one new public helper over the
|
|
already promoted concrete vec runtime family:
|
|
|
|
- `count_of`
|
|
|
|
This is an ordinary Slovo source function over the existing `len`, `at`,
|
|
equality, and `while` surface; it adds no new runtime calls, compiler
|
|
semantic changes, private recursive helper, or compiler-known `std.*` names.
|
|
`count_of ((values (vec i32)) (target i32)) -> i32` returns the number of
|
|
elements of `values` equal to `target`. It returns `0` for an empty vector
|
|
and when `target` is absent, counts repeated matches exactly, and leaves the
|
|
source vector unchanged. The matching explicit import fixture,
|
|
`examples/projects/std-import-vec_i32/`, deterministically exercises empty,
|
|
repeated-match, single-match, no-match, and unchanged-source cases alongside
|
|
the earlier vec helper groups, with 22 passed tests in the explicit project
|
|
fixture.
|
|
|
|
exp-93 does not add generic collections, vector payload families beyond
|
|
`(vec i32)`, slice/view types, automatic standard-library imports,
|
|
compiler-loaded standard-library source, new compiler-known `std.*` runtime
|
|
names, mutable vec locals, broader vec aggregation or filter families beyond
|
|
the current concrete helper surface, mutating vec APIs, capacity or reserve
|
|
management, sorting, mapping, filtering, iterators, stable
|
|
ABI/layout/ownership, optimizer guarantees, or beta maturity.
|
|
|
|
## exp-92 (released experimental alpha)
|
|
|
|
Release label: `exp-92`
|
|
|
|
Release name: Standard Vec I32 Without-Prefix Helper Alpha
|
|
|
|
Release date: 2026-05-20
|
|
|
|
Status: released experimental alpha stdlib/source contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_92_STANDARD_VEC_I32_WITHOUT_PREFIX_HELPER_ALPHA.md`.
|
|
|
|
exp-92 extends `std/vec_i32.slo` with exactly one new public helper over the
|
|
already promoted concrete vec runtime family:
|
|
|
|
- `without_prefix`
|
|
|
|
This is an ordinary compositional Slovo source function over the existing
|
|
`starts_with`, `drop`, and `len` helpers; it adds no new runtime calls,
|
|
compiler semantic changes, private recursive helper, or compiler-known
|
|
`std.*` names. `without_prefix ((values (vec i32)) (prefix (vec i32))) ->
|
|
(vec i32)` removes a matching leading prefix from `values`. It returns
|
|
`values` unchanged for an empty prefix, a longer prefix, or a mismatched
|
|
prefix, returns `(empty)` when `values` exactly equals `prefix`, and leaves
|
|
both source vectors unchanged. The matching explicit import fixture,
|
|
`examples/projects/std-import-vec_i32/`, deterministically exercises empty,
|
|
exact, shorter matching, longer non-matching, mismatched, and unchanged-source
|
|
prefix cases alongside the earlier vec helper groups, with 21 passed tests in
|
|
the explicit project fixture.
|
|
|
|
exp-92 does not add generic collections, vector payload families beyond
|
|
`(vec i32)`, slice/view types, automatic standard-library imports,
|
|
compiler-loaded standard-library source, new compiler-known `std.*` runtime
|
|
names, mutable vec locals, broader prefix/suffix helper families beyond
|
|
`starts_with`, `without_prefix`, `ends_with`, and `without_suffix`, broader
|
|
copied subvector/range-edit helper families beyond `insert_range`,
|
|
`replace_range`, `remove_range`, `subvec`, `without_prefix`, and
|
|
`without_suffix`, mutating vec APIs, capacity or reserve management,
|
|
sorting, mapping, filtering, iterators, stable ABI/layout/ownership,
|
|
optimizer guarantees, or beta maturity.
|
|
|
|
## exp-91 (released experimental alpha)
|
|
|
|
Release label: `exp-91`
|
|
|
|
Release name: Standard Vec I32 Without-Suffix Helper Alpha
|
|
|
|
Release date: 2026-05-20
|
|
|
|
Status: released experimental alpha stdlib/source contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_91_STANDARD_VEC_I32_WITHOUT_SUFFIX_HELPER_ALPHA.md`.
|
|
|
|
exp-91 extends `std/vec_i32.slo` with exactly one new public helper over the
|
|
already promoted concrete vec runtime family:
|
|
|
|
- `without_suffix`
|
|
|
|
This is an ordinary compositional Slovo source function over the existing
|
|
`ends_with`, `take`, and `len` helpers; it adds no new runtime calls,
|
|
compiler semantic changes, private recursive helper, or compiler-known
|
|
`std.*` names. `without_suffix ((values (vec i32)) (suffix (vec i32))) ->
|
|
(vec i32)` removes a matching trailing suffix from `values`. It returns
|
|
`values` unchanged for an empty suffix, a longer suffix, or a mismatched
|
|
suffix, returns `(empty)` when `values` exactly equals `suffix`, and leaves
|
|
both source vectors unchanged. The matching explicit import fixture,
|
|
`examples/projects/std-import-vec_i32/`, deterministically exercises empty,
|
|
exact, shorter matching, longer non-matching, mismatched, and unchanged-source
|
|
suffix cases alongside the earlier vec helper groups, with 20 passed tests in
|
|
the explicit project fixture.
|
|
|
|
exp-91 does not add generic collections, vector payload families beyond
|
|
`(vec i32)`, slice/view types, automatic standard-library imports,
|
|
compiler-loaded standard-library source, new compiler-known `std.*` runtime
|
|
names, mutable vec locals, broader prefix/suffix helper families beyond
|
|
`starts_with`, `ends_with`, and `without_suffix`, broader copied
|
|
subvector/range-edit helper families beyond `insert_range`, `replace_range`,
|
|
`remove_range`, `subvec`, and `without_suffix`, mutating vec APIs, capacity
|
|
or reserve management, sorting, mapping, filtering, iterators, stable
|
|
ABI/layout/ownership, optimizer guarantees, or beta maturity.
|
|
|
|
## exp-90 (released experimental alpha)
|
|
|
|
Release label: `exp-90`
|
|
|
|
Release name: Standard Vec I32 Ends-With Helper Alpha
|
|
|
|
Release date: 2026-05-20
|
|
|
|
Status: released experimental alpha stdlib/source contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_90_STANDARD_VEC_I32_ENDS_WITH_HELPER_ALPHA.md`.
|
|
|
|
exp-90 extends `std/vec_i32.slo` with exactly one new public helper over the
|
|
already promoted concrete vec runtime family:
|
|
|
|
- `ends_with`
|
|
|
|
This is an ordinary compositional Slovo source function over the existing
|
|
`drop`, `len`, and vec equality helpers; it adds no new runtime calls,
|
|
compiler semantic changes, private recursive helper, or compiler-known
|
|
`std.*` names. `ends_with ((values (vec i32)) (suffix (vec i32))) -> bool`
|
|
returns `true` exactly when `values` ends with all elements of `suffix` in
|
|
order. It returns `true` for an empty suffix, `false` when `len(suffix) >
|
|
len(values)`, `true` for equal vectors and shorter matching suffixes, and
|
|
`false` for mismatched suffixes. The helper leaves both source vectors
|
|
unchanged. The matching explicit import fixture,
|
|
`examples/projects/std-import-vec_i32/`, deterministically exercises empty,
|
|
equal, shorter matching, longer non-matching, mismatched, and unchanged-source
|
|
suffix cases alongside the earlier vec helper groups, with 19 passed tests in
|
|
the explicit project fixture.
|
|
|
|
exp-90 does not add generic collections, vector payload families beyond
|
|
`(vec i32)`, slice/view types, automatic standard-library imports,
|
|
compiler-loaded standard-library source, new compiler-known `std.*` runtime
|
|
names, mutable vec locals, broader prefix/suffix query helpers beyond
|
|
`starts_with` and `ends_with`, broader copied subvector/range-edit helper
|
|
families beyond `insert_range`, `replace_range`, `remove_range`, and
|
|
`subvec`, mutating vec APIs, capacity or reserve management, sorting,
|
|
mapping, filtering, iterators, stable ABI/layout/ownership, optimizer
|
|
guarantees, or beta maturity.
|
|
|
|
## exp-89 (released experimental alpha)
|
|
|
|
Release label: `exp-89`
|
|
|
|
Release name: Standard Vec I32 Starts-With Helper Alpha
|
|
|
|
Release date: 2026-05-20
|
|
|
|
Status: released experimental alpha stdlib/source contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_89_STANDARD_VEC_I32_STARTS_WITH_HELPER_ALPHA.md`.
|
|
|
|
exp-89 extends `std/vec_i32.slo` with exactly one new public helper over the
|
|
already promoted concrete vec runtime family:
|
|
|
|
- `starts_with`
|
|
|
|
This is an ordinary compositional Slovo source function over the existing
|
|
`take`, `len`, and vec equality helpers; it adds no new runtime calls,
|
|
compiler semantic changes, private recursive helper, or compiler-known
|
|
`std.*` names. `starts_with ((values (vec i32)) (prefix (vec i32))) -> bool`
|
|
returns `true` exactly when `values` begins with all elements of `prefix` in
|
|
order. It returns `true` for an empty prefix, `false` when `len(prefix) >
|
|
len(values)`, `true` for equal vectors and shorter matching prefixes, and
|
|
`false` for mismatched prefixes. The helper leaves both source vectors
|
|
unchanged. The matching explicit import fixture,
|
|
`examples/projects/std-import-vec_i32/`, deterministically exercises empty,
|
|
equal, shorter matching, longer non-matching, mismatched, and unchanged-source
|
|
cases alongside the earlier vec helper groups, with 18 passed tests in the
|
|
explicit project fixture.
|
|
|
|
exp-89 does not add generic collections, vector payload families beyond
|
|
`(vec i32)`, slice/view types, automatic standard-library imports,
|
|
compiler-loaded standard-library source, new compiler-known `std.*` runtime
|
|
names, mutable vec locals, broader prefix/suffix query helpers beyond
|
|
`starts_with`, broader copied subvector/range-edit helper families beyond
|
|
`insert_range`, `replace_range`, `remove_range`, and `subvec`, mutating vec
|
|
APIs, capacity or reserve management, sorting, mapping, filtering,
|
|
iterators, stable ABI/layout/ownership, optimizer guarantees, or beta
|
|
maturity.
|
|
|
|
## exp-88 (released experimental alpha)
|
|
|
|
Release label: `exp-88`
|
|
|
|
Release name: Standard Vec I32 Replace Range Helper Alpha
|
|
|
|
Release date: 2026-05-20
|
|
|
|
Status: released experimental alpha stdlib/source contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_88_STANDARD_VEC_I32_REPLACE_RANGE_HELPER_ALPHA.md`.
|
|
|
|
exp-88 extends `std/vec_i32.slo` with exactly one new public helper over the
|
|
already promoted concrete vec runtime family:
|
|
|
|
- `replace_range`
|
|
|
|
This is an ordinary compositional Slovo source function over the existing
|
|
`take`, `drop`, and `concat` vec helpers; it adds no new runtime calls,
|
|
compiler semantic changes, private recursive helper, or compiler-known
|
|
`std.*` names. `replace_range ((values (vec i32)) (start i32)
|
|
(end_exclusive i32) (replacement (vec i32))) -> (vec i32)` replaces the
|
|
half-open range `[start, end_exclusive)` with all of `replacement` when the
|
|
start is valid. If `start < 0`, `end_exclusive <= start`, or
|
|
`start >= len(values)`, it returns `values` unchanged. If
|
|
`end_exclusive >= len(values)`, it replaces the tail from `start`. The
|
|
helper preserves prefix order, then replacement order, then surviving suffix
|
|
order, and does not mutate either source vector. The matching explicit
|
|
import fixture, `examples/projects/std-import-vec_i32/`, deterministically
|
|
exercises middle replacement, tail replacement, unchanged invalid-range,
|
|
unchanged-source-vector, unchanged-replacement-vector, and preserved-order
|
|
cases alongside the earlier vec helper groups, with 17 passed tests in the
|
|
explicit project fixture.
|
|
|
|
exp-88 does not add generic collections, vector payload families beyond
|
|
`(vec i32)`, slice/view types, automatic standard-library imports,
|
|
compiler-loaded standard-library source, new compiler-known `std.*` runtime
|
|
names, mutable vec locals, broader copied subvector/range-edit helper
|
|
families beyond `insert_range`, `replace_range`, `remove_range`, and
|
|
`subvec`, public insert/remove/edit families beyond `insert_range`,
|
|
`replace_range`, `remove_range`, `subvec`, `insert_at`, `replace_at`, and
|
|
`remove_at`, mutating vec APIs, capacity or reserve management, sorting,
|
|
mapping, filtering, iterators, stable ABI/layout/ownership, optimizer
|
|
guarantees, or beta maturity.
|
|
|
|
## exp-87 (released experimental alpha)
|
|
|
|
Release label: `exp-87`
|
|
|
|
Release name: Standard Vec I32 Insert Range Helper Alpha
|
|
|
|
Release date: 2026-05-20
|
|
|
|
Status: released experimental alpha stdlib/source contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_87_STANDARD_VEC_I32_INSERT_RANGE_HELPER_ALPHA.md`.
|
|
|
|
exp-87 extends `std/vec_i32.slo` with exactly one new public helper over the
|
|
already promoted concrete vec runtime family:
|
|
|
|
- `insert_range`
|
|
|
|
This is an ordinary compositional Slovo source function over the existing
|
|
`take`, `drop`, and `concat` vec helpers; it adds no new runtime calls,
|
|
compiler semantic changes, private recursive helper, or compiler-known
|
|
`std.*` names. `insert_range ((values (vec i32)) (position i32)
|
|
(inserted (vec i32))) -> (vec i32)` returns a new vector when `position` is
|
|
valid: if `0 <= position < len(values)`, it inserts all of `inserted` before
|
|
the current element at `position`, and if `position == len(values)`, it
|
|
appends `inserted` at the end. The result length is then
|
|
`len(values) + len(inserted)`. If `position < 0` or `position > len(values)`,
|
|
it returns `values` unchanged. The helper preserves the order of both
|
|
vectors and does not mutate either source vector. The matching explicit
|
|
import fixture, `examples/projects/std-import-vec_i32/`, deterministically
|
|
exercises middle insertion, append-at-end insertion, negative-position,
|
|
out-of-range-position, and unchanged-source-vector cases alongside the
|
|
earlier vec helper groups.
|
|
|
|
exp-87 does not add generic collections, vector payload families beyond
|
|
`(vec i32)`, slice/view types, automatic standard-library imports,
|
|
compiler-loaded standard-library source, new compiler-known `std.*` runtime
|
|
names, mutable vec locals, broader copied subvector/range-edit helper
|
|
families beyond `insert_range`, `remove_range`, and `subvec`, public
|
|
insert/remove/edit families beyond `insert_range`, `remove_range`, `subvec`,
|
|
`insert_at`, `replace_at`, and `remove_at`, mutating vec APIs, capacity or
|
|
reserve management, sorting, mapping, filtering, iterators, stable
|
|
ABI/layout/ownership, optimizer guarantees, or beta maturity.
|
|
|
|
## exp-86 (released experimental alpha)
|
|
|
|
Release label: `exp-86`
|
|
|
|
Release name: Standard Vec I32 Remove Range Helper Alpha
|
|
|
|
Release date: 2026-05-20
|
|
|
|
Status: released experimental alpha stdlib/source contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_86_STANDARD_VEC_I32_REMOVE_RANGE_HELPER_ALPHA.md`.
|
|
|
|
exp-86 extends `std/vec_i32.slo` with exactly one new public helper over the
|
|
already promoted concrete vec runtime family:
|
|
|
|
- `remove_range`
|
|
|
|
This is an ordinary compositional Slovo source function over the existing
|
|
`take`, `drop`, and `concat` vec helpers; it adds no new runtime calls,
|
|
compiler semantic changes, private recursive helper, or compiler-known
|
|
`std.*` names. `remove_range ((values (vec i32)) (start i32)
|
|
(end_exclusive i32)) -> (vec i32)` removes the half-open range
|
|
`[start, end_exclusive)` from `values` while preserving the order of the
|
|
remaining elements. If `start < 0`, `end_exclusive <= start`, or
|
|
`start >= len(values)`, it returns `values` unchanged. If
|
|
`end_exclusive >= len(values)`, it removes the tail from `start`. The helper
|
|
leaves the source vector unchanged. The matching explicit import fixture,
|
|
`examples/projects/std-import-vec_i32/`, deterministically exercises
|
|
middle-range removal, tail removal, `end_exclusive <= start`,
|
|
out-of-range-start, negative-start, and unchanged-source cases alongside the
|
|
earlier vec helper groups.
|
|
|
|
exp-86 does not add generic collections, vector payload families beyond
|
|
`(vec i32)`, slice/view types, automatic standard-library imports,
|
|
compiler-loaded standard-library source, new compiler-known `std.*` runtime
|
|
names, mutable vec locals, broader subvector/range-removal helper families
|
|
beyond `remove_range` and `subvec`, public insert/remove/edit families beyond
|
|
`remove_range`, `subvec`, `insert_at`, `replace_at`, and `remove_at`,
|
|
mutating vec APIs, capacity or reserve management, sorting, mapping,
|
|
filtering, iterators, stable ABI/layout/ownership, optimizer guarantees, or
|
|
beta maturity.
|
|
|
|
## exp-85 (released experimental alpha)
|
|
|
|
Release label: `exp-85`
|
|
|
|
Release name: Standard Vec I32 Subvec Helper Alpha
|
|
|
|
Release date: 2026-05-20
|
|
|
|
Status: released experimental alpha stdlib/source contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_85_STANDARD_VEC_I32_SUBVEC_HELPER_ALPHA.md`.
|
|
|
|
exp-85 extends `std/vec_i32.slo` with exactly one new public helper over the
|
|
already promoted concrete vec runtime family:
|
|
|
|
- `subvec`
|
|
|
|
This is an ordinary compositional Slovo source function over the existing
|
|
`take` and `drop` vec helpers; it adds no new runtime calls, compiler
|
|
semantic changes, private recursive helper, or compiler-known `std.*` names.
|
|
`subvec ((values (vec i32)) (start i32) (end_exclusive i32)) -> (vec i32)`
|
|
returns a copied contiguous subvector `[start, end_exclusive)`. If
|
|
`start < 0`, `end_exclusive <= start`, or `start >= len(values)`, it returns
|
|
`(empty)`. If `end_exclusive > len(values)`, it returns the remaining tail
|
|
from `start`. The helper preserves source order, leaves the source vector
|
|
unchanged, and remains an ordinary copied vec helper rather than a slice/view
|
|
type. The matching explicit import fixture,
|
|
`examples/projects/std-import-vec_i32/`, deterministically exercises
|
|
middle-range, tail-truncation, empty-range, out-of-range, negative-start,
|
|
and unchanged-source cases alongside the earlier vec helper groups.
|
|
|
|
exp-85 does not add generic collections, vector payload families beyond
|
|
`(vec i32)`, slice/view types, automatic standard-library imports,
|
|
compiler-loaded standard-library source, new compiler-known `std.*` runtime
|
|
names, mutable vec locals, broader copied subvector/window helpers beyond
|
|
`subvec`, public insert/remove/edit families beyond `subvec`, `insert_at`,
|
|
`replace_at`, and `remove_at`, mutating vec APIs, capacity or reserve
|
|
management, sorting, mapping, filtering, iterators, stable
|
|
ABI/layout/ownership, optimizer guarantees, or beta maturity.
|
|
|
|
## exp-84 (released experimental alpha)
|
|
|
|
Release label: `exp-84`
|
|
|
|
Release name: Standard Vec I32 Insert Helper Alpha
|
|
|
|
Release date: 2026-05-20
|
|
|
|
Status: released experimental alpha stdlib/source contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_84_STANDARD_VEC_I32_INSERT_HELPER_ALPHA.md`.
|
|
|
|
exp-84 extends `std/vec_i32.slo` with exactly one new public helper over the
|
|
already promoted concrete vec runtime family:
|
|
|
|
- `insert_at`
|
|
|
|
This is an ordinary compositional Slovo source function over the existing
|
|
`append`, `take`, `drop`, and `concat` vec helpers; it adds no new runtime
|
|
calls, compiler semantic changes, private recursive helper, or compiler-known
|
|
`std.*` names. `insert_at ((values (vec i32)) (position i32) (value i32)) ->
|
|
(vec i32)` returns a new vector when `position` is valid: if
|
|
`0 <= position < len(values)`, it inserts `value` before the current element
|
|
at `position`, and if `position == len(values)`, it appends `value` at the
|
|
end. The result length is then `len(values) + 1`. If `position < 0` or
|
|
`position > len(values)`, it returns `values` unchanged. The helper does not
|
|
mutate the source vector. The matching explicit import fixture,
|
|
`examples/projects/std-import-vec_i32/`, deterministically exercises
|
|
middle-insert, append-at-end, negative, and out-of-range insertion cases
|
|
alongside the earlier vec helper groups.
|
|
|
|
exp-84 does not add generic collections, vector payload families beyond
|
|
`(vec i32)`, slice types, automatic standard-library imports,
|
|
compiler-loaded standard-library source, new compiler-known `std.*` runtime
|
|
names, mutable vec locals, public insert/remove/edit families beyond
|
|
`insert_at`, `replace_at`, and `remove_at`, mutating vec APIs, capacity or
|
|
reserve management, sorting, mapping, filtering, iterators, stable
|
|
ABI/layout/ownership, optimizer guarantees, or beta maturity.
|
|
|
|
## exp-83 (released experimental alpha)
|
|
|
|
Release label: `exp-83`
|
|
|
|
Release name: Standard Vec I32 Remove Helper Alpha
|
|
|
|
Release date: 2026-05-20
|
|
|
|
Status: released experimental alpha stdlib/source contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_83_STANDARD_VEC_I32_REMOVE_HELPER_ALPHA.md`.
|
|
|
|
exp-83 extends `std/vec_i32.slo` with exactly one new public helper over the
|
|
already promoted concrete vec runtime family:
|
|
|
|
- `remove_at`
|
|
|
|
This is an ordinary compositional Slovo source function over the existing
|
|
`take`, `drop`, and `concat` vec helpers; it adds no new runtime calls,
|
|
compiler semantic changes, private recursive helper, or compiler-known
|
|
`std.*` names. `remove_at ((values (vec i32)) (position i32)) -> (vec i32)`
|
|
returns a new vector with the element at `position` removed when
|
|
`0 <= position < len(values)`, preserving the order of the remaining
|
|
elements. The result length is then `len(values) - 1`. If `position < 0` or
|
|
`position >= len(values)`, it returns `values` unchanged. The helper does not
|
|
mutate the source vector. The matching explicit import fixture,
|
|
`examples/projects/std-import-vec_i32/`, deterministically exercises
|
|
in-range, negative, and out-of-range removal cases alongside the earlier vec
|
|
helper groups.
|
|
|
|
exp-83 does not add generic collections, vector payload families beyond
|
|
`(vec i32)`, slice types, automatic standard-library imports,
|
|
compiler-loaded standard-library source, new compiler-known `std.*` runtime
|
|
names, mutable vec locals, public insert/remove/edit families beyond
|
|
`replace_at` and `remove_at`, mutating vec APIs, capacity or reserve
|
|
management, sorting, mapping, filtering, iterators, stable
|
|
ABI/layout/ownership, optimizer guarantees, or beta maturity.
|
|
|
|
## exp-82 (released experimental alpha)
|
|
|
|
Release label: `exp-82`
|
|
|
|
Release name: Standard Vec I32 Replace Helper Alpha
|
|
|
|
Release date: 2026-05-20
|
|
|
|
Status: released experimental alpha stdlib/source contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_82_STANDARD_VEC_I32_REPLACE_HELPER_ALPHA.md`.
|
|
|
|
exp-82 extends `std/vec_i32.slo` with exactly one new public helper over the
|
|
already promoted concrete vec runtime family:
|
|
|
|
- `replace_at`
|
|
|
|
This is an ordinary compositional Slovo source function over the existing
|
|
`append`, `take`, `drop`, and `concat` vec helpers; it adds no new runtime
|
|
calls, compiler semantic changes, or compiler-known `std.*` names.
|
|
`replace_at ((values (vec i32)) (position i32) (replacement i32)) -> (vec i32)`
|
|
returns a new vector with the same length and order as `values` except that
|
|
the in-range `position` slot becomes `replacement`. If `position < 0` or
|
|
`position >= len(values)`, it returns `values` unchanged. The helper does not
|
|
mutate the source vector. The matching explicit import fixture,
|
|
`examples/projects/std-import-vec_i32/`, deterministically exercises in-range,
|
|
negative, and out-of-range replacement cases alongside the earlier vec helper
|
|
groups.
|
|
|
|
exp-82 does not add generic collections, vector payload families beyond
|
|
`(vec i32)`, slice types, automatic standard-library imports,
|
|
compiler-loaded standard-library source, new compiler-known `std.*` runtime
|
|
names, mutable vec locals, public insert/remove/edit families beyond
|
|
`replace_at`, mutating vec APIs, capacity or reserve management, sorting,
|
|
mapping, filtering, iterators, stable ABI/layout/ownership, optimizer
|
|
guarantees, or beta maturity.
|
|
|
|
## exp-81 (released experimental alpha)
|
|
|
|
Release label: `exp-81`
|
|
|
|
Release name: Standard Vec I32 Range Helper Alpha
|
|
|
|
Release date: 2026-05-20
|
|
|
|
Status: released experimental alpha stdlib/source contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_81_STANDARD_VEC_I32_RANGE_HELPER_ALPHA.md`.
|
|
|
|
exp-81 extends `std/vec_i32.slo` with exactly one new public helper over the
|
|
already promoted concrete vec runtime family:
|
|
|
|
- `range`
|
|
|
|
This is an ordinary Slovo source function over the existing `append` and
|
|
`empty` vec facade operations, with private recursive generation only.
|
|
`range ((start i32) (end_exclusive i32)) -> (vec i32)` produces an ascending
|
|
half-open sequence from `start` up to but excluding `end_exclusive`.
|
|
Negative bounds are allowed, and it returns an empty vector when
|
|
`end_exclusive <= start`. `range_from_zero` remains public and may delegate
|
|
to `range 0 count`. The matching explicit import fixture,
|
|
`examples/projects/std-import-vec_i32/`, deterministically exercises
|
|
negative, empty, and positive ascending range cases alongside the earlier
|
|
vec helper groups.
|
|
|
|
exp-81 does not add generic collections, vector payload families beyond
|
|
`(vec i32)`, slice types, automatic standard-library imports,
|
|
compiler-loaded standard-library source, new compiler-known `std.*` runtime
|
|
names, mutable vec locals, descending or stepped range variants, inclusive
|
|
range variants, edit helpers, mutating vec APIs, capacity or reserve
|
|
management, sorting, mapping, filtering, iterators, stable
|
|
ABI/layout/ownership, optimizer guarantees, or beta maturity.
|
|
|
|
## exp-80 (released experimental alpha)
|
|
|
|
Release label: `exp-80`
|
|
|
|
Release name: Standard Vec I32 Generated Constructor Helpers Alpha
|
|
|
|
Release date: 2026-05-20
|
|
|
|
Status: released experimental alpha stdlib/source contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_80_STANDARD_VEC_I32_GENERATED_CONSTRUCTOR_HELPERS_ALPHA.md`.
|
|
|
|
exp-80 extends `std/vec_i32.slo` with narrow generated constructor helpers
|
|
over the already promoted concrete vec runtime family:
|
|
|
|
- `repeat`
|
|
- `range_from_zero`
|
|
|
|
These are ordinary Slovo source functions over the existing `append` and
|
|
`empty` vec facade operations. `repeat` returns an empty vector when
|
|
`count <= 0`. `range_from_zero` produces `0`, `1`, and so on up to but
|
|
excluding `count`, and returns an empty vector when `count <= 0`. The
|
|
matching explicit import fixture, `examples/projects/std-import-vec_i32/`,
|
|
now deterministically exercises this constructor helper group alongside the
|
|
earlier direct, builder, fallback query, option-query, transform, and
|
|
real-program vec helpers.
|
|
|
|
exp-80 does not add generic collections, vector payload families beyond
|
|
`(vec i32)`, slice types, automatic standard-library imports,
|
|
compiler-loaded standard-library source, new compiler-known `std.*` runtime
|
|
names, mutable vec locals, mutating vec APIs, capacity or reserve
|
|
management, public `range`, descending or stepped range variants, inclusive
|
|
range variants, edit helpers, sorting, mapping, filtering, iterators, stable
|
|
ABI/layout/ownership,
|
|
optimizer guarantees, or beta maturity.
|
|
|
|
## exp-79 (released experimental alpha)
|
|
|
|
Release label: `exp-79`
|
|
|
|
Release name: Standard Vec I32 Transform Helpers Alpha
|
|
|
|
Release date: 2026-05-20
|
|
|
|
Status: released experimental alpha stdlib/source contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_79_STANDARD_VEC_I32_TRANSFORM_HELPERS_ALPHA.md`.
|
|
|
|
exp-79 extends `std/vec_i32.slo` with narrow transform helpers over the
|
|
already promoted concrete vec runtime family:
|
|
|
|
- `concat`
|
|
- `take`
|
|
- `drop`
|
|
- `reverse`
|
|
|
|
These are ordinary Slovo source functions over the existing `append`, `len`,
|
|
`at`, and `empty` vec facade operations. `concat`, `take`, `drop`, and
|
|
`reverse` are expressed with private recursive helpers instead of mutable vec
|
|
locals. Negative counts behave as zero; `take` returns the original vector
|
|
when the requested count reaches or exceeds the current length, and `drop`
|
|
returns an empty vector in that same case. The matching explicit import
|
|
fixture, `examples/projects/std-import-vec_i32/`, now deterministically
|
|
exercises this transform helper group alongside the earlier direct, builder,
|
|
fallback query, option-query, and real-program vec helpers.
|
|
|
|
exp-79 does not add generic collections, vector payload families beyond
|
|
`(vec i32)`, slice types, automatic standard-library imports,
|
|
compiler-loaded standard-library source, new compiler-known `std.*` runtime
|
|
names, mutable vec locals, mutating vec APIs, capacity or reserve
|
|
management, sorting, mapping, filtering, iterators, stable
|
|
ABI/layout/ownership, optimizer guarantees, or beta maturity.
|
|
|
|
## exp-78 (released experimental alpha)
|
|
|
|
Release label: `exp-78`
|
|
|
|
Release name: Standard CLI Local Source Facade Alpha
|
|
|
|
Release date: 2026-05-20
|
|
|
|
Status: released experimental alpha stdlib/source contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_78_STANDARD_CLI_LOCAL_SOURCE_FACADE_ALPHA.md`.
|
|
|
|
exp-78 records the staged `std/cli.slo` facade as the Slovo-side contract for
|
|
the sibling Glagol local-source gate without widening the `std.cli` helper
|
|
surface. `std/cli.slo` itself remains unchanged for this release, and the
|
|
released helper list stays:
|
|
|
|
- `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 facade remains ordinary Slovo source over existing `std.process` and
|
|
`std.string` surface only, with no additional standard-source dependencies.
|
|
The existing explicit import fixture, `examples/projects/std-import-cli/`,
|
|
remains valid, and the paired Glagol local-source gate is expected to mirror
|
|
the same composition pattern.
|
|
|
|
exp-78 does not add new `std.cli` helpers, automatic standard-library
|
|
imports, compiler-loaded standard-library source, a `std.slo` aggregator,
|
|
package std dependency syntax, new compiler-known `std.*` runtime names,
|
|
process spawning, exit/status control, current-directory APIs, signal
|
|
handling, shell parsing, option or flag parsing, subcommands,
|
|
environment-backed configuration, richer CLI framework APIs, stable
|
|
ABI/layout/ownership, optimizer guarantees, or beta maturity.
|
|
|
|
## exp-77 (released experimental alpha)
|
|
|
|
Release label: `exp-77`
|
|
|
|
Release name: Standard Vec I32 Option Query Helpers Alpha
|
|
|
|
Release date: 2026-05-20
|
|
|
|
Status: released experimental alpha stdlib/source contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_77_STANDARD_VEC_I32_OPTION_QUERY_HELPERS_ALPHA.md`.
|
|
|
|
exp-77 extends `std/vec_i32.slo` with concrete option-returning query helpers
|
|
over the already promoted concrete vec runtime family:
|
|
|
|
- `index_option`
|
|
- `first_option`
|
|
- `last_option`
|
|
- `index_of_option`
|
|
- `last_index_of_option`
|
|
|
|
These are ordinary Slovo source functions over the existing `len`, `at`, and
|
|
`while` vec facade operations plus `std.option.some_i32` and
|
|
`std.option.none_i32`. The matching explicit import fixture,
|
|
`examples/projects/std-import-vec_i32/`, now deterministically exercises this
|
|
option-query helper group alongside the earlier direct, builder, fallback
|
|
query, and real-program vec helpers.
|
|
|
|
exp-77 does not add generic collections, vector payload families beyond
|
|
`(vec i32)`, option payload families beyond `(option i32)`, automatic
|
|
standard-library imports, compiler-loaded standard-library source, new
|
|
compiler-known `std.*` runtime names, mutating vec APIs, capacity or reserve
|
|
management, sorting, mapping, filtering, iterators, stable
|
|
ABI/layout/ownership, optimizer guarantees, or beta maturity.
|
|
|
|
## exp-76 (released experimental alpha)
|
|
|
|
Release label: `exp-76`
|
|
|
|
Release name: Standard Vec I32 Source Helpers Alpha
|
|
|
|
Release date: 2026-05-20
|
|
|
|
Status: released experimental alpha stdlib/source contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_76_STANDARD_VEC_I32_SOURCE_HELPERS_ALPHA.md`.
|
|
|
|
exp-76 extends `std/vec_i32.slo` with a concrete `(vec i32)` source-authored
|
|
collection facade over the already promoted `std.vec.i32` runtime family:
|
|
|
|
- direct wrappers:
|
|
- `empty`
|
|
- `append`
|
|
- `len`
|
|
- `at`
|
|
- builder helpers:
|
|
- `singleton`
|
|
- `append2`
|
|
- `append3`
|
|
- `pair`
|
|
- `triple`
|
|
- query helpers:
|
|
- `is_empty`
|
|
- `index_or`
|
|
- `first_or`
|
|
- `last_or`
|
|
- real-program helpers:
|
|
- `contains`
|
|
- `sum`
|
|
|
|
These are ordinary Slovo source functions over the existing vector runtime
|
|
calls plus simple source `while` loops. The matching explicit import fixture,
|
|
`examples/projects/std-import-vec_i32/`, now exercises the direct facade and
|
|
the staged helper groups through explicit `std.vec_i32` imports.
|
|
|
|
exp-76 does not add generic vectors, vector payload families beyond
|
|
`(vec i32)`, automatic standard-library imports, compiler-loaded
|
|
standard-library source, capacity or reserve management, push/pop helpers,
|
|
sorting, mapping, filtering, iterators, new compiler-known `std.*` runtime
|
|
names, stable ABI/layout/ownership, optimizer guarantees, or beta maturity.
|
|
|
|
## exp-75 (released experimental alpha)
|
|
|
|
Release label: `exp-75`
|
|
|
|
Release name: Standard Option Constructors Alpha
|
|
|
|
Release date: 2026-05-20
|
|
|
|
Status: released experimental alpha stdlib/source contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_75_STANDARD_OPTION_CONSTRUCTORS_ALPHA.md`.
|
|
|
|
exp-75 extends `std/option.slo` with concrete source constructors for the
|
|
currently promoted `(option i32)` family:
|
|
|
|
- `some_i32`
|
|
- `none_i32`
|
|
|
|
These are ordinary Slovo source functions over the existing `some` and
|
|
`none` forms, fixed to the current released `(option i32)` family. The
|
|
matching explicit import fixture, `examples/projects/std-import-option/`, now
|
|
uses those constructors instead of repeating raw typed `some` and `none`
|
|
forms.
|
|
|
|
exp-75 does not add generic option helpers, new option payload families,
|
|
automatic standard-library imports, compiler-loaded standard-library source,
|
|
new compiler-known `std.*` runtime names, stable ABI/layout/ownership,
|
|
optimizer guarantees, or beta maturity.
|
|
|
|
## exp-74 (released experimental alpha)
|
|
|
|
Release label: `exp-74`
|
|
|
|
Release name: Standard Result Constructor Helpers Alpha
|
|
|
|
Release date: 2026-05-20
|
|
|
|
Status: released experimental alpha stdlib/source contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_74_STANDARD_RESULT_CONSTRUCTOR_HELPERS_ALPHA.md`.
|
|
|
|
exp-74 extends `std/result.slo` with concrete source constructors for the
|
|
currently promoted result families:
|
|
|
|
- `ok_i32`
|
|
- `err_i32`
|
|
- `ok_i64`
|
|
- `err_i64`
|
|
- `ok_string`
|
|
- `err_string`
|
|
- `ok_f64`
|
|
- `err_f64`
|
|
- `ok_bool`
|
|
- `err_bool`
|
|
|
|
These are ordinary Slovo source functions over the existing `ok` and `err`
|
|
forms, fixed to the current released `(result <payload> i32)` families. The
|
|
matching explicit import fixture, `examples/projects/std-import-result/`, now
|
|
uses those constructors instead of repeating raw typed `ok` and `err` forms.
|
|
|
|
exp-74 does not add generic result helpers, new result payload families,
|
|
generic `map`/`and_then`, richer error ADTs, automatic standard-library
|
|
imports, compiler-loaded standard-library source, new compiler-known `std.*`
|
|
runtime names, stable ABI/layout/ownership, optimizer guarantees, or beta
|
|
maturity.
|
|
|
|
## exp-73 (released experimental alpha)
|
|
|
|
Release label: `exp-73`
|
|
|
|
Release name: Standard Io Value Helpers Alpha
|
|
|
|
Release date: 2026-05-20
|
|
|
|
Status: released experimental alpha stdlib/source contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_73_STANDARD_IO_VALUE_HELPERS_ALPHA.md`.
|
|
|
|
exp-73 extends `std/io.slo` with source-authored value-returning print
|
|
helpers over the already promoted print runtime calls:
|
|
|
|
- `print_i32_value`
|
|
- `print_i64_value`
|
|
- `print_f64_value`
|
|
- `print_string_value`
|
|
- `print_bool_value`
|
|
|
|
These are ordinary Slovo source functions over `std.io.print_i32`,
|
|
`std.io.print_i64`, `std.io.print_f64`, `std.io.print_string`, and
|
|
`std.io.print_bool`, followed by returning the original value. The matching
|
|
explicit import fixture, `examples/projects/std-import-io/`, now exercises
|
|
both the earlier zero-returning wrappers and the new value-preserving cases.
|
|
|
|
exp-73 does not add automatic standard-library imports, compiler-loaded
|
|
standard-library source, stderr facade helpers, stdin facade helpers, line
|
|
iteration, prompt APIs, terminal control, binary IO, streaming IO, async IO,
|
|
new compiler-known `std.*` runtime names, stable ABI/layout/ownership,
|
|
optimizer guarantees, or beta maturity.
|
|
|
|
## exp-72 (released experimental alpha)
|
|
|
|
Release label: `exp-72`
|
|
|
|
Release name: Standard Cli Custom Fallback Helpers Alpha
|
|
|
|
Release date: 2026-05-20
|
|
|
|
Status: released experimental alpha stdlib/source contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_72_STANDARD_CLI_CUSTOM_FALLBACK_HELPERS_ALPHA.md`.
|
|
|
|
exp-72 extends `std/cli.slo` with source-authored typed argument
|
|
custom-fallback helpers over the already promoted argument lookup and concrete
|
|
parse result families:
|
|
|
|
- `arg_i32_or`
|
|
- `arg_i64_or`
|
|
- `arg_f64_or`
|
|
- `arg_bool_or`
|
|
|
|
These are ordinary Slovo source functions over `arg_result`,
|
|
`parse_i32_result`, `parse_i64_result`, `parse_f64_result`, and
|
|
`parse_bool_result` plus source `match`. The matching explicit import
|
|
fixture, `examples/projects/std-import-cli/`, now exercises both the earlier
|
|
zero/false fallbacks and the new typed custom-fallback cases.
|
|
|
|
exp-72 does not add automatic standard-library imports, compiler-loaded
|
|
standard-library source, process spawning, exit/status control, current
|
|
directory APIs, signal handling, shell parsing, subcommands, richer CLI
|
|
framework APIs, generic configuration helpers, new compiler-known `std.*`
|
|
runtime names, stable ABI/layout/ownership, optimizer guarantees, or beta
|
|
maturity.
|
|
|
|
## exp-71 (released experimental alpha)
|
|
|
|
## exp-71 (released experimental alpha)
|
|
|
|
Release label: `exp-71`
|
|
|
|
Release name: Standard Process Custom Fallback Helpers Alpha
|
|
|
|
Release date: 2026-05-20
|
|
|
|
Status: released experimental alpha stdlib/source contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_71_STANDARD_PROCESS_CUSTOM_FALLBACK_HELPERS_ALPHA.md`.
|
|
|
|
exp-71 extends `std/process.slo` with source-authored typed argument
|
|
custom-fallback helpers over the already promoted argument lookup and concrete
|
|
parse result families:
|
|
|
|
- `arg_i32_or`
|
|
- `arg_i64_or`
|
|
- `arg_f64_or`
|
|
- `arg_bool_or`
|
|
|
|
These are ordinary Slovo source functions over `arg_result`,
|
|
`parse_i32_result`, `parse_i64_result`, `parse_f64_result`, and
|
|
`parse_bool_result` plus source `match`. The matching explicit import
|
|
fixture, `examples/projects/std-import-process/`, now exercises both the
|
|
earlier zero/false fallbacks and the new typed custom-fallback cases.
|
|
|
|
exp-71 does not add automatic standard-library imports, compiler-loaded
|
|
standard-library source, process spawning, exit/status control, current
|
|
directory APIs, signal handling, shell parsing, subcommands, richer CLI
|
|
framework APIs, generic configuration helpers, new compiler-known `std.*`
|
|
runtime names, stable ABI/layout/ownership, optimizer guarantees, or beta
|
|
maturity.
|
|
|
|
## exp-70 (released experimental alpha)
|
|
|
|
## exp-70 (released experimental alpha)
|
|
|
|
Release label: `exp-70`
|
|
|
|
Release name: Standard Fs Custom Fallback Helpers Alpha
|
|
|
|
Release date: 2026-05-20
|
|
|
|
Status: released experimental alpha stdlib/source contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_70_STANDARD_FS_CUSTOM_FALLBACK_HELPERS_ALPHA.md`.
|
|
|
|
exp-70 extends `std/fs.slo` with source-authored typed read custom-fallback
|
|
helpers over the already promoted text-read and concrete parse result
|
|
families:
|
|
|
|
- `read_i32_or`
|
|
- `read_i64_or`
|
|
- `read_f64_or`
|
|
- `read_bool_or`
|
|
|
|
These are ordinary Slovo source functions over `read_text_result`,
|
|
`parse_i32_result`, `parse_i64_result`, `parse_f64_result`, and
|
|
`parse_bool_result` plus source `match`. The matching explicit import
|
|
fixture, `examples/projects/std-import-fs/`, now exercises both the earlier
|
|
zero/false fallbacks and the new typed custom-fallback cases.
|
|
|
|
exp-70 does not add automatic standard-library imports, compiler-loaded
|
|
standard-library source, binary file APIs, directory traversal, streaming
|
|
file IO, async file IO, typed file writes, rich host errors, new
|
|
compiler-known `std.*` runtime names, stable ABI/layout/ownership, optimizer
|
|
guarantees, or beta maturity.
|
|
|
|
## exp-69 (released experimental alpha)
|
|
|
|
## exp-69 (released experimental alpha)
|
|
|
|
Release label: `exp-69`
|
|
|
|
Release name: Standard Env Custom Fallback Helpers Alpha
|
|
|
|
Release date: 2026-05-20
|
|
|
|
Status: released experimental alpha stdlib/source contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_69_STANDARD_ENV_CUSTOM_FALLBACK_HELPERS_ALPHA.md`.
|
|
|
|
exp-69 extends `std/env.slo` with source-authored typed parse
|
|
custom-fallback helpers over the already promoted environment lookup and
|
|
concrete parse result families:
|
|
|
|
- `get_i32_or`
|
|
- `get_i64_or`
|
|
- `get_f64_or`
|
|
- `get_bool_or`
|
|
|
|
These are ordinary Slovo source functions over `get_result`,
|
|
`parse_i32_result`, `parse_i64_result`, `parse_f64_result`, and
|
|
`parse_bool_result` plus source `match`. The matching explicit import
|
|
fixture, `examples/projects/std-import-env/`, now exercises both the earlier
|
|
zero/false fallbacks and the new typed custom-fallback cases.
|
|
|
|
exp-69 does not add automatic standard-library imports, compiler-loaded
|
|
standard-library source, generic configuration helpers, environment mutation,
|
|
environment enumeration, environment writes, rich host errors, new
|
|
compiler-known `std.*` runtime names, stable ABI/layout/ownership, optimizer
|
|
guarantees, or beta maturity.
|
|
|
|
## exp-68 (released experimental alpha)
|
|
|
|
Release label: `exp-68`
|
|
|
|
Release name: Standard String Custom Fallback Helpers Alpha
|
|
|
|
Release date: 2026-05-20
|
|
|
|
Status: released experimental alpha stdlib/source contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_68_STANDARD_STRING_CUSTOM_FALLBACK_HELPERS_ALPHA.md`.
|
|
|
|
exp-68 extends `std/string.slo` with source-authored typed parse
|
|
custom-fallback helpers over the already promoted concrete parse result
|
|
families:
|
|
|
|
- `parse_i32_or`
|
|
- `parse_i64_or`
|
|
- `parse_f64_or`
|
|
- `parse_bool_or`
|
|
|
|
These are ordinary Slovo source functions over `parse_i32_result`,
|
|
`parse_i64_result`, `parse_f64_result`, and `parse_bool_result` plus source
|
|
`match`. The matching explicit import fixture,
|
|
`examples/projects/std-import-string/`, now exercises both the earlier
|
|
zero/false fallbacks and the new typed custom-fallback cases.
|
|
|
|
exp-68 does not add automatic standard-library imports, compiler-loaded
|
|
standard-library source, generic parse helpers, whitespace trimming,
|
|
case-insensitive bool parsing, rich parse errors, new compiler-known `std.*`
|
|
runtime names, stable ABI/layout/ownership, optimizer guarantees, or beta
|
|
maturity.
|
|
|
|
## exp-67 (released experimental alpha)
|
|
|
|
Release label: `exp-67`
|
|
|
|
Release name: Standard Process Typed Helpers Alpha
|
|
|
|
Release date: 2026-05-20
|
|
|
|
Status: released experimental alpha stdlib/source contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_67_STANDARD_PROCESS_TYPED_HELPERS_ALPHA.md`.
|
|
|
|
exp-67 extends `std/process.slo` with source-authored typed argument
|
|
result/fallback helpers over process arguments plus the already promoted
|
|
concrete parse result families:
|
|
|
|
- `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`
|
|
|
|
These are ordinary Slovo source functions over `arg_result`,
|
|
`parse_i32_result`, `parse_i64_result`, `parse_f64_result`, and
|
|
`parse_bool_result` plus source `match`. The matching explicit import
|
|
fixture, `examples/projects/std-import-process/`, now exercises the existing
|
|
process wrappers, deterministic missing-argument cases, and deterministic
|
|
invalid-present fallback behavior through `arg 0`.
|
|
|
|
exp-67 does not add automatic standard-library imports, compiler-loaded
|
|
standard-library source, process spawning, exit/status control, current
|
|
directory APIs, shell parsing, subcommands, richer CLI framework APIs, rich
|
|
host errors, new compiler-known `std.*` runtime names, stable
|
|
ABI/layout/ownership, optimizer guarantees, or beta maturity.
|
|
|
|
## exp-66 (released experimental alpha)
|
|
|
|
Release label: `exp-66`
|
|
|
|
Release name: Standard Fs Typed Read Helpers Alpha
|
|
|
|
Release date: 2026-05-20
|
|
|
|
Status: released experimental alpha stdlib/source contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_66_STANDARD_FS_TYPED_READ_HELPERS_ALPHA.md`.
|
|
|
|
exp-66 extends `std/fs.slo` with source-authored typed read
|
|
result/fallback helpers over text-file reads plus the already promoted
|
|
concrete parse result families:
|
|
|
|
- `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`
|
|
|
|
These are ordinary Slovo source functions over `read_text_result`,
|
|
`parse_i32_result`, `parse_i64_result`, `parse_f64_result`, and
|
|
`parse_bool_result` plus source `match`. The matching explicit import
|
|
fixture, `examples/projects/std-import-fs/`, now exercises the existing fs
|
|
wrappers, typed parse success cases, and deterministic invalid/missing
|
|
fallback behavior.
|
|
|
|
exp-66 does not add automatic standard-library imports, compiler-loaded
|
|
standard-library source, binary file APIs, directory traversal, streaming
|
|
file IO, async file IO, typed file writes, rich host errors, generic
|
|
configuration helpers, new compiler-known `std.*` runtime names, stable
|
|
ABI/layout/ownership, optimizer guarantees, or beta maturity.
|
|
|
|
## exp-65 (released experimental alpha)
|
|
|
|
Release label: `exp-65`
|
|
|
|
Release name: Standard Env Typed Helpers Alpha
|
|
|
|
Release date: 2026-05-20
|
|
|
|
Status: released experimental alpha stdlib/source contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_65_STANDARD_ENV_TYPED_HELPERS_ALPHA.md`.
|
|
|
|
exp-65 extends `std/env.slo` with source-authored typed parse
|
|
result/fallback helpers over environment lookup plus the already promoted
|
|
concrete parse result families:
|
|
|
|
- `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`
|
|
|
|
These are ordinary Slovo source functions over `get_result`,
|
|
`parse_i32_result`, `parse_i64_result`, `parse_f64_result`, and
|
|
`parse_bool_result` plus source `match`. The matching explicit import
|
|
fixture, `examples/projects/std-import-env/`, now exercises the existing env
|
|
wrappers, typed parse success cases, and deterministic invalid/missing
|
|
fallback behavior.
|
|
|
|
exp-65 does not add automatic standard-library imports, compiler-loaded
|
|
standard-library source, environment mutation, environment enumeration,
|
|
environment writes, rich host errors, generic configuration helpers, new
|
|
compiler-known `std.*` runtime names, stable ABI/layout/ownership, optimizer
|
|
guarantees, or beta maturity.
|
|
|
|
## exp-64 (released experimental alpha)
|
|
|
|
Release label: `exp-64`
|
|
|
|
Release name: Standard Num Fallback Helpers Alpha
|
|
|
|
Release date: 2026-05-20
|
|
|
|
Status: released experimental alpha stdlib/source contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_64_STANDARD_NUM_FALLBACK_HELPERS_ALPHA.md`.
|
|
|
|
exp-64 extends `std/num.slo` with source-authored checked conversion
|
|
fallback helpers over the already promoted numeric result families:
|
|
|
|
- `i64_to_i32_or`
|
|
- `f64_to_i32_or`
|
|
- `f64_to_i64_or`
|
|
|
|
These are ordinary Slovo source functions over `i64_to_i32_result`,
|
|
`f64_to_i32_result`, and `f64_to_i64_result` plus source `match`. The
|
|
matching explicit import fixture, `examples/projects/std-import-num/`, now
|
|
exercises both the existing conversion wrappers and the new fallback helpers.
|
|
|
|
exp-64 does not add automatic standard-library imports, compiler-loaded
|
|
standard-library source, unchecked narrowing conversions, saturating
|
|
conversions, generic numeric traits, new compiler-known `std.*` runtime
|
|
names, stable ABI/layout/ownership, optimizer guarantees, or beta maturity.
|
|
|
|
## exp-63 (released experimental alpha)
|
|
|
|
Release label: `exp-63`
|
|
|
|
Release name: Standard Fs Fallback Helpers Alpha
|
|
|
|
Release date: 2026-05-20
|
|
|
|
Status: released experimental alpha stdlib/source contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_63_STANDARD_FS_FALLBACK_HELPERS_ALPHA.md`.
|
|
|
|
exp-63 extends `std/fs.slo` with source-authored text fallback/status
|
|
helpers over the already promoted filesystem result families:
|
|
|
|
- `read_text_or`
|
|
- `write_text_ok`
|
|
|
|
These are ordinary Slovo source functions over `read_text_result` and
|
|
`write_text_result` plus source `match`. The matching explicit import fixture,
|
|
`examples/projects/std-import-fs/`, now exercises both the existing fs
|
|
wrappers and the new fallback/status helpers.
|
|
|
|
exp-63 does not add automatic standard-library imports, compiler-loaded
|
|
standard-library source, binary file APIs, directory traversal, streaming
|
|
file IO, async file IO, rich host errors, new compiler-known `std.*` runtime
|
|
names, stable ABI/layout/ownership, optimizer guarantees, or beta maturity.
|
|
|
|
## exp-62 (released experimental alpha)
|
|
|
|
Release label: `exp-62`
|
|
|
|
Release name: Standard Env Fallback Helpers Alpha
|
|
|
|
Release date: 2026-05-20
|
|
|
|
Status: released experimental alpha stdlib/source contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_62_STANDARD_ENV_FALLBACK_HELPERS_ALPHA.md`.
|
|
|
|
exp-62 extends `std/env.slo` with source-authored environment fallback
|
|
helpers over the already promoted `(result string i32)` environment lookup
|
|
family:
|
|
|
|
- `has`
|
|
- `get_or`
|
|
|
|
These are ordinary Slovo source functions over `get_result` plus source
|
|
`match`. The matching explicit import fixture,
|
|
`examples/projects/std-import-env/`, now exercises both the existing env
|
|
wrappers and the new presence/fallback helpers.
|
|
|
|
exp-62 does not add automatic standard-library imports, compiler-loaded
|
|
standard-library source, environment mutation, environment enumeration,
|
|
platform/configuration APIs, rich host errors, new compiler-known `std.*`
|
|
runtime names, stable ABI/layout/ownership, optimizer guarantees, or beta
|
|
maturity.
|
|
|
|
## exp-61 (released experimental alpha)
|
|
|
|
Release label: `exp-61`
|
|
|
|
Release name: Standard Process Fallback Helpers Alpha
|
|
|
|
Release date: 2026-05-20
|
|
|
|
Status: released experimental alpha stdlib/source contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_61_STANDARD_PROCESS_FALLBACK_HELPERS_ALPHA.md`.
|
|
|
|
exp-61 extends `std/process.slo` with source-authored fallback helpers over
|
|
the already promoted `(result string i32)` process argument family:
|
|
|
|
- `arg_or`
|
|
- `arg_or_empty`
|
|
|
|
These are ordinary Slovo source functions over `arg_result` plus source
|
|
`match`. The matching explicit import fixture,
|
|
`examples/projects/std-import-process/`, now exercises both the existing
|
|
process wrappers and the new fallback helpers.
|
|
|
|
exp-61 does not add automatic standard-library imports, compiler-loaded
|
|
standard-library source, option/flag parsing, subcommands, process spawning,
|
|
exit/status control, shell parsing, rich host errors, new compiler-known
|
|
`std.*` runtime names, stable ABI/layout/ownership, optimizer guarantees, or
|
|
beta maturity.
|
|
|
|
## exp-60 (released experimental alpha)
|
|
|
|
Release label: `exp-60`
|
|
|
|
Release name: Standard String Fallback Helpers Alpha
|
|
|
|
Release date: 2026-05-20
|
|
|
|
Status: released experimental alpha stdlib/source contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_60_STANDARD_STRING_FALLBACK_HELPERS_ALPHA.md`.
|
|
|
|
exp-60 extends `std/string.slo` with source-authored fallback helpers over
|
|
the already promoted concrete parse result families:
|
|
|
|
- `parse_i32_or_zero`
|
|
- `parse_i64_or_zero`
|
|
- `parse_f64_or_zero`
|
|
- `parse_bool_or_false`
|
|
|
|
These are ordinary Slovo source functions over the existing `parse_*_result`
|
|
helpers plus source `match` on the concrete `i32`, `i64`, `f64`, and `bool`
|
|
result families. The matching explicit import fixture,
|
|
`examples/projects/std-import-string/`, now exercises both the direct parse
|
|
result wrappers and the new fallback helpers.
|
|
|
|
exp-60 does not add automatic standard-library imports, compiler-loaded
|
|
standard-library source, generic parse helpers, whitespace trimming,
|
|
case-insensitive bool parsing, rich parse errors, new compiler-known
|
|
`std.*` runtime names, stable ABI/layout/ownership, optimizer guarantees, or
|
|
beta maturity.
|
|
|
|
## exp-59 (released experimental alpha)
|
|
|
|
Release label: `exp-59`
|
|
|
|
Release name: Hosted Build Optimization And Benchmark Publication Alpha
|
|
|
|
Release date: 2026-05-20
|
|
|
|
Status: released experimental alpha documentation/tooling contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_59_HOSTED_BUILD_OPTIMIZATION_AND_BENCHMARK_PUBLICATION_ALPHA.md`.
|
|
|
|
exp-59 does not change the exp-58 source-language surface. It records the
|
|
paired Glagol exp-59 hosted-build optimization, refreshes the then-current
|
|
benchmark methodology and local benchmark evidence, and adds a repo-local PDF
|
|
rendering script for the whitepaper and manifest artifacts.
|
|
|
|
exp-59 does not add source syntax, type forms, standard-library APIs, stable
|
|
ABI/layout/ownership, optimizer guarantees, benchmark thresholds,
|
|
cross-machine performance claims, package registry behavior, or beta
|
|
maturity.
|
|
|
|
## exp-58 (released experimental alpha)
|
|
|
|
Release label: `exp-58`
|
|
|
|
Release name: Boolean Logic Alpha
|
|
|
|
Release date: 2026-05-19
|
|
|
|
Status: released experimental alpha language contract. This is experimental
|
|
maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is `.llm/EXP_58_BOOLEAN_LOGIC_ALPHA.md`.
|
|
|
|
exp-58 promotes `(and left right)`, `(or left right)`, and `(not value)` for
|
|
boolean values. `and` and `or` lower through existing `if` semantics, so they
|
|
short-circuit in the deterministic test runner and hosted lowering.
|
|
|
|
The new supported fixture is `examples/supported/boolean-logic.slo`, with
|
|
matching formatter coverage in `examples/formatter/boolean-logic.slo`.
|
|
|
|
exp-58 does not add truthiness, variadic boolean operators, pattern guards,
|
|
macro expansion, stable ABI/layout/ownership, optimizer guarantees, benchmark
|
|
thresholds, or beta maturity.
|
|
|
|
## exp-57 (released experimental alpha)
|
|
|
|
Release label: `exp-57`
|
|
|
|
Release name: Integer Bitwise Alpha
|
|
|
|
Release date: 2026-05-19
|
|
|
|
Status: released experimental alpha language/stdlib contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is `.llm/EXP_57_INTEGER_BITWISE_ALPHA.md`.
|
|
|
|
exp-57 promotes explicit `bit_and`, `bit_or`, and `bit_xor` binary heads for
|
|
same-width signed integer operands: `i32` with `i32`, and `i64` with `i64`.
|
|
|
|
The release also extends `std/math.slo` with `bit_and_i32`, `bit_or_i32`,
|
|
`bit_xor_i32`, `bit_and_i64`, `bit_or_i64`, and `bit_xor_i64`.
|
|
|
|
The new supported fixture is `examples/supported/integer-bitwise.slo`, with
|
|
matching formatter coverage in `examples/formatter/integer-bitwise.slo`.
|
|
|
|
exp-57 does not add shifts, bit-not, unsigned arithmetic,
|
|
bit-width-specific integer families, floating-point bitwise operations,
|
|
generic math, mixed numeric arithmetic, stable ABI/layout/ownership,
|
|
optimizer guarantees, benchmark thresholds, or beta maturity.
|
|
|
|
## exp-56 (released experimental alpha)
|
|
|
|
Release label: `exp-56`
|
|
|
|
Release name: Integer Remainder Alpha
|
|
|
|
Release date: 2026-05-19
|
|
|
|
Status: released experimental alpha language/stdlib contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is `.llm/EXP_56_INTEGER_REMAINDER_ALPHA.md`.
|
|
|
|
exp-56 promotes the `%` binary operator for same-width signed integer
|
|
operands: `i32 % i32 -> i32` and `i64 % i64 -> i64`. The deterministic
|
|
fixture covers positive and negative dividends for both widths.
|
|
|
|
The release also extends `std/math.slo` with `rem_i32`, `is_even_i32`,
|
|
`is_odd_i32`, `rem_i64`, `is_even_i64`, and `is_odd_i64`.
|
|
|
|
The new supported fixture is `examples/supported/integer-remainder.slo`, with
|
|
matching formatter coverage in `examples/formatter/integer-remainder.slo`.
|
|
|
|
exp-56 does not add floating-point remainder, Euclidean modulo, unsigned
|
|
arithmetic, bit operations, generic math, mixed numeric arithmetic, stable
|
|
ABI/layout/ownership, optimizer guarantees, benchmark thresholds, or beta
|
|
maturity.
|
|
|
|
## exp-55 (released experimental alpha)
|
|
|
|
Release label: `exp-55`
|
|
|
|
Release name: Result F64 Bool Source Flow Alpha
|
|
|
|
Release date: 2026-05-19
|
|
|
|
Status: released experimental alpha language/tooling contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_55_RESULT_F64_BOOL_SOURCE_FLOW_ALPHA.md`.
|
|
|
|
exp-55 promotes source constructors and source `match` payload bindings for
|
|
the already existing concrete `(result f64 i32)` and `(result bool i32)`
|
|
families. It also lets `std/cli.slo` propagate missing argument indexes as
|
|
`err 1` for `arg_f64_result` and `arg_bool_result`.
|
|
|
|
The new supported fixture is
|
|
`examples/supported/result-f64-bool-match.slo`.
|
|
|
|
exp-55 does not add 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.
|
|
|
|
## exp-54 (released experimental alpha)
|
|
|
|
Release label: `exp-54`
|
|
|
|
Release name: Standard CLI Typed Arguments Alpha
|
|
|
|
Release date: 2026-05-19
|
|
|
|
Status: released experimental alpha language/tooling contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_54_STANDARD_CLI_TYPED_ARGUMENTS_ALPHA.md`.
|
|
|
|
exp-54 extends `std/cli.slo` with `i64`, `f64`, and `bool` typed argument
|
|
parse helpers while keeping the facade source-authored. The matching fixture
|
|
imports the expanded `std.cli` helper list explicitly without a local copied
|
|
module.
|
|
|
|
`arg_i64_result` and `arg_i64_or_zero` propagate missing argument indexes
|
|
through current source-supported result constructors. `arg_f64_result` and
|
|
`arg_bool_result` return parse results over `std.process.arg`, so
|
|
out-of-range argument indexes still follow the existing trap behavior.
|
|
|
|
exp-54 does not add automatic standard-library imports, a `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.
|
|
|
|
## exp-53 (released experimental alpha)
|
|
|
|
Release label: `exp-53`
|
|
|
|
Release name: Standard CLI Source Facade Alpha
|
|
|
|
Release date: 2026-05-19
|
|
|
|
Status: released experimental alpha language/tooling contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_53_STANDARD_CLI_SOURCE_FACADE_ALPHA.md`.
|
|
|
|
exp-53 adds `std/cli.slo`, a narrow source-authored CLI facade that composes
|
|
`std.process` and `std.string` source modules. The matching fixture imports
|
|
`std.cli` explicitly without a local copied module.
|
|
|
|
The new fixture is `examples/projects/std-import-cli/`.
|
|
|
|
exp-53 does not add automatic standard-library imports, a `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.
|
|
|
|
## exp-52 (released experimental alpha)
|
|
|
|
Release label: `exp-52`
|
|
|
|
Release name: Standard Process Facade Source Search Alpha
|
|
|
|
Release date: 2026-05-19
|
|
|
|
Status: released experimental alpha language/tooling contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_52_STANDARD_PROCESS_FACADE_SOURCE_SEARCH_ALPHA.md`.
|
|
|
|
exp-52 adds `std/process.slo`, a narrow source-authored facade over already
|
|
promoted process argument runtime calls. The matching fixture imports
|
|
`std.process` explicitly without a local copied module.
|
|
|
|
The new fixture is `examples/projects/std-import-process/`.
|
|
|
|
exp-52 does not add automatic standard-library imports, a `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.
|
|
|
|
## exp-51 (released experimental alpha)
|
|
|
|
Release label: `exp-51`
|
|
|
|
Release name: Standard Library Path List Alpha
|
|
|
|
Release date: 2026-05-19
|
|
|
|
Status: released experimental alpha language/tooling contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_51_STANDARD_LIBRARY_PATH_LIST_ALPHA.md`.
|
|
|
|
exp-51 refines explicit standard-source discovery so `SLOVO_STD_PATH` may
|
|
name an ordered OS path list of standard-library roots. This allows an
|
|
override root to sit before an installed or checkout root without copying the
|
|
entire `std/` tree.
|
|
|
|
exp-51 does not add automatic standard-library imports, a `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.
|
|
|
|
## exp-50 (released experimental alpha)
|
|
|
|
Release label: `exp-50`
|
|
|
|
Release name: Installed Standard Library Discovery Alpha
|
|
|
|
Release date: 2026-05-19
|
|
|
|
Status: released experimental alpha language/tooling contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_50_INSTALLED_STANDARD_LIBRARY_DISCOVERY_ALPHA.md`.
|
|
|
|
exp-50 extends the explicit standard-source import contract to installed
|
|
toolchain discovery. Glagol may now discover staged `std/*.slo` files from an
|
|
installed `share/slovo/std` layout near the compiler executable, while keeping
|
|
`SLOVO_STD_PATH` and checkout discovery available.
|
|
|
|
exp-50 does not add automatic standard-library imports, a `std.slo`
|
|
aggregator, package registry behavior, lockfiles, package std dependencies,
|
|
new standard-library modules, stable install layout guarantees, stable
|
|
ABI/layout/ownership, optimizer guarantees, benchmark thresholds, or beta
|
|
maturity.
|
|
|
|
## exp-49 (released experimental alpha)
|
|
|
|
Release label: `exp-49`
|
|
|
|
Release name: Standard IO Facade Source Search Alpha
|
|
|
|
Release date: 2026-05-19
|
|
|
|
Status: released experimental alpha language/tooling contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_49_STANDARD_IO_FACADE_SOURCE_SEARCH_ALPHA.md`.
|
|
|
|
exp-49 extends explicit project-mode standard-library source search to
|
|
`std.io`. `std/io.slo` now carries an export list, and the matching fixture
|
|
imports the module without a local copy.
|
|
|
|
The new fixture is `examples/projects/std-import-io/`.
|
|
|
|
exp-49 does not add automatic standard-library imports, a `std.slo`
|
|
aggregator, package registry behavior, installed toolchain stdlib paths, new
|
|
compiler-known IO names, formatted output APIs, stable ABI/layout/ownership,
|
|
optimizer guarantees, benchmark thresholds, or beta maturity.
|
|
|
|
## exp-48 (released experimental alpha)
|
|
|
|
Release label: `exp-48`
|
|
|
|
Release name: Standard Core Facade Source Search Alpha
|
|
|
|
Release date: 2026-05-19
|
|
|
|
Status: released experimental alpha language/tooling contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_48_STANDARD_CORE_FACADE_SOURCE_SEARCH_ALPHA.md`.
|
|
|
|
exp-48 extends explicit project-mode standard-library source search to the
|
|
pure source facade modules `std.string` and `std.num`. `std/string.slo` and
|
|
`std/num.slo` now carry export lists, and the matching fixtures import those
|
|
modules without local copies.
|
|
|
|
The new fixtures are `examples/projects/std-import-string/` and
|
|
`examples/projects/std-import-num/`.
|
|
|
|
exp-48 does not add automatic standard-library imports, a `std.slo`
|
|
aggregator, package registry behavior, installed toolchain stdlib paths,
|
|
generic parse/format APIs, broad numeric casts, stable ABI/layout/ownership,
|
|
optimizer guarantees, benchmark thresholds, or beta maturity.
|
|
|
|
## exp-47 (released experimental alpha)
|
|
|
|
Release label: `exp-47`
|
|
|
|
Release name: Standard Host Facade Source Search Alpha
|
|
|
|
Release date: 2026-05-19
|
|
|
|
Status: released experimental alpha language/tooling contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_47_STANDARD_HOST_FACADE_SOURCE_SEARCH_ALPHA.md`.
|
|
|
|
exp-47 extends explicit project-mode standard-library source search to the
|
|
host facade modules `std.time`, `std.random`, `std.env`, and `std.fs`.
|
|
`std/time.slo`, `std/random.slo`, `std/env.slo`, and `std/fs.slo` now carry
|
|
export lists, and the matching fixtures import those modules without local
|
|
copies.
|
|
|
|
The new fixtures are `examples/projects/std-import-time/`,
|
|
`examples/projects/std-import-random/`, `examples/projects/std-import-env/`,
|
|
and `examples/projects/std-import-fs/`.
|
|
|
|
exp-47 does not add automatic standard-library imports, a `std.slo`
|
|
aggregator, workspace dependency syntax for std, package registry behavior,
|
|
installed toolchain stdlib paths, broad host APIs, stable ABI/layout/ownership,
|
|
optimizer guarantees, benchmark thresholds, or beta maturity.
|
|
|
|
## exp-46 (released experimental alpha)
|
|
|
|
Release label: `exp-46`
|
|
|
|
Release name: Workspace Standard Source Search Alpha
|
|
|
|
Release date: 2026-05-19
|
|
|
|
Status: released experimental alpha language/tooling contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_46_WORKSPACE_STANDARD_SOURCE_SEARCH_ALPHA.md`.
|
|
|
|
exp-46 extends explicit standard-library source search from single projects to
|
|
workspace packages. The new fixture `examples/workspaces/std-import-option/`
|
|
imports `(import std.option (...))` without a local copied `option.slo`.
|
|
|
|
exp-46 does not add automatic standard-library imports, workspace dependency
|
|
syntax for std, package registry behavior, installed toolchain stdlib paths,
|
|
a `std.slo` aggregator, generic option helpers, broad standard-library APIs,
|
|
stable ABI/layout/ownership, optimizer guarantees, benchmark thresholds, or
|
|
beta maturity.
|
|
|
|
## exp-45 (released experimental alpha)
|
|
|
|
Release label: `exp-45`
|
|
|
|
Release name: Standard Result And Option Source Search Alpha
|
|
|
|
Release date: 2026-05-19
|
|
|
|
Status: released experimental alpha language/tooling contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_45_STANDARD_RESULT_OPTION_SOURCE_SEARCH_ALPHA.md`.
|
|
|
|
exp-45 extends the explicit standard-library source-search path to
|
|
`std.result` and `std.option`. Ordinary project code may import
|
|
`(import std.result (...))` and `(import std.option (...))`, and Glagol
|
|
resolves those imports to repo-root `std/result.slo` and `std/option.slo`
|
|
without local module copies.
|
|
|
|
`std/result.slo` and `std/option.slo` now carry their own export lists. The
|
|
matching contract fixtures are `examples/projects/std-import-result/` and
|
|
`examples/projects/std-import-option/`.
|
|
|
|
exp-45 does not add automatic standard-library imports, a `std.slo`
|
|
aggregator, package registry behavior, workspace/package `std` imports,
|
|
generic result helpers, generic option helpers, broad standard-library APIs,
|
|
stable ABI/layout/ownership, optimizer guarantees, benchmark thresholds, or
|
|
beta maturity.
|
|
|
|
## exp-44 (released experimental alpha)
|
|
|
|
Release label: `exp-44`
|
|
|
|
Release name: Standard Library Source Search Alpha
|
|
|
|
Release date: 2026-05-19
|
|
|
|
Status: released experimental alpha language/tooling contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_44_STANDARD_LIBRARY_SOURCE_SEARCH_ALPHA.md`.
|
|
|
|
exp-44 promotes the first explicit standard-library source search path:
|
|
ordinary project code may import the staged math helpers with
|
|
`(import std.math (...))` and Glagol resolves that import to repo-root
|
|
`std/math.slo` without copying `math.slo` into the project.
|
|
|
|
`std/math.slo` now carries its own export list so it can be imported as real
|
|
source. The matching contract fixture is
|
|
`examples/projects/std-import-math/`.
|
|
|
|
exp-44 does not add automatic standard-library imports, a `std.slo`
|
|
aggregator, package registry behavior, workspace/package `std` imports,
|
|
broad standard-library APIs, stable ABI/layout/ownership, optimizer
|
|
guarantees, benchmark thresholds, or beta maturity.
|
|
|
|
## exp-43 (released experimental alpha)
|
|
|
|
Release label: `exp-43`
|
|
|
|
Release name: Technical Whitepapers And Skills Alpha
|
|
|
|
Release date: 2026-05-19
|
|
|
|
Status: released experimental alpha documentation/tooling contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_43_TECHNICAL_WHITEPAPERS_AND_SKILLS_ALPHA.md`.
|
|
|
|
exp-43 publishes `docs/SLOVO_WHITEPAPER.md`, generated PDF publication
|
|
artifacts, and a repository-local beta language-design skill under
|
|
`.llm/skills/`.
|
|
|
|
exp-43 does not add source syntax, type forms, standard-library APIs, stable
|
|
ABI/layout/ownership, optimizer guarantees, benchmark thresholds,
|
|
cross-machine performance claims, package registry behavior, or beta maturity.
|
|
|
|
## exp-42 (released experimental alpha)
|
|
|
|
Release label: `exp-42`
|
|
|
|
Release name: Hot Loop Benchmark Mode Alpha
|
|
|
|
Release date: 2026-05-19
|
|
|
|
Status: released experimental alpha tooling contract. This is experimental
|
|
maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_42_HOT_LOOP_BENCHMARK_MODE_ALPHA.md`.
|
|
|
|
exp-42 keeps the Slovo language surface unchanged and pairs with Glagol
|
|
benchmark-suite gates that separate `cold-process` timing from
|
|
startup-amortized `hot-loop` timing.
|
|
|
|
exp-42 does not add source syntax, type forms, standard-library APIs, stable
|
|
ABI/layout/ownership, high-resolution timing APIs, optimizer guarantees,
|
|
benchmark thresholds, cross-machine performance claims, package registry
|
|
behavior, or beta maturity.
|
|
|
|
## exp-41 (released experimental alpha)
|
|
|
|
Release label: `exp-41`
|
|
|
|
Release name: Lisp Benchmark Comparison Alpha
|
|
|
|
Release date: 2026-05-19
|
|
|
|
Status: released experimental alpha tooling contract. This is experimental
|
|
maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_41_LISP_BENCHMARK_COMPARISON_ALPHA.md`.
|
|
|
|
exp-41 keeps the Slovo language surface unchanged and pairs with Glagol
|
|
benchmark-suite gates that compare two Lisp-family implementations:
|
|
Clojure and Common Lisp/SBCL.
|
|
|
|
exp-41 does not add source syntax, type forms, standard-library APIs, stable
|
|
ABI/layout/ownership, optimizer guarantees, benchmark thresholds,
|
|
cross-machine performance claims, package registry behavior, or beta maturity.
|
|
|
|
## exp-40 (released experimental alpha)
|
|
|
|
Release label: `exp-40`
|
|
|
|
Release name: Benchmark Suite And License Alpha
|
|
|
|
Release date: 2026-05-19
|
|
|
|
Status: released experimental alpha governance/tooling contract. This is
|
|
experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_40_BENCHMARK_SUITE_AND_LICENSE_ALPHA.md`.
|
|
|
|
exp-40 adds project licensing as `MIT OR Apache-2.0`, records alpha/beta
|
|
release naming criteria, and pairs with Glagol benchmark-suite gates for
|
|
Slovo/C/Rust/Python/Clojure local timing comparisons.
|
|
|
|
exp-40 does not add source syntax, type forms, standard-library APIs, stable
|
|
ABI/layout/ownership, optimizer guarantees, benchmark thresholds,
|
|
cross-machine performance claims, package registry behavior, or beta maturity.
|
|
|
|
## exp-39 (released experimental alpha)
|
|
|
|
Release label: `exp-39`
|
|
|
|
Release name: Standard Math Extensions And Benchmark Scaffold Alpha
|
|
|
|
Release date: 2026-05-19
|
|
|
|
Status: released experimental alpha Slovo contract. Matching Glagol source
|
|
checking, formatter, benchmark scaffold, gates, and review workflow are
|
|
required before broader compiler-support claims. This is experimental maturity
|
|
and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_39_STANDARD_MATH_EXTENSIONS_AND_BENCHMARK_SCAFFOLD_ALPHA.md`.
|
|
|
|
exp-39 extends staged `std/math.slo` with source-authored helpers for `i32`,
|
|
`i64`, and finite `f64`: `neg_*`, `cube_*`, `is_zero_*`, `is_positive_*`,
|
|
`is_negative_*`, and inclusive `in_range_*`. The existing exp-32 `abs`,
|
|
`min`, `max`, `clamp`, and `square` helpers remain.
|
|
|
|
The matching Glagol release adds a local `math-loop` benchmark scaffold for
|
|
comparing Slovo executable timing against C, Rust, and Python on the same
|
|
machine. Those timings are local tooling evidence only, not performance
|
|
thresholds or optimizer guarantees.
|
|
|
|
exp-39 does not add automatic `std` imports, repo-root `std/` search,
|
|
compiler-loaded standard-library source, new compiler-known `std.*` operation
|
|
names, trigonometry, `sqrt`, `pow`, modulo, bit operations, generic math,
|
|
overloads, traits, mixed numeric arithmetic, optimizer guarantees, benchmark
|
|
thresholds, stable standard-library APIs, stable ABI/layout/ownership,
|
|
manifest schema changes, or beta maturity.
|
|
|
|
## exp-38 (released experimental alpha)
|
|
|
|
Release label: `exp-38`
|
|
|
|
Release name: Standard Host Source Facades Alpha
|
|
|
|
Release date: 2026-05-19
|
|
|
|
Status: released experimental alpha Slovo contract. Matching Glagol source
|
|
checking, formatter, gates, and review workflow are required before broader
|
|
compiler-support claims. This is experimental maturity and not a beta maturity
|
|
claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_38_STANDARD_HOST_SOURCE_FACADES_ALPHA.md`.
|
|
|
|
exp-38 adds staged source facades over already released host/runtime calls:
|
|
|
|
- `std/random.slo` with `random_i32 : () -> i32` and
|
|
`random_i32_non_negative : () -> bool`
|
|
- `std/env.slo` with `get : (string) -> string` and
|
|
`get_result : (string) -> (result string i32)`
|
|
- `std/fs.slo` with `read_text`, `read_text_result`, `write_text_status`, and
|
|
`write_text_result`
|
|
|
|
The standard-library organization policy remains the exp-30 staged layout:
|
|
flat `std/*.slo` facades now, with a future `std.slo` aggregator/reexport layer
|
|
only after import/search semantics exist. This follows the Zig-like flat
|
|
standard facade policy adapted to current Slovo.
|
|
|
|
exp-38 does not add automatic `std` imports, repo-root `std/` search,
|
|
compiler-loaded standard-library source, new compiler-known `std.*` operation
|
|
names, standard-runtime catalog entries, seed/range/bytes/floats/UUID/crypto
|
|
random APIs, environment mutation/enumeration, rich host error ADTs,
|
|
binary/directory/streaming/async filesystem APIs, stable standard-library APIs,
|
|
stable ABI/layout/ownership, manifest schema changes, or beta maturity.
|
|
|
|
## exp-37 (released experimental alpha)
|
|
|
|
Release label: `exp-37`
|
|
|
|
Release name: Standard Time Source Facade Alpha
|
|
|
|
Release date: 2026-05-19
|
|
|
|
Status: released experimental alpha Slovo contract. Matching Glagol source
|
|
checking, formatter, gates, and review workflow are required before broader
|
|
compiler-support claims. This is experimental maturity and not a beta maturity
|
|
claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_37_STANDARD_TIME_SOURCE_FACADE_ALPHA.md`.
|
|
|
|
exp-37 adds the staged `std/time.slo` source facade with narrow wrappers over
|
|
the already released exp-8 host time calls:
|
|
|
|
- `monotonic_ms : () -> i32`
|
|
- `sleep_ms_zero : () -> i32`
|
|
|
|
`monotonic_ms` returns `std.time.monotonic_ms`. `sleep_ms_zero` calls
|
|
`std.time.sleep_ms 0` and then returns `0`, because user-defined unit-return
|
|
functions are not generally supported today and positive-duration timing
|
|
assertions remain deferred. exp-37 adds no compiler-known runtime names and no
|
|
entries to `STANDARD_RUNTIME.md`.
|
|
|
|
The standard-library organization policy remains the exp-30 staged layout:
|
|
flat `std/*.slo` facades now, with a future `std.slo` aggregator/reexport layer
|
|
only after import/search semantics exist. This follows the Zig-like flat
|
|
standard facade policy adapted to current Slovo.
|
|
|
|
exp-37 does not add automatic `std` imports, repo-root `std/` search,
|
|
compiler-loaded standard-library source, wall-clock/calendar/timezone APIs,
|
|
high-resolution timers, async timers, cancellation, scheduling guarantees, new
|
|
compiler-known `std.*` operation names, stable standard-library APIs, stable
|
|
ABI/layout/ownership, manifest schema changes, or beta maturity.
|
|
|
|
## exp-36 (released experimental alpha)
|
|
|
|
Release label: `exp-36`
|
|
|
|
Release name: Standard Option Source Helpers Alpha
|
|
|
|
Release date: 2026-05-19
|
|
|
|
Status: released experimental alpha Slovo contract. Matching Glagol source
|
|
checking, formatter, gates, and review workflow are required before broader
|
|
compiler-support claims. This is experimental maturity and not a beta maturity
|
|
claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_36_STANDARD_OPTION_SOURCE_HELPERS_ALPHA.md`.
|
|
|
|
exp-36 adds the staged `std/option.slo` source facade with concrete helpers for
|
|
the already supported `(option i32)` family:
|
|
|
|
- `is_some_i32`
|
|
- `is_none_i32`
|
|
- `unwrap_some_i32`
|
|
- `unwrap_or_i32`
|
|
|
|
These are ordinary Slovo source functions over existing `is_some`, `is_none`,
|
|
`unwrap_some`, and `if` behavior. `unwrap_or_i32` returns the `some` payload
|
|
when present and otherwise returns the supplied fallback. exp-36 adds no
|
|
compiler-known runtime names and no entries to `STANDARD_RUNTIME.md`.
|
|
|
|
The standard-library organization policy remains the exp-30 staged layout:
|
|
flat `std/*.slo` facades now, with a future `std.slo` aggregator/reexport layer
|
|
only after import/search semantics exist. This is inspired by Zig's
|
|
facade/reexport approach but adapted to current Slovo.
|
|
|
|
exp-36 does not add automatic `std` imports, repo-root `std/` search,
|
|
compiler-loaded standard-library source, generic option helpers, option
|
|
payloads beyond `i32`, new compiler-known `std.*` operation names, stable
|
|
standard-library APIs, stable ABI/layout/ownership, manifest schema changes,
|
|
or beta maturity. exp-45 later promotes only explicit `std.option` source
|
|
search for this helper module.
|
|
|
|
## exp-35 (released experimental alpha)
|
|
|
|
Release label: `exp-35`
|
|
|
|
Release name: Standard Result Bool Source Helpers Alpha
|
|
|
|
Release date: 2026-05-19
|
|
|
|
Status: released experimental alpha Slovo contract. Matching Glagol source
|
|
checking, formatter, gates, and review workflow are required before broader
|
|
compiler-support claims. This is experimental maturity and not a beta maturity
|
|
claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_35_STANDARD_RESULT_BOOL_SOURCE_HELPERS_ALPHA.md`.
|
|
|
|
exp-35 extends the staged `std/result.slo` source file with concrete bool
|
|
helpers for the exp-34 returned `(result bool i32)` family:
|
|
|
|
- `is_ok_bool`
|
|
- `is_err_bool`
|
|
- `unwrap_ok_bool`
|
|
- `unwrap_err_bool`
|
|
- `unwrap_or_bool`
|
|
|
|
These are ordinary Slovo source functions over existing compiler-known
|
|
`std.result.is_ok`, `std.result.is_err`, `std.result.unwrap_ok`, and
|
|
`std.result.unwrap_err` support for the exp-34 bool parse result flow.
|
|
`unwrap_or_bool` returns the ok payload when present and otherwise returns the
|
|
supplied fallback. exp-35 adds no compiler-known runtime names and no entries
|
|
to `STANDARD_RUNTIME.md`.
|
|
|
|
At exp-35, Slovo still did not promote automatic `std` imports, a repo-root
|
|
`std/` search path, compiler-loaded standard library source, source-authored
|
|
generic result helpers, source constructors for `(result bool i32)`, or
|
|
general source `match` over `(result bool i32)` beyond the
|
|
compiler-supported fixture flow. exp-45 later promotes only explicit
|
|
`std.result` source search for this helper module.
|
|
|
|
exp-35 does not add supported/formatter example fixtures. It does not add
|
|
generic `std.result.map`, generic `std.result.unwrap_or`,
|
|
`std.result.and_then`, option helper names, broad result payload families,
|
|
automatic standard-library imports, replacement of compiler-known `std.*`
|
|
calls, new compiler-known `std.*` operation names, stable standard-library
|
|
APIs, stable ABI/layout/ownership, manifest schema changes, or beta maturity.
|
|
|
|
## exp-34 (released experimental alpha)
|
|
|
|
Release label: `exp-34`
|
|
|
|
Release name: String Parse Bool Result Alpha
|
|
|
|
Release date: 2026-05-19
|
|
|
|
Status: released experimental alpha Slovo contract. Matching Glagol
|
|
implementation, tests, gates, and review workflow are required before broader
|
|
compiler-support claims. This is experimental maturity and not a beta maturity
|
|
claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_34_STRING_PARSE_BOOL_RESULT_ALPHA.md`.
|
|
|
|
exp-34 promotes exactly one string parse standard-runtime call:
|
|
|
|
- `std.string.parse_bool_result : (string) -> (result bool i32)`
|
|
|
|
The call parses exactly complete ASCII lowercase `true` and `false`. Success
|
|
returns `ok true` or `ok false`; the empty string, uppercase or mixed-case
|
|
text, leading or trailing whitespace, numeric text, and any other text return
|
|
`err 1`. It does not trap for ordinary parse failure.
|
|
|
|
The release adds byte-identical fixtures
|
|
`examples/supported/string-parse-bool-result.slo` and
|
|
`examples/formatter/string-parse-bool-result.slo`.
|
|
|
|
exp-34 does not add generic parse APIs, trap-based parse, bool parsing beyond
|
|
exact lowercase `true`/`false`, string/bytes parse, whitespace trimming,
|
|
case-insensitive parsing, locale or Unicode boolean parsing, numeric boolean
|
|
parsing, rich parse errors, source-authored `std/result.slo` bool wrappers,
|
|
automatic `std` imports, compiler-loaded `std` source, stable helper
|
|
ABI/layout/ownership, manifest schema changes, or beta maturity.
|
|
|
|
## exp-33 (released experimental alpha)
|
|
|
|
Release label: `exp-33`
|
|
|
|
Release name: Standard Result Source Helpers Alpha
|
|
|
|
Release date: 2026-05-19
|
|
|
|
Status: released experimental alpha Slovo contract. Matching Glagol source
|
|
checking, formatter, gates, and review workflow are required before broader
|
|
compiler-support claims. This is experimental maturity and not a beta maturity
|
|
claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_33_STANDARD_RESULT_SOURCE_HELPERS_ALPHA.md`.
|
|
|
|
exp-33 extends the staged `std/result.slo` source file with source helpers for
|
|
already promoted concrete result families. It fills out missing
|
|
`is_err_i64`, `unwrap_err_i64`, `is_err_string`, `unwrap_err_string`,
|
|
`is_err_f64`, and `unwrap_err_f64` wrappers alongside the existing i32
|
|
helpers, and adds concrete `unwrap_or_i32`, `unwrap_or_i64`,
|
|
`unwrap_or_string`, and `unwrap_or_f64` helpers.
|
|
|
|
The numeric `unwrap_or_*` helpers are ordinary Slovo source functions
|
|
implemented with `std.result.is_ok`, `std.result.unwrap_ok`, `if`,
|
|
parameters, and explicit signatures. `unwrap_or_string` uses the existing
|
|
`(result string i32)` `match` shape to return the payload or fallback.
|
|
exp-33 adds no compiler-known runtime names and no entries to
|
|
`STANDARD_RUNTIME.md`.
|
|
|
|
At exp-33, Slovo still did not promote automatic `std` imports, a repo-root
|
|
`std/` search path, or compiler-loaded standard library source. exp-45 later
|
|
promotes explicit `std.result` source search while keeping automatic imports
|
|
deferred.
|
|
|
|
exp-33 does not add supported/formatter example fixtures. It does not add
|
|
generic `std.result.map`, generic `std.result.unwrap_or`,
|
|
`std.result.and_then`, option helper names, result payload families beyond the
|
|
already promoted concrete ones, automatic standard-library imports, replacement
|
|
of compiler-known `std.*` calls, new compiler-known `std.*` operation names,
|
|
stable standard-library APIs, stable ABI/layout/ownership, manifest schema
|
|
changes, or beta maturity.
|
|
|
|
## exp-32 (released experimental alpha)
|
|
|
|
Release label: `exp-32`
|
|
|
|
Release name: Standard Math Source Helpers Alpha
|
|
|
|
Release date: 2026-05-19
|
|
|
|
Status: released experimental alpha Slovo contract. Matching Glagol source
|
|
checking, formatter, gates, and review workflow are required before broader
|
|
compiler-support claims. This is experimental maturity and not a beta maturity
|
|
claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_32_STANDARD_MATH_SOURCE_HELPERS_ALPHA.md`.
|
|
|
|
exp-32 extends the staged `std/math.slo` source file with source-authored
|
|
helpers expressible in current Slovo:
|
|
|
|
- `abs_i64`, `min_i64`, `max_i64`, `clamp_i64`, and `square_i64`
|
|
- `abs_f64`, `min_f64`, `max_f64`, and `clamp_f64`
|
|
|
|
The existing exp-30 `i32` helpers and `square_f64` remain in place. The
|
|
helpers use existing same-type arithmetic/comparison, `if`, literals, calls,
|
|
and explicit signatures. They add no compiler-known runtime names and no
|
|
entries to `STANDARD_RUNTIME.md`.
|
|
|
|
At exp-32, Slovo did not yet promote automatic `std` imports, a repo-root
|
|
`std/` search path, or compiler-loaded standard library source. exp-44 later
|
|
promotes the first explicit `std.math` source-search path while keeping
|
|
automatic imports deferred.
|
|
|
|
exp-32 does not add supported/formatter example fixtures. It does not add
|
|
automatic standard-library imports, replacement of compiler-known `std.*`
|
|
calls, new compiler-known `std.*` operation names, a broad math library,
|
|
trigonometry, `sqrt`, `pow`, `f32`, unsigned or narrower integers, generics,
|
|
traits, overloads, mixed numeric arithmetic, numeric containers, stable
|
|
standard-library APIs, stable ABI/layout/ownership, manifest schema changes,
|
|
or beta maturity.
|
|
|
|
## exp-31 (released experimental alpha)
|
|
|
|
Release label: `exp-31`
|
|
|
|
Release name: Checked F64 To I64 Result Alpha
|
|
|
|
Release date: 2026-05-19
|
|
|
|
Status: released experimental alpha Slovo contract. Matching Glagol
|
|
implementation, tests, gates, and review workflow are required before broader
|
|
compiler-support claims. This is experimental maturity and not a beta maturity
|
|
claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_31_CHECKED_F64_TO_I64_RESULT_ALPHA.md`.
|
|
|
|
exp-31 promotes exactly one checked `f64` to `i64` result standard-runtime
|
|
call:
|
|
|
|
- `std.num.f64_to_i64_result : (f64) -> (result i64 i32)`
|
|
|
|
The call returns `ok value` only when the input is finite, exactly integral,
|
|
and within the signed `i64` range `-9223372036854775808` through
|
|
`9223372036854775807`. It returns `err 1` for non-finite, fractional, or
|
|
out-of-range input, without trapping for ordinary conversion failure.
|
|
|
|
The release adds byte-identical fixtures
|
|
`examples/supported/f64-to-i64-result.slo` and
|
|
`examples/formatter/f64-to-i64-result.slo`, plus a `std/num.slo` wrapper over
|
|
the promoted compiler-known call. The out-of-range fixture value is the
|
|
formatter-stable conservative `9223372036854776000.0`; the accepted exact
|
|
`9223372036854775808.0` spelling formats to that value. Detailed edge behavior
|
|
near the `f64`/`i64` limits remains implementation-owned Glagol test coverage.
|
|
|
|
exp-31 does not add unchecked casts, unchecked `f64` to `i64`, cast syntax,
|
|
generic `cast_checked`, `f32`, unsigned or narrower integer families,
|
|
additional numeric conversion families, mixed numeric arithmetic, broad math,
|
|
numeric containers, stable helper ABI/layout/ownership, manifest schema
|
|
changes, or beta maturity.
|
|
|
|
## exp-30 (released experimental alpha)
|
|
|
|
Release label: `exp-30`
|
|
|
|
Release name: Standard Library Source Layout Alpha
|
|
|
|
Release date: 2026-05-19
|
|
|
|
Status: released experimental alpha Slovo contract. Matching Glagol
|
|
implementation, tests, gates, and review workflow are required before broader
|
|
compiler-support claims. This is experimental maturity and not a beta maturity
|
|
claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_30_STANDARD_LIBRARY_SOURCE_LAYOUT_ALPHA.md`.
|
|
|
|
exp-30 establishes `std/` as the Slovo source home for staged standard library
|
|
modules and examples. It adds `std/README.md`, `std/io.slo`,
|
|
`std/string.slo`, `std/num.slo`, `std/result.slo`, and `std/math.slo`.
|
|
|
|
`std/math.slo` contains narrow source-authored helpers expressible with the
|
|
current language: `abs_i32`, `min_i32`, `max_i32`, `clamp_i32`,
|
|
`square_i32`, and `square_f64`. The other `std/*.slo` files provide small
|
|
source wrappers over already promoted compiler-known standard-runtime calls
|
|
where current Slovo can express the wrapper cleanly.
|
|
|
|
The release adds the conservative formatter example
|
|
`examples/formatter/std-source-layout-alpha.slo`. It demonstrates the helper
|
|
shape and layout contract without claiming repo-root `std` import/search
|
|
support.
|
|
|
|
exp-30 does not add automatic standard-library imports, replace
|
|
compiler-known `std.*` calls with source implementations, add compiler-known
|
|
`std.*` operation names, change `STANDARD_RUNTIME.md`, add generics, traits,
|
|
overloads, package registry behavior, manifest schema changes, stable
|
|
standard-library APIs, stable ABI/layout/ownership, broad math, trigonometry,
|
|
`pow`, `sqrt`, `f32`, unsigned or narrower integers, mixed numeric
|
|
arithmetic, numeric containers, or beta maturity.
|
|
|
|
## exp-29 (released experimental alpha)
|
|
|
|
Release label: `exp-29`
|
|
|
|
Release name: Numeric Struct Fields Alpha
|
|
|
|
Release date: 2026-05-19
|
|
|
|
Status: released experimental alpha Slovo contract. Matching Glagol
|
|
implementation, tests, gates, and review workflow are required before broader
|
|
compiler-support claims. This is experimental maturity and not a beta maturity
|
|
claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_29_NUMERIC_STRUCT_FIELDS_ALPHA.md`.
|
|
|
|
exp-29 promotes direct immutable struct field declarations whose field types
|
|
are exactly `i64` or `f64`, alongside already supported direct `i32`, `bool`,
|
|
immutable `string`, and current enum fields.
|
|
|
|
It supports struct constructors with `i64` and finite `f64` field
|
|
initializers, immutable value flow through locals, parameters, returns, and
|
|
calls, field access returning `i64` or `f64`, and use of accessed fields with
|
|
existing same-type arithmetic/comparison and existing numeric print/format
|
|
helpers where already supported.
|
|
|
|
The release adds byte-identical fixtures
|
|
`examples/supported/numeric-struct-fields.slo` and
|
|
`examples/formatter/numeric-struct-fields.slo`.
|
|
|
|
exp-29 keeps the exp-20 finite-only `f64` policy. It does not add 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, or beta maturity.
|
|
|
|
## exp-28 (released experimental alpha)
|
|
|
|
Release label: `exp-28`
|
|
|
|
Release name: String Parse F64 Result Alpha
|
|
|
|
Release date: 2026-05-19
|
|
|
|
Status: released experimental alpha Slovo contract. Matching Glagol
|
|
implementation, tests, gates, and review workflow are required before broader
|
|
compiler-support claims. This is experimental maturity and not a beta maturity
|
|
claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_28_STRING_PARSE_F64_RESULT_ALPHA.md`.
|
|
|
|
exp-28 promotes exactly one string parse standard-runtime call:
|
|
|
|
- `std.string.parse_f64_result : (string) -> (result f64 i32)`
|
|
|
|
The call parses complete finite ASCII decimal `f64` text. Success returns
|
|
`ok value`; ordinary parse failure, non-finite text, trailing or leading
|
|
unsupported characters, and out-of-domain input return `err 1`. It does not
|
|
trap for ordinary parse or domain failure.
|
|
|
|
The release adds byte-identical fixtures
|
|
`examples/supported/string-parse-f64-result.slo` and
|
|
`examples/formatter/string-parse-f64-result.slo`.
|
|
|
|
exp-28 does not add generic parse, bool/string/bytes parse, locale parsing,
|
|
Unicode digit parsing, underscores, rich parse errors, stable helper
|
|
ABI/layout/ownership, result genericity, f64 containers, mixed numeric
|
|
arithmetic, manifest schema changes, or beta maturity.
|
|
|
|
## exp-27 (released experimental alpha)
|
|
|
|
Release label: `exp-27`
|
|
|
|
Release name: Checked F64 To I32 Result Alpha
|
|
|
|
Release date: 2026-05-19
|
|
|
|
Status: released experimental alpha Slovo contract. Matching Glagol
|
|
implementation, tests, gates, and review workflow are required before broader
|
|
compiler-support claims. This is experimental maturity and not a beta maturity
|
|
claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_27_F64_TO_I32_RESULT_ALPHA.md`.
|
|
|
|
exp-27 promotes exactly one checked `f64` to `i32` result standard-runtime
|
|
call:
|
|
|
|
- `std.num.f64_to_i32_result : (f64) -> (result i32 i32)`
|
|
|
|
The call returns `ok value` only when the input is finite, exactly integral,
|
|
and within the signed `i32` range `-2147483648` through `2147483647`. It
|
|
returns `err 1` for non-finite, fractional, or out-of-range input, without
|
|
trapping for ordinary conversion failure.
|
|
|
|
The release adds byte-identical fixtures
|
|
`examples/supported/f64-to-i32-result.slo` and
|
|
`examples/formatter/f64-to-i32-result.slo`.
|
|
|
|
exp-27 does not add 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 helper ABI/layout/ownership, manifest schema changes, or
|
|
beta maturity.
|
|
|
|
## exp-26 (released experimental alpha)
|
|
|
|
Release label: `exp-26`
|
|
|
|
Release name: F64 To String Alpha
|
|
|
|
Release date: 2026-05-18
|
|
|
|
Status: released experimental alpha Slovo contract. Matching Glagol
|
|
implementation, tests, gates, and review workflow are required before broader
|
|
compiler-support claims. This is experimental maturity and not a beta maturity
|
|
claim.
|
|
|
|
The normative release contract is `.llm/EXP_26_F64_TO_STRING_ALPHA.md`.
|
|
|
|
exp-26 promotes exactly one finite `f64` formatting standard-runtime call:
|
|
|
|
- `std.num.f64_to_string : (f64) -> string`
|
|
|
|
The release adds byte-identical fixtures
|
|
`examples/supported/f64-to-string.slo` and
|
|
`examples/formatter/f64-to-string.slo`.
|
|
|
|
exp-26 does not add `f32`, `f64` parse, generic format/display/interpolation,
|
|
locale/base/radix/grouping/padding/precision controls, stable NaN/infinity
|
|
text, implicit conversion, stable helper ABI/layout/ownership, manifest schema
|
|
changes, or beta maturity.
|
|
|
|
## exp-25 (released experimental alpha)
|
|
|
|
Release label: `exp-25`
|
|
|
|
Release name: String Parse I64 Result Alpha
|
|
|
|
Release date: 2026-05-18
|
|
|
|
Status: released experimental alpha Slovo contract. Matching Glagol
|
|
implementation, tests, gates, and review workflow are required before broader
|
|
compiler-support claims. This is experimental maturity and not a beta maturity
|
|
claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_25_STRING_PARSE_I64_RESULT_ALPHA.md`.
|
|
|
|
exp-25 promotes exactly one string parse standard-runtime call:
|
|
|
|
- `std.string.parse_i64_result : (string) -> (result i64 i32)`
|
|
|
|
The call parses an entire non-empty ASCII signed decimal `i64` string with an
|
|
optional leading `-`. Success returns `ok value`; parse failure or
|
|
out-of-range input returns `err 1`. It does not trap for ordinary parse or
|
|
range failure.
|
|
|
|
The release also adds byte-identical fixtures
|
|
`examples/supported/string-parse-i64-result.slo` and
|
|
`examples/formatter/string-parse-i64-result.slo`.
|
|
|
|
exp-25 does not add `f64` parse, generic parse APIs, a leading `+`,
|
|
whitespace trimming, underscores, base/radix prefixes, locale-aware parsing,
|
|
Unicode digit parsing, rich parse errors, stable helper ABI/layout/ownership,
|
|
manifest schema changes, or beta maturity.
|
|
|
|
## exp-24 (released experimental alpha)
|
|
|
|
Release label: `exp-24`
|
|
|
|
Release name: Integer To String Alpha
|
|
|
|
Release date: 2026-05-18
|
|
|
|
Status: released experimental alpha Slovo contract. Matching Glagol
|
|
implementation, tests, gates, and review workflow are required before broader
|
|
compiler-support claims. This is experimental maturity and not a beta maturity
|
|
claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_24_INTEGER_TO_STRING_ALPHA.md`.
|
|
|
|
exp-24 promotes exactly two integer formatting standard-runtime calls:
|
|
|
|
- `std.num.i32_to_string : (i32) -> string`
|
|
- `std.num.i64_to_string : (i64) -> string`
|
|
|
|
Each call returns a decimal signed ASCII string for the input value. Negative
|
|
values include a leading `-`; non-negative values have no leading `+`. The
|
|
operations are compiler/runtime-backed for now and may later be rewritten in
|
|
Slovo `std` source once the language can host them.
|
|
|
|
The release also adds byte-identical fixtures
|
|
`examples/supported/integer-to-string.slo` and
|
|
`examples/formatter/integer-to-string.slo`.
|
|
|
|
exp-24 does not add `f64` formatting, parse APIs, locale/base/radix/grouping
|
|
or padding controls, generic format/display traits, implicit conversions,
|
|
stable standard-library implementation source, stable helper ABI/layout and
|
|
ownership, manifest schema changes, or beta maturity.
|
|
|
|
## exp-23 (released experimental alpha)
|
|
|
|
Release label: `exp-23`
|
|
|
|
Release name: Checked I64-To-I32 Conversion Alpha
|
|
|
|
Release date: 2026-05-18
|
|
|
|
Status: released experimental alpha Slovo contract. Matching Glagol
|
|
implementation, tests, gates, and review workflow are required before broader
|
|
compiler-support claims. This is experimental maturity and not a beta maturity
|
|
claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_23_CHECKED_I64_TO_I32_CONVERSION_ALPHA.md`.
|
|
|
|
exp-23 promotes exactly one checked narrowing standard-runtime call:
|
|
|
|
- `std.num.i64_to_i32_result : (i64) -> (result i32 i32)`
|
|
|
|
The call returns `ok value` when the signed `i64` input is within the signed
|
|
`i32` range `-2147483648` through `2147483647`, and returns `err 1` when the
|
|
input is outside that range. It does not trap on range failure.
|
|
|
|
The release also adds byte-identical fixtures
|
|
`examples/supported/checked-i64-to-i32-conversion.slo` and
|
|
`examples/formatter/checked-i64-to-i32-conversion.slo`.
|
|
|
|
The operation is an explicit call returning the existing concrete
|
|
`(result i32 i32)` family. exp-23 does not add implicit numeric promotion,
|
|
cast syntax, `std.num.cast`, checked cast generics, mixed numeric operators,
|
|
any other narrowing conversion, `f64` conversions, unsigned or narrower
|
|
integer families, numeric parse/format APIs, standard-library implementation
|
|
promises, stable ABI/layout, manifest schema changes, or beta maturity.
|
|
|
|
## exp-22 (released experimental alpha)
|
|
|
|
Release label: `exp-22`
|
|
|
|
Release name: Numeric Widening Conversions Alpha
|
|
|
|
Release date: 2026-05-18
|
|
|
|
Status: released experimental alpha Slovo contract. Matching Glagol
|
|
implementation, tests, gates, and review workflow are required before broader
|
|
compiler-support claims. This is experimental maturity and not a beta maturity
|
|
claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_22_NUMERIC_WIDENING_CONVERSIONS_ALPHA.md`.
|
|
|
|
exp-22 promotes exactly three explicit standard-runtime numeric widening
|
|
calls:
|
|
|
|
- `std.num.i32_to_i64 : (i32) -> i64`
|
|
- `std.num.i32_to_f64 : (i32) -> f64`
|
|
- `std.num.i64_to_f64 : (i64) -> f64`
|
|
|
|
The release also adds byte-identical fixtures
|
|
`examples/supported/numeric-widening-conversions.slo` and
|
|
`examples/formatter/numeric-widening-conversions.slo`.
|
|
|
|
These operations are explicit calls. exp-22 does not add implicit numeric
|
|
promotion, mixed `i32`/`i64`/`f64` arithmetic or comparison, narrowing
|
|
conversions, checked numeric conversion result APIs, numeric cast syntax,
|
|
`f32`, unsigned or narrower integer families, numeric parse/format APIs,
|
|
stable floating rounding or formatting guarantees, stable ABI/layout, manifest
|
|
schema changes, or beta maturity.
|
|
|
|
## exp-21 (released experimental contract)
|
|
|
|
Release label: `exp-21`
|
|
|
|
Release name: I64 Numeric Primitive Alpha
|
|
|
|
Release date: 2026-05-18
|
|
|
|
Status: released experimental Slovo contract. Matching Glagol implementation,
|
|
tests, gates, and review workflow are required before broader
|
|
compiler-support claims. This is experimental maturity and not a beta maturity
|
|
claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_21_I64_NUMERIC_PRIMITIVE_ALPHA.md`.
|
|
|
|
exp-21 allows direct `i64` value flow, explicit signed decimal `i64` literal
|
|
atoms, same-type arithmetic/comparison, and one print operation:
|
|
|
|
```slo
|
|
(fn adjust ((value i64) (delta i64)) -> i64
|
|
(+ value delta))
|
|
```
|
|
|
|
It promotes:
|
|
|
|
- direct `i64` function parameters and returns
|
|
- immutable `let` locals declared as `i64`
|
|
- explicit signed decimal `i64` literal atoms such as `2147483648i64`,
|
|
`42i64`, and `-7i64`
|
|
- calls passing and returning `i64`
|
|
- same-type `i64` `+`, `-`, `*`, and `/`
|
|
- same-type `i64` `=`, `<`, `>`, `<=`, and `>=`
|
|
- `std.io.print_i64`
|
|
- byte-identical fixtures
|
|
`examples/supported/i64-numeric-primitive.slo` and
|
|
`examples/formatter/i64-numeric-primitive.slo`
|
|
|
|
Unsuffixed integer literals remain the existing `i32` surface, and `main`
|
|
continues to return `i32`.
|
|
|
|
exp-21 does not add `f32`, unsigned integers, narrower integer widths beyond
|
|
existing `i32`, `char`, `bytes`, `decimal`, numeric casts, implicit promotion,
|
|
mixed `i32`/`i64`/`f64` arithmetic, generic numeric operators, i64
|
|
arrays/vectors/options/results/enum payloads/struct fields, mutable `i64`
|
|
locals, `parse_i64`, random `i64`, broader math APIs, stable divide-by-zero or
|
|
overflow diagnostics, stable ABI/layout, manifest schema changes, or beta
|
|
maturity.
|
|
|
|
## exp-20 (released experimental contract)
|
|
|
|
Release label: `exp-20`
|
|
|
|
Release name: F64 Numeric Primitive Alpha
|
|
|
|
Release date: 2026-05-18
|
|
|
|
Status: released experimental Slovo contract. Matching Glagol implementation,
|
|
tests, gates, and review workflow are required before broader
|
|
compiler-support claims. This is experimental maturity and not a beta maturity
|
|
claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_20_F64_NUMERIC_PRIMITIVE_ALPHA.md`.
|
|
|
|
exp-20 allows direct `f64` value flow, same-type arithmetic/comparison, and
|
|
one print operation:
|
|
|
|
```slo
|
|
(fn half ((value f64)) -> f64
|
|
(/ value 2.0))
|
|
```
|
|
|
|
It promotes:
|
|
|
|
- direct `f64` function parameters and returns
|
|
- immutable `let` locals declared as `f64`
|
|
- decimal `f64` literals in `f64` contexts
|
|
- calls passing and returning `f64`
|
|
- same-type `f64` `+`, `-`, `*`, and `/`
|
|
- same-type `f64` `=`, `<`, `>`, `<=`, and `>=`
|
|
- `std.io.print_f64`
|
|
- byte-identical fixtures
|
|
`examples/supported/f64-numeric-primitive.slo` and
|
|
`examples/formatter/f64-numeric-primitive.slo`
|
|
|
|
exp-20 does not add `f32`, `i64/u64/u32/u16/u8/i16/i8`, `char`, `bytes`,
|
|
`decimal`, numeric casts, implicit promotion, mixed `i32`/`f64` arithmetic,
|
|
generic numeric operators, f64 arrays/vectors/options/results/enum payloads/
|
|
struct fields, mutable `f64` locals, `parse_f64`, random floats, broader math
|
|
library calls, stable NaN/infinity/rounding semantics, stable print text
|
|
formatting beyond newline-terminated output, stable ABI/layout, manifest
|
|
schema changes, or beta maturity.
|
|
|
|
## exp-19 (released experimental contract)
|
|
|
|
Release label: `exp-19`
|
|
|
|
Release name: Primitive Struct Fields Alpha
|
|
|
|
Release date: 2026-05-18
|
|
|
|
Status: released experimental Slovo contract. Matching Glagol implementation,
|
|
tests, gates, and review workflow are required before broader compiler-support
|
|
claims. This is experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_19_PRIMITIVE_STRUCT_FIELDS_ALPHA.md`.
|
|
|
|
exp-19 allows direct `bool` and immutable `string` field types alongside
|
|
already supported direct `i32` fields and exp-18 direct enum fields:
|
|
|
|
```slo
|
|
(struct PrimitiveRecord
|
|
(id i32)
|
|
(active bool)
|
|
(label string))
|
|
```
|
|
|
|
It promotes:
|
|
|
|
- struct field declarations using direct `bool` and immutable `string`
|
|
field types
|
|
- struct construction with `i32`, `bool`, and immutable `string` field values
|
|
- field access returning the declared primitive field type
|
|
- bool field access in existing predicate positions
|
|
- string field access in existing string equality and `std.string.len`
|
|
- immutable local, parameter, return, call, test, and `main` flow for structs
|
|
carrying primitive fields
|
|
- byte-identical fixtures
|
|
`examples/supported/primitive-struct-fields.slo` and
|
|
`examples/formatter/primitive-struct-fields.slo`
|
|
|
|
exp-19 does not add arrays, vectors, options, or results containing
|
|
primitive-field structs, primitive fields inside containers, nested structs,
|
|
struct mutation, string mutation, ownership/cleanup guarantees beyond existing
|
|
string behavior, broader string operations, printing beyond existing calls,
|
|
generics, methods, traits, manifest schema changes, package/import widening,
|
|
stable ABI/layout, or beta maturity.
|
|
|
|
## exp-18 (released experimental contract)
|
|
|
|
Release label: `exp-18`
|
|
|
|
Release name: Enum Struct Fields Alpha
|
|
|
|
Release date: 2026-05-18
|
|
|
|
Status: released experimental Slovo contract. Matching Glagol implementation,
|
|
tests, gates, and review workflow are required before broader compiler-support
|
|
claims. This is experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_18_ENUM_STRUCT_FIELDS_ALPHA.md`.
|
|
|
|
exp-18 allows current user-defined enum types as direct struct field types:
|
|
|
|
```slo
|
|
(enum Status Ready Blocked)
|
|
|
|
(enum Reading
|
|
Missing
|
|
(Value i32))
|
|
|
|
(struct TaggedReading
|
|
(status Status)
|
|
(reading Reading))
|
|
```
|
|
|
|
It promotes:
|
|
|
|
- struct field declarations using current enum type names directly
|
|
- struct construction with payloadless and unary `i32` enum field values
|
|
- field access returning the declared enum type
|
|
- same-enum equality on field access
|
|
- exhaustive enum `match` on field access
|
|
- immutable local, parameter, return, call, test, and `main` flow for structs
|
|
carrying enum fields
|
|
- byte-identical fixtures
|
|
`examples/supported/enum-struct-fields.slo` and
|
|
`examples/formatter/enum-struct-fields.slo`
|
|
|
|
The enum surface is exactly exp-4 payloadless variants plus exp-16 unary
|
|
`i32` payload variants. exp-18 does not add payload types other than `i32`,
|
|
multiple payloads, record variants, tuple variants beyond one `i32`, arrays,
|
|
vectors, options, or results containing enum values, nested structs, struct
|
|
mutation, enum mutation, printing, ordering, hashing, reflection, stable
|
|
ABI/layout, manifest schema changes, import aliases/globs/re-exports,
|
|
registry/package-manager claims, generics, or beta maturity.
|
|
|
|
## exp-17 (released experimental contract)
|
|
|
|
Release label: `exp-17`
|
|
|
|
Release name: Project Enum Imports Alpha
|
|
|
|
Release date: 2026-05-18
|
|
|
|
Status: released experimental Slovo contract. Matching Glagol implementation,
|
|
tests, gates, and review workflow are required before broader compiler-support
|
|
claims. This is experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_17_PROJECT_ENUM_IMPORTS_ALPHA.md`.
|
|
|
|
exp-17 extends the existing explicit project/workspace module export and
|
|
import lists so top-level user-defined enum names can cross local module
|
|
boundaries:
|
|
|
|
```slo
|
|
(module readings (export Reading))
|
|
|
|
(import readings (Reading))
|
|
```
|
|
|
|
It promotes imported enum type use in:
|
|
|
|
- function signatures
|
|
- immutable locals
|
|
- calls and returns
|
|
- same-enum equality
|
|
- exhaustive enum matches
|
|
- qualified constructors
|
|
|
|
The enum surface is exactly exp-4 payloadless variants plus exp-16 unary
|
|
`i32` payload variants. Payloadless constructors remain zero-argument
|
|
qualified constructors, and unary payload constructors still take exactly one
|
|
`i32` argument.
|
|
|
|
The exp-17 project fixture is:
|
|
|
|
```text
|
|
examples/projects/enum-imports/slovo.toml
|
|
examples/projects/enum-imports/src/readings.slo
|
|
examples/projects/enum-imports/src/main.slo
|
|
```
|
|
|
|
exp-17 does not add payload types other than `i32`, multiple payloads, record
|
|
variants, tuple variants beyond one `i32`, generics, containers, mutation,
|
|
printing, ordering, hashing, reflection, unqualified variant constructors,
|
|
stable ABI/layout, manifest schema changes, registry/package-manager claims,
|
|
or beta maturity.
|
|
|
|
## exp-16 (released experimental contract)
|
|
|
|
Release label: `exp-16`
|
|
|
|
Release name: Unary I32 Enum Payloads Alpha
|
|
|
|
Release date: 2026-05-18
|
|
|
|
Status: released experimental Slovo contract. Matching Glagol implementation,
|
|
tests, gates, and review workflow are required before broader compiler-support
|
|
claims. This is experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_16_UNARY_I32_ENUM_PAYLOADS_ALPHA.md`.
|
|
|
|
exp-16 extends user-defined enums to allow payloadless variants plus unary
|
|
`i32` payload variants:
|
|
|
|
```slo
|
|
(enum Reading
|
|
Missing
|
|
(Value i32)
|
|
(Offset i32))
|
|
```
|
|
|
|
It promotes:
|
|
|
|
- qualified unary payload constructors such as `(Reading.Value value)`
|
|
- payloadless constructors such as `(Reading.Missing)` unchanged
|
|
- enum `match` arms with payloadless patterns and one immutable arm-local
|
|
payload binding for payload variants
|
|
- immutable local, parameter, return, call, test, and `main` flow for enum
|
|
values
|
|
- same-enum equality where payload variants compare by tag and payload, and
|
|
payloadless variants compare by tag
|
|
- byte-identical fixtures
|
|
`examples/supported/enum-payload-i32.slo` and
|
|
`examples/formatter/enum-payload-i32.slo`
|
|
|
|
exp-16 does not add payload types other than `i32`, multiple payloads, record
|
|
variants, tuple variants beyond one `i32`, string/bool/struct/enum payloads,
|
|
generic enums, generic functions, type aliases, traits, methods, derives,
|
|
wildcard/rest/nested enum patterns, pattern guards, enum payload mutation,
|
|
enum values inside arrays/structs/options/results/vectors, enum printing,
|
|
ordering, hashing, reflection, discriminants, stable ABI/layout, manifest
|
|
schema changes, runtime ABI/layout claims, moving option/result to ordinary
|
|
standard-library types, or beta maturity.
|
|
|
|
## exp-15 (released experimental contract)
|
|
|
|
Release label: `exp-15`
|
|
|
|
Release name: Result Helper Standard Names Alpha
|
|
|
|
Release date: 2026-05-18
|
|
|
|
Status: released experimental Slovo contract with matching Glagol
|
|
implementation, tests, gates, and review workflow. This is experimental
|
|
maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_15_RESULT_HELPER_STANDARD_NAMES_ALPHA.md`.
|
|
|
|
exp-15 is a narrow result helper standard-name alpha:
|
|
|
|
- promotes preferred source-level names `std.result.is_ok`,
|
|
`std.result.is_err`, `std.result.unwrap_ok`, and `std.result.unwrap_err`
|
|
- accepts those names only for `(result i32 i32)` and `(result string i32)`
|
|
- keeps legacy unqualified `is_ok`, `is_err`, `unwrap_ok`, and `unwrap_err`
|
|
documented as compatibility syntax where already supported
|
|
- reuses existing result observer and trap-based unwrap semantics
|
|
- adds byte-identical fixtures
|
|
`examples/supported/result-helpers.slo` and
|
|
`examples/formatter/result-helpers.slo`
|
|
- keeps `slovo.artifact-manifest` schema version `1`
|
|
|
|
exp-15 does not add `std.result.map`, `std.result.unwrap_or`,
|
|
`std.result.and_then`, option helper standard names, new payload families,
|
|
generic result, user-defined error payloads, runtime ABI/layout claims,
|
|
manifest schema changes, enum payloads, or beta maturity.
|
|
|
|
## exp-14 (released experimental contract)
|
|
|
|
Release label: `exp-14`
|
|
|
|
Release name: Standard Runtime Conformance Alignment
|
|
|
|
Release date: 2026-05-18
|
|
|
|
Status: released experimental conformance alignment after matching Glagol
|
|
exp-14 implementation, tests, focused conformance gate, full release gate, and
|
|
review passed. This is experimental maturity and not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_14_STANDARD_RUNTIME_CONFORMANCE_ALIGNMENT.md`.
|
|
|
|
exp-14 is a conformance/readiness alignment seed over the released exp-13
|
|
surface:
|
|
|
|
- catalogs every promoted compiler-known `std.*` operation through exp-13 in
|
|
`STANDARD_RUNTIME.md`
|
|
- keeps the supported fixture inventory explicit
|
|
- adds byte-identical canonical fixtures for the already released exp-8 time
|
|
operations:
|
|
`examples/supported/time-sleep.slo` and
|
|
`examples/formatter/time-sleep.slo`
|
|
- requires Slovo/Glagol supported and formatter fixtures to stay byte-aligned
|
|
where matching files exist
|
|
- requires a fresh-project workflow covering `new`, `check`, `fmt --check`,
|
|
`test`, `doc`, and `build` where the hosted toolchain exists
|
|
- requires an integrated workflow over already released features: modules/
|
|
imports, tests, strings, `std.string.concat`,
|
|
`std.string.parse_i32_result`, result `match`, `(vec i32)`, enum `match`,
|
|
and `std.io.print_i32`
|
|
- keeps the release gate strict: diff checks, `cargo fmt --check`,
|
|
`cargo test`, ignored promotion gate, binary smoke, LLVM smoke, and review
|
|
`PASS`
|
|
|
|
The exp-14 release gate passed with Slovo/Glagol diff checks,
|
|
`cargo fmt --check`, `cargo test`, ignored promotion gate, binary smoke, LLVM
|
|
smoke, focused conformance gate, and review `PASS`.
|
|
|
|
exp-14 adds no new source syntax, type forms, runtime APIs, compiler-known
|
|
`std.*` names, standard library functions, manifest schema version,
|
|
ABI/layout promise, runtime headers/libraries, or beta maturity.
|
|
|
|
## exp-13 (released experimental contract)
|
|
|
|
Release label: `exp-13`
|
|
|
|
Release date: 2026-05-18
|
|
|
|
Status: released experimental compiler support after matching Glagol exp-13
|
|
implementation, tests, review, and full release gate coverage passed. This is
|
|
not a beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_13_STRING_PARSE_I32_RESULT_ALPHA.md`.
|
|
|
|
exp-13 is a narrow string parse i32 result alpha:
|
|
|
|
- `std.string.parse_i32_result: (string) -> (result i32 i32)`
|
|
- parses the entire input string as ASCII decimal signed `i32`
|
|
- accepts an optional leading `-` and at least one ASCII digit
|
|
- success returns `(ok i32 i32 value)`
|
|
- empty input, non-digits, plus signs, whitespace, trailing bytes,
|
|
non-ASCII digits, and out-of-range values return `(err i32 i32 1)`
|
|
- only ordinary parse error code `err 1` is promised
|
|
- the operation composes structurally with
|
|
`std.io.read_stdin_result` by matching the stdin result and parsing only the
|
|
`ok` string payload
|
|
|
|
Release fixtures:
|
|
|
|
```text
|
|
examples/supported/string-parse-i32-result.slo
|
|
examples/formatter/string-parse-i32-result.slo
|
|
```
|
|
|
|
exp-13 does not add trap-based `std.string.parse_i32`, parsing floats, bools,
|
|
strings, or bytes, whitespace/locale/base-prefix/underscore/plus-sign parsing,
|
|
generic parse APIs, parse error messages or richer codes, Unicode digit
|
|
parsing, string indexing or slicing, tokenizer/scanner APIs, stdin line APIs,
|
|
stable helper ABI/layout, manifest schema fields, or beta maturity.
|
|
|
|
## exp-12 (released experimental contract)
|
|
|
|
Release label: `exp-12`
|
|
|
|
Release date: 2026-05-18
|
|
|
|
Status: released experimental compiler support after matching Glagol exp-12
|
|
implementation, tests, review, and release gate coverage passed. This is not a
|
|
beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_12_STDIN_RESULT_ALPHA.md`.
|
|
|
|
exp-12 is a narrow standard input result alpha:
|
|
|
|
- `std.io.read_stdin_result: () -> (result string i32)`
|
|
- reads remaining standard input as text
|
|
- success returns `(ok string i32 text)`
|
|
- ordinary EOF with no bytes is success with the empty string
|
|
- ordinary host/input failure returns `(err string i32 1)`
|
|
- only ordinary failure code `err 1` is promised
|
|
- Glagol test-runner behavior may use an implementation-owned fixed input
|
|
string as `ok`
|
|
- existing exp-3 and exp-10 host calls stay unchanged
|
|
|
|
Release fixtures:
|
|
|
|
```text
|
|
examples/supported/stdin-result.slo
|
|
examples/formatter/stdin-result.slo
|
|
```
|
|
|
|
exp-12 does not add trap-based `std.io.read_stdin`, line iteration, prompt
|
|
APIs, terminal mode, binary stdin, streaming, async, encoding/Unicode promises
|
|
beyond existing string bytes, stable helper ABI/layout, manifest schema
|
|
changes, or beta maturity.
|
|
|
|
## exp-11 (released experimental contract)
|
|
|
|
Release label: `exp-11`
|
|
|
|
Release date: 2026-05-18
|
|
|
|
Status: released experimental compiler support after matching Glagol exp-11
|
|
implementation, tests, review, and release gate coverage passed. This is not a
|
|
beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_11_BASIC_RANDOMNESS_ALPHA.md`.
|
|
|
|
exp-11 is a narrow basic randomness alpha:
|
|
|
|
- `std.random.i32: () -> i32`
|
|
- returns a non-negative implementation-owned pseudo-random or host-random
|
|
`i32`
|
|
- suitable only for basic CLI use
|
|
- deterministic-enough Glagol test-runner behavior through an
|
|
implementation-owned non-negative sample or sequence
|
|
- runtime/host inability to produce a value traps exactly as
|
|
`slovo runtime error: random i32 unavailable`
|
|
|
|
Release fixtures:
|
|
|
|
```text
|
|
examples/supported/random.slo
|
|
examples/formatter/random.slo
|
|
```
|
|
|
|
exp-11 does not claim seed APIs, cryptographic/security suitability, bytes
|
|
APIs, ranges or bounds arguments, floats, random strings, UUIDs, broad
|
|
`std.random.*`, randomness-specific manifest fields, stable ABI/layout/helper
|
|
symbols, or beta maturity.
|
|
|
|
## exp-10 (released experimental contract)
|
|
|
|
Release label: `exp-10`
|
|
|
|
Release date: 2026-05-18
|
|
|
|
Status: released experimental compiler support after matching Glagol exp-10
|
|
implementation, tests, review, and release gate coverage passed. This is not a
|
|
beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_10_RESULT_BASED_HOST_ERRORS_ALPHA.md`.
|
|
|
|
exp-10 is a narrow result-based host errors alpha:
|
|
|
|
- concrete `(result string i32)` only
|
|
- `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 as `err 1`
|
|
- exp-3 calls unchanged
|
|
|
|
Release fixtures:
|
|
|
|
```text
|
|
examples/supported/host-io-result.slo
|
|
examples/formatter/host-io-result.slo
|
|
```
|
|
|
|
exp-10 does not claim general host error ADTs, `result string Error`,
|
|
platform-specific codes, error messages, result equality/printing/mapping,
|
|
broader host APIs, stable ABI/layout/helper symbols, manifest schema changes,
|
|
or beta maturity.
|
|
|
|
## exp-9 (released experimental contract)
|
|
|
|
Release label: `exp-9`
|
|
|
|
Release date: 2026-05-18
|
|
|
|
Status: released experimental compiler support after matching Glagol exp-9
|
|
implementation, tests, review, and release gate coverage passed. This is not a
|
|
beta maturity claim.
|
|
|
|
The normative release contract is
|
|
`.llm/EXP_9_RELIABILITY_PERFORMANCE_ECOSYSTEM_HARDENING.md`.
|
|
|
|
exp-9 is hardening-only over the released exp-8 baseline. It requires
|
|
reliability, performance, and ecosystem gates for the existing promoted
|
|
experimental surface: property/fuzz-style parser, formatter, diagnostic,
|
|
project graph, and runtime API tests where feasible; a source-reachable panic
|
|
audit; benchmark fixtures or documented benchmark smoke; compatibility
|
|
inventory for promoted experimental features; and a migration guide from
|
|
`v2.0.0-beta.1` and exp releases.
|
|
|
|
exp-9 adds no source language syntax, type-system behavior, standard-runtime
|
|
names, package features, manifest schema versions, stable ABI/layout promises,
|
|
public performance guarantees, or beta maturity.
|
|
|
|
## exp-8 (released experimental contract)
|
|
|
|
Release label: `exp-8`
|
|
|
|
Release date: 2026-05-18
|
|
|
|
Status: released experimental compiler support after matching Glagol exp-8
|
|
implementation, tests, review, and release gate coverage passed. This is not a
|
|
beta maturity claim.
|
|
|
|
## Summary
|
|
|
|
exp-8 narrows the broad concurrency and long-running programs roadmap category
|
|
to host time and sleep alpha for long-running command-line programs:
|
|
|
|
- compiler-known `std.time.monotonic_ms: () -> i32`
|
|
- compiler-known `std.time.sleep_ms: (i32) -> unit`
|
|
- host monotonic elapsed milliseconds with implementation-owned epoch
|
|
- valid `sleep_ms 0` behavior
|
|
- negative sleep durations rejected or trapped with
|
|
`slovo runtime error: sleep_ms negative duration`
|
|
- deterministic test-runner handling for `sleep_ms 0`
|
|
- conservative structural or non-negative host-value test-runner support for
|
|
`monotonic_ms`
|
|
- standard-runtime time usage recorded in artifact manifests only if existing
|
|
manifest patterns already support standard-runtime usage metadata
|
|
|
|
The normative release contract is `.llm/EXP_8_HOST_TIME_SLEEP_ALPHA.md`.
|
|
exp-8 adds no source language syntax and does not claim threads, channels,
|
|
async, cancellation, actors, shared memory, data-race freedom, scheduling,
|
|
timers, wall-clock/calendar/timezone APIs, high-resolution timers, signal
|
|
handling, stable ABI/layout, or stable runtime helper symbols.
|
|
|
|
## exp-7 (released experimental contract)
|
|
|
|
Release label: `exp-7`
|
|
|
|
Release date: 2026-05-18
|
|
|
|
Status: released experimental compiler support after matching Glagol exp-7
|
|
implementation, tests, review, and release gate coverage. This is not a beta
|
|
maturity claim.
|
|
|
|
## Summary
|
|
|
|
exp-7 is deliberately limited to test selection and richer test-run metadata:
|
|
|
|
- `glagol test <file.slo|project> --filter <substring>`
|
|
- legacy `glagol --run-tests --filter <substring> <file.slo>` while Glagol
|
|
keeps the legacy route
|
|
- deterministic substring selection against test display names
|
|
- selected tests execute in the existing deterministic order
|
|
- non-selected discovered tests are skipped and counted
|
|
- zero matches is a successful run with explicit discovered/selected/passed/
|
|
failed/skipped counts
|
|
- additive text-output and artifact-manifest test-run metadata
|
|
|
|
The normative contract is `.llm/EXP_7_TEST_SELECTION_ALPHA.md`. exp-7 adds no
|
|
source language syntax and does not claim LSP, debug metadata, source maps,
|
|
SARIF, watch/daemon protocols, documentation comments, lint categories, or
|
|
benchmarks.
|
|
|
|
## exp-6 (released experimental contract)
|
|
|
|
Release label: `exp-6`
|
|
|
|
Release date: 2026-05-18
|
|
|
|
Status: released experimental compiler support after matching Glagol exp-6
|
|
implementation, tests, review, and release gate coverage. This is not a beta
|
|
maturity claim.
|
|
|
|
## Summary
|
|
|
|
exp-6 is deliberately limited to C FFI scalar imports:
|
|
|
|
- top-level imported C function declarations such as
|
|
`(import_c c_add ((lhs i32) (rhs i32)) -> i32)`
|
|
- `i32`-only scalar parameters and `i32` or internal builtin `unit` returns
|
|
- a conservative C symbol name subset matching the Slovo import name
|
|
- lexical `(unsafe ...)` required at every imported C call site
|
|
- explicit local C source linking through `glagol build --link-c <path>`
|
|
- artifact-manifest recording of `foreign_imports` and `c_link_inputs`
|
|
- an interpreter-style test-runner diagnostic when a test reaches an imported
|
|
C call
|
|
|
|
The normative contract is `.llm/EXP_6_C_FFI_SCALAR_IMPORTS_ALPHA.md`. The
|
|
minimal fixture target is `examples/ffi/exp-6-c-add/`.
|
|
|
|
## exp-6 Deferrals
|
|
|
|
exp-6 does not support pointer types, allocation/deallocation, raw unsafe head
|
|
execution, ownership or lifetime rules, C exports, callbacks, headers,
|
|
libraries, broad linker configuration, foreign globals, foreign structs,
|
|
unions, enums, layout annotations, stable ABI, or stable layout.
|
|
|
|
## exp-5 (released experimental contract)
|
|
|
|
Release label: `exp-5`
|
|
|
|
Release date: 2026-05-18
|
|
|
|
Status: released experimental compiler support after matching Glagol exp-5
|
|
implementation, tests, review, and release gate coverage. This is not a beta
|
|
maturity claim.
|
|
|
|
## Summary
|
|
|
|
exp-5 is deliberately limited to local packages and workspace hygiene:
|
|
|
|
- workspace `slovo.toml` manifests with explicit local member lists
|
|
- package `slovo.toml` manifests with package name/version metadata
|
|
- local path dependencies between workspace members
|
|
- deterministic package graph ordering
|
|
- explicit package-qualified imports for dependency modules
|
|
- package graph recording in artifact manifests
|
|
- diagnostics for missing package, dependency cycle, duplicate package name,
|
|
path escape, invalid package name/version, and private visibility across
|
|
package boundaries
|
|
|
|
The normative contract is `.llm/EXP_5_LOCAL_PACKAGES_ALPHA.md`. The minimal
|
|
fixture target is `examples/workspaces/exp-5-local/`.
|
|
|
|
## exp-5 Deferrals
|
|
|
|
exp-5 does not support remote registries, version solving, lockfiles beyond
|
|
deterministic local graph recording, build scripts, generated code, published
|
|
packages, semver compatibility promises, macros, package-level generics,
|
|
cross-package ABI stability, package re-exports, package archives, package
|
|
publishing, registry authentication, feature flags, optional dependencies, dev
|
|
dependencies, or target dependencies.
|
|
|
|
## exp-4 (released experimental contract)
|
|
|
|
Release label: `exp-4`
|
|
|
|
Release date: 2026-05-18
|
|
|
|
Status: released experimental compiler support after matching Glagol exp-4
|
|
implementation, tests, review, and release gate coverage. This is not a beta
|
|
maturity claim.
|
|
|
|
## Summary
|
|
|
|
exp-4 narrows user-defined data types to payloadless enums only:
|
|
|
|
```slo
|
|
(enum Name VariantA VariantB)
|
|
```
|
|
|
|
Variant values are constructed through zero-argument qualified calls such as
|
|
`(Name.VariantA)`. Enum values may flow through immutable locals, parameters,
|
|
returns, calls, equality with `=`, and top-level tests.
|
|
|
|
Enum `match` requires exhaustive payloadless variant arms:
|
|
|
|
```slo
|
|
(match value
|
|
((Name.VariantA)
|
|
body...)
|
|
((Name.VariantB)
|
|
body...))
|
|
```
|
|
|
|
Arms have one or more expression bodies and a common final result type,
|
|
following the existing option/result match rule.
|
|
|
|
## Runtime And Layout
|
|
|
|
The runtime/backend representation is compiler-owned. exp-4 makes no stable
|
|
layout, discriminant value, ABI, helper-symbol, reflection, or conversion to
|
|
`i32` promise.
|
|
|
|
## Fixtures
|
|
|
|
exp-4 adds these current compiler-supported fixtures:
|
|
|
|
```text
|
|
examples/supported/enum-basic.slo
|
|
examples/formatter/enum-basic.slo
|
|
```
|
|
|
|
They are current exp-4 fixtures.
|
|
|
|
## exp-4 Deferrals
|
|
|
|
exp-4 does not support payload variants, tuple variants, record variants,
|
|
generic enums, generic functions, type aliases, traits, interfaces, protocols,
|
|
methods, derives, variant payload binding, wildcard patterns, rest patterns,
|
|
guards, nested patterns, enum values in arrays, enum values in struct fields,
|
|
enum values in options, enum values in results, enum values in vectors, enum
|
|
mutation, enum printing, enum ordering, enum hashing, reflection, explicit
|
|
discriminants, enum constructors with arguments, unqualified variant
|
|
constructors, stable ABI/layout, stable helper symbols, or moving
|
|
option/result to ordinary standard-library types.
|
|
|
|
## exp-3 (released experimental contract)
|
|
|
|
Release label: `exp-3`
|
|
|
|
Release date: 2026-05-17
|
|
|
|
Status: released experimental compiler support after matching Glagol exp-3
|
|
implementation, tests, review, and release gate coverage. This is not a beta
|
|
maturity claim.
|
|
|
|
## Summary
|
|
|
|
exp-3 narrows standard IO and host environment support to exactly six
|
|
compiler-known functions:
|
|
|
|
```text
|
|
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
|
|
```
|
|
|
|
`std.io.eprint` writes to stderr without adding a newline. `std.process.argc`
|
|
returns the process argument count, and `std.process.arg` returns a zero-based
|
|
argument string. `std.env.get` returns the environment variable value, with a
|
|
missing variable returning the empty string in this stage.
|
|
`std.fs.read_text` reads a whole text file, and `std.fs.write_text` writes a
|
|
whole string to a path.
|
|
|
|
## Runtime Behavior
|
|
|
|
Out-of-range process argument access traps with:
|
|
|
|
```text
|
|
slovo runtime error: process argument index out of bounds
|
|
```
|
|
|
|
Host file read failure traps with:
|
|
|
|
```text
|
|
slovo runtime error: file read failed
|
|
```
|
|
|
|
Both messages are written to stderr with a trailing newline and exit with code
|
|
`1`.
|
|
|
|
`std.fs.write_text` returns `0` on success and `1` on host failure for this
|
|
stage.
|
|
|
|
## Fixture Targets
|
|
|
|
exp-3 adds these current compiler-supported fixture targets:
|
|
|
|
```text
|
|
examples/supported/host-io.slo
|
|
examples/formatter/host-io.slo
|
|
```
|
|
|
|
They are current exp-3 fixtures.
|
|
|
|
## exp-3 Deferrals
|
|
|
|
exp-3 does not support networking, async IO, binary file APIs, directory
|
|
traversal, terminal control, platform abstraction, general host error ADTs,
|
|
`result string Error`, package interaction, stdin full read or line iteration,
|
|
randomness, time, stable ABI/layout, or stable runtime helper symbols.
|
|
|
|
## exp-2 (released experimental contract)
|
|
|
|
Release label: `exp-2`
|
|
|
|
Release date: 2026-05-17
|
|
|
|
Status: released experimental compiler support after matching Glagol exp-2
|
|
implementation, tests, review, and release gate coverage. This is not a beta
|
|
maturity claim.
|
|
|
|
## Summary
|
|
|
|
exp-2 narrows collections to one concrete growable vector type:
|
|
|
|
```text
|
|
(vec i32)
|
|
```
|
|
|
|
The only promoted operations are compiler-known standard-runtime names:
|
|
|
|
```text
|
|
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
|
|
```
|
|
|
|
`std.vec.i32.append` returns a new immutable runtime-owned vector and does not
|
|
mutate its input. `(vec i32)` values may flow through immutable locals,
|
|
parameters, returns, calls, and top-level tests. Vector equality with `=`
|
|
compares lengths and `i32` elements in order.
|
|
|
|
## Runtime Behavior
|
|
|
|
Allocation failure traps with:
|
|
|
|
```text
|
|
slovo runtime error: vector allocation failed
|
|
```
|
|
|
|
Index failure traps with:
|
|
|
|
```text
|
|
slovo runtime error: vector index out of bounds
|
|
```
|
|
|
|
Both messages are written to stderr with a trailing newline and exit with code
|
|
`1`. Vector cleanup is compiler/runtime-owned and not source-visible.
|
|
|
|
## Fixture Targets
|
|
|
|
exp-2 adds these current compiler-supported fixture targets:
|
|
|
|
```text
|
|
examples/supported/vec-i32.slo
|
|
examples/formatter/vec-i32.slo
|
|
```
|
|
|
|
They are current exp-2 fixtures.
|
|
|
|
## exp-2 Deferrals
|
|
|
|
exp-2 does not support generic vectors, element types other than `i32`, vector
|
|
mutation, vector `var` or `set`, vector literals beyond empty/append
|
|
construction, a `push` alias, nested vectors, vectors in arrays, structs,
|
|
options, or results, iterators, slices, maps, sets, user-visible deallocation,
|
|
stable ABI/layout/helper symbols, packages, or IO expansion.
|
|
|
|
## exp-1 (released experimental contract)
|
|
|
|
Release label: `exp-1`
|
|
|
|
Release date: 2026-05-17
|
|
|
|
Status: current experimental compiler support after matching Glagol exp-1
|
|
implementation, tests, review, and release gate coverage.
|
|
|
|
## Summary
|
|
|
|
exp-1 is the first narrow step toward the future `1.0.0-beta` general-purpose
|
|
language threshold. It promotes one heap-created string operation:
|
|
|
|
```slo
|
|
(std.string.concat left right)
|
|
```
|
|
|
|
The exact signature is `(string, string) -> string`. The result is an
|
|
immutable runtime-owned `string`. Existing string equality, `std.string.len`,
|
|
`std.io.print_string`, string locals, parameters, returns, and calls returning
|
|
`string` apply to runtime-owned strings as they do to literal-backed strings.
|
|
|
|
No legacy `string_concat` alias is introduced. `std.string.concat` is a
|
|
compiler-known standard-runtime name, not a user module, import, package
|
|
dependency, foreign function, or stable C ABI symbol.
|
|
|
|
## Runtime Behavior
|
|
|
|
Allocation failure traps with:
|
|
|
|
```text
|
|
slovo runtime error: string allocation failed
|
|
```
|
|
|
|
The message is written to stderr with a trailing newline and exits with code
|
|
`1`. Runtime-owned string cleanup is compiler/runtime-owned and not
|
|
source-visible.
|
|
|
|
## Fixture Targets
|
|
|
|
exp-1 adds these current compiler-supported fixture targets:
|
|
|
|
```text
|
|
examples/supported/owned-string-concat.slo
|
|
examples/formatter/owned-string-concat.slo
|
|
```
|
|
|
|
They are current exp-1 fixtures.
|
|
|
|
## exp-1 Deferrals
|
|
|
|
exp-1 does not support mutable strings, string containers, string indexing or
|
|
slicing, interpolation, formatting APIs, Unicode scalar/grapheme/display-width
|
|
APIs, user-visible allocation or deallocation, file IO, environment variables,
|
|
process arguments, time, randomness, packages, workspaces, generics,
|
|
overloading, user-defined standard modules, growable collections, raw-memory
|
|
execution, FFI, stable ABI, or stable layout.
|
|
|
|
## v2.0.0-beta.1
|
|
|
|
Release tag: `v2.0.0-beta.1`
|
|
|
|
Release date: 2026-05-17
|
|
|
|
## Summary
|
|
|
|
Slovo `v2.0.0-beta.1` is an experimental integration/readiness release based
|
|
on v1.7. It does not add new source language syntax or semantics unless that
|
|
behavior is already implemented and gate-proven in Glagol.
|
|
|
|
Experimental readiness means Slovo is usable for small real flat local
|
|
projects with:
|
|
|
|
- `glagol new`
|
|
- `glagol check`
|
|
- `glagol fmt --check`
|
|
- `glagol fmt --write`
|
|
- `glagol test`
|
|
- `glagol build`
|
|
- `glagol doc`
|
|
- artifact manifests
|
|
- JSON diagnostics
|
|
- the release-gate script
|
|
|
|
## Experimental-Supported Surface
|
|
|
|
The experimental language surface is the accumulated v1.1-v1.7 surface:
|
|
`i32`, `bool`, builtin internal `unit`, top-level tests, locals, `if`,
|
|
`while`, structs, fixed direct scalar arrays with checked indexing, string
|
|
value flow, option/result values and the exact v1.4 match slice,
|
|
standard-runtime alpha names, and the v1.6 lexical unsafe boundary with
|
|
reserved unsafe heads.
|
|
|
|
Basic IO is exactly `std.io.print_i32`, `std.io.print_string`,
|
|
`std.io.print_bool`, and `std.string.len`. There is no file IO, environment
|
|
variable IO, process argument IO, process control, or time/clock API in this
|
|
experimental release.
|
|
|
|
## Experimental Deferrals
|
|
|
|
Vectors and growable collections are deferred until future beta work unless
|
|
separately implemented and gate-proven in Glagol. Fixed direct scalar arrays
|
|
with checked indexing satisfy the experimental gate because this is an
|
|
integration/readiness release for small flat local projects; growable
|
|
collections require allocation, ownership/lifetime, mutation, capacity,
|
|
diagnostics, lowering, runtime tests, and documentation that remain future beta
|
|
work.
|
|
|
|
Slovo `v2.0.0-beta.1` also makes no stable ABI/layout, FFI, raw-memory
|
|
execution, LSP, debug metadata, source-map, file/env/process/time IO, or
|
|
package registry promise.
|
|
|
|
## v1.7
|
|
|
|
Release tag: `v1.7`
|
|
|
|
Release date: 2026-05-17
|
|
|
|
## Summary
|
|
|
|
Slovo v1.7 is a conservative developer experience hardening release over the
|
|
v1.6 language contract. It adds tooling contracts only and does not promote new
|
|
source language syntax, type-system behavior, runtime semantics, standard
|
|
runtime names, ABI/layout guarantees, LSP support, stable debug metadata, or
|
|
stable source maps.
|
|
|
|
v1.7 promotes contracts for:
|
|
|
|
- `glagol new <project-dir> [--name <name>]`
|
|
- `glagol fmt --check <file-or-project>`
|
|
- `glagol fmt --write <file-or-project>`
|
|
- `glagol doc <file-or-project> -o <dir>`
|
|
- a local release-gate script
|
|
|
|
## Project Scaffolding
|
|
|
|
`glagol new` creates a valid v1.3-style project containing `slovo.toml` and
|
|
`src/main.slo`. The generated main module must be small, testable, and limited
|
|
to already-supported language forms.
|
|
|
|
The command must fail without overwriting non-empty target directories.
|
|
|
|
## Formatter Modes
|
|
|
|
Plain `glagol fmt <file.slo>` remains stdout formatting and does not write the
|
|
input file.
|
|
|
|
`glagol fmt --check <file-or-project>` checks canonical formatting without
|
|
writing. `glagol fmt --write <file-or-project>` writes canonical formatting for
|
|
one file or for all immediate `.slo` project source modules in deterministic
|
|
module order.
|
|
|
|
## Documentation Generator
|
|
|
|
`glagol doc <file-or-project> -o <dir>` generates deterministic Markdown from
|
|
current source structure: modules, imports/exports, structs, functions, and
|
|
tests. It is a documentation generator, not a semantic reflection API.
|
|
|
|
## Release Gate
|
|
|
|
The repo must provide a script or documented command entry point that runs the
|
|
full v1 release gate locally without network, tag, push, or release-publication
|
|
side effects.
|
|
|
|
## v1.7 Deferrals
|
|
|
|
Slovo v1.7 does not support new language syntax or semantics, package
|
|
management, dependency management, stdin formatting, recursive directory
|
|
formatting, LSP, SARIF, watch mode, daemon protocols, debug adapters, stable
|
|
debug metadata, DWARF, stable standalone source-map files, semantic reflection,
|
|
runtime reflection, stable ABI, or stable layout.
|
|
|
|
## v1.6
|
|
|
|
Release tag: `v1.6`
|
|
|
|
Release date: 2026-05-17
|
|
|
|
## Summary
|
|
|
|
Slovo v1.6 is a conservative memory and unsafe design slice over the v1.5
|
|
contract. It does not promote raw memory, pointers, allocation, deallocation,
|
|
unchecked indexing, reinterpretation, or FFI execution.
|
|
|
|
Lexical `(unsafe ...)` remains the only unsafe boundary. v1.6 reserves these
|
|
compiler-known unsafe operation heads:
|
|
|
|
- `alloc`
|
|
- `dealloc`
|
|
- `load`
|
|
- `store`
|
|
- `ptr_add`
|
|
- `unchecked_index`
|
|
- `reinterpret`
|
|
- `ffi_call`
|
|
|
|
Safe code using one of these heads must receive `UnsafeRequired` before normal
|
|
call lookup. Code inside `(unsafe ...)` using one of these heads must receive
|
|
`UnsupportedUnsafeOperation` until a future release defines syntax, type
|
|
rules, lowering, runtime behavior, diagnostics, and tests.
|
|
|
|
User functions, imports, exports, and parameters cannot shadow the reserved
|
|
unsafe heads. Such declarations must be rejected with a structured
|
|
duplicate/reserved-name diagnostic.
|
|
|
|
## Memory Direction
|
|
|
|
v1.6 keeps safe values as the default Slovo memory model. Future memory work is
|
|
staged toward affine ownership plus explicit unsafe regions, but v1.6 does not
|
|
freeze ownership, pointer/reference types, allocator behavior, aliasing,
|
|
cleanup, or unsafe-region escape rules.
|
|
|
|
No stable ABI, layout, FFI, allocator, ownership, or raw-memory execution
|
|
promise is made in v1.6.
|
|
|
|
## Supported Fixture Changes
|
|
|
|
v1.6 adds no new supported source fixture because no raw unsafe operation is
|
|
promoted. The supported unsafe fixture remains:
|
|
|
|
```text
|
|
examples/supported/unsafe.slo
|
|
```
|
|
|
|
The speculative raw-memory example remains speculative:
|
|
|
|
```text
|
|
examples/speculative/unsafe-memory.slo
|
|
```
|
|
|
|
## v1.6 Deferrals
|
|
|
|
Slovo v1.6 does not support pointer types, raw allocation, raw deallocation,
|
|
pointer load/store, pointer arithmetic, unchecked indexing, raw
|
|
reinterpretation, FFI calls, foreign symbol execution, stable object/library or
|
|
header output, stable C ABI symbols, stable runtime layout, allocator APIs,
|
|
ownership transfer, or safe abstractions over unsafe operations.
|
|
|
|
## v1.5
|
|
|
|
Release tag: `v1.5`
|
|
|
|
Release date: 2026-05-17
|
|
|
|
## Summary
|
|
|
|
Slovo v1.5 is a conservative standard library alpha over the v1.4 contract. It
|
|
promotes stable source-level standard-runtime names for existing runtime
|
|
behavior without adding new data types, IO breadth, imports, packages,
|
|
allocation, Unicode length semantics, or ABI promises.
|
|
|
|
The matching Glagol v1.5 release implements this contract. v1.5 promotes:
|
|
|
|
- `std.io.print_i32`
|
|
- `std.io.print_string`
|
|
- `std.io.print_bool`
|
|
- `std.string.len`
|
|
|
|
These are compiler-known v1.5 standard-runtime names. They do not require
|
|
imports, do not name user modules, do not create package dependencies, and are
|
|
not stable C ABI symbols.
|
|
|
|
Legacy `print_i32`, `print_string`, `print_bool`, and `string_len` remain
|
|
compatibility aliases. New examples prefer the promoted `std.*` names.
|
|
|
|
## Standard Runtime Alpha
|
|
|
|
The promoted forms are:
|
|
|
|
```slo
|
|
(std.io.print_i32 value)
|
|
(std.io.print_string value)
|
|
(std.io.print_bool value)
|
|
(std.string.len value)
|
|
```
|
|
|
|
`std.io.print_i32` accepts exactly one `i32`, returns builtin `unit`, and keeps
|
|
the same stdout behavior as legacy `print_i32`.
|
|
|
|
`std.io.print_string` accepts exactly one `string`, returns builtin `unit`, and
|
|
keeps the same stdout behavior and source string-literal constraints as legacy
|
|
`print_string`.
|
|
|
|
`std.io.print_bool` accepts exactly one `bool`, returns builtin `unit`, and
|
|
keeps the same stdout behavior as legacy `print_bool`.
|
|
|
|
`std.string.len` accepts exactly one `string`, returns `i32`, and keeps the
|
|
same decoded-byte count semantics as legacy `string_len`.
|
|
|
|
## Diagnostics
|
|
|
|
Unknown or unpromoted `std.*` calls must produce structured diagnostics. The
|
|
suggested diagnostic code is `UnsupportedStandardLibraryCall`.
|
|
|
|
Arity and type mismatches for promoted `std.*` calls use the existing
|
|
arity/type diagnostics where applicable. Promoted `std.*` names are reserved
|
|
from user function/export shadowing.
|
|
|
|
## Supported Fixture Additions
|
|
|
|
v1.5 adds these Slovo fixtures:
|
|
|
|
```text
|
|
examples/supported/standard-runtime.slo
|
|
examples/formatter/standard-runtime.slo
|
|
```
|
|
|
|
## v1.5 Deferrals
|
|
|
|
Slovo v1.5 does not support `std.io.print_unit`, file IO, environment
|
|
variables, process arguments, time or clocks, vectors/maps/sets or other
|
|
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.
|
|
|
|
## v1.4
|
|
|
|
Release tag: `v1.4`
|
|
|
|
Release date: 2026-05-17
|
|
|
|
## Summary
|
|
|
|
Slovo v1.4 is a conservative core-language expansion over the v1.3
|
|
project-mode contract. It promotes source-level `match` only for existing
|
|
`(option i32)` and `(result i32 i32)` values. It does not add user-defined
|
|
enums/ADTs, generic payloads, mutation, vectors, broader numeric types,
|
|
ownership, or layout/ABI promises.
|
|
|
|
Assuming the matching Glagol v1.4 release implements this contract, v1.4
|
|
promotes:
|
|
|
|
- `match` expressions over `(option i32)` and `(result i32 i32)`
|
|
- exhaustive option arms: `some` and `none`
|
|
- exhaustive result arms: `ok` and `err`
|
|
- immutable arm payload binding for `some`, `ok`, and `err`
|
|
- one-or-more expression arm bodies whose final expression is the arm value
|
|
- common arm result typing for the whole match expression
|
|
- named diagnostics for match subject, payload, exhaustiveness, duplicate arm,
|
|
malformed pattern, arm type, binding collision, mutation, and container
|
|
boundaries
|
|
|
|
Existing `is_some`, `is_none`, `is_ok`, `is_err`, `unwrap_some`, `unwrap_ok`,
|
|
and `unwrap_err` remain supported. New examples prefer `match` when control
|
|
flow depends on the payload.
|
|
|
|
## Match Syntax
|
|
|
|
Option matches use:
|
|
|
|
```slo
|
|
(match value
|
|
((some payload)
|
|
payload)
|
|
((none)
|
|
0))
|
|
```
|
|
|
|
Result matches use:
|
|
|
|
```slo
|
|
(match value
|
|
((ok payload)
|
|
payload)
|
|
((err code)
|
|
code))
|
|
```
|
|
|
|
Payload bindings are immutable and scoped only to the selected arm. Arm bodies
|
|
may contain one or more expressions. The final expression is the arm value, and
|
|
all arms must produce the same result type.
|
|
|
|
## Supported Fixture Additions
|
|
|
|
v1.4 adds these Slovo fixtures:
|
|
|
|
```text
|
|
examples/supported/option-result-match.slo
|
|
examples/formatter/option-result-match.slo
|
|
```
|
|
|
|
## v1.4 Deferrals
|
|
|
|
Slovo v1.4 does not support user-defined enums or algebraic data types,
|
|
generic option/result payloads, non-`i32` payload matching, nested
|
|
option/result payloads beyond current v1 limits, options/results in arrays or
|
|
structs, option/result mutation, vectors, struct mutation, `i64`, general
|
|
`(block ...)` expressions outside match arms, pattern guards, wildcard/rest
|
|
patterns, destructuring structs/arrays/strings, standard-library error
|
|
conventions, user-catchable exceptions, ownership promises, stable layout, or
|
|
stable ABI.
|
|
|
|
## v1.3
|
|
|
|
Release tag: `v1.3`
|
|
|
|
Release date: 2026-05-17
|
|
|
|
## Summary
|
|
|
|
Slovo v1.3 is a project-mode and local-modules release over the v1.2 language
|
|
and toolchain contract. It does not add packages, dependencies, remote
|
|
registries, version solving, workspaces, macros, public ABI, cross-package
|
|
visibility, incremental builds, watch/LSP, path escapes, or generated code.
|
|
|
|
Assuming the matching Glagol v1.3 release implements this contract, v1.3
|
|
promotes:
|
|
|
|
- a project manifest named `slovo.toml`
|
|
- a flat local source-root convention, defaulting to `src`
|
|
- project mode for `glagol check`, `glagol test`, and `glagol build`
|
|
- explicit imports between local project modules
|
|
- explicit exports of top-level `fn` and `struct` names
|
|
- deterministic project/module ordering
|
|
- duplicate-name, missing-import, import-cycle, ambiguous-name, and visibility
|
|
diagnostics
|
|
- multi-file source spans and project artifact-manifest fields
|
|
|
|
Single-file mode remains unchanged when a command receives one `.slo` file.
|
|
|
|
## Project Manifest
|
|
|
|
The v1.3 manifest is exactly `slovo.toml`:
|
|
|
|
```toml
|
|
[project]
|
|
name = "example"
|
|
source_root = "src"
|
|
entry = "main"
|
|
```
|
|
|
|
`name` is required and must be a lowercase package-shaped identifier.
|
|
`source_root` defaults to `src` and must stay under the project root. `entry`
|
|
defaults to `main` and must be a flat module identifier. Unknown manifest
|
|
sections or keys are diagnostics in v1.3.
|
|
|
|
## Project Layout And Modules
|
|
|
|
Project module files are immediate `.slo` children of the source root:
|
|
|
|
```text
|
|
.
|
|
├── slovo.toml
|
|
└── src
|
|
├── main.slo
|
|
└── math.slo
|
|
```
|
|
|
|
Each file declares one flat module whose name matches the file stem. A module
|
|
with exports uses:
|
|
|
|
```slo
|
|
(module math (export add_one))
|
|
```
|
|
|
|
The only import form is:
|
|
|
|
```slo
|
|
(import math (add_one))
|
|
```
|
|
|
|
Only exported top-level `fn` and `struct` declarations are importable. Tests,
|
|
locals, parameters, fields, builtins, intrinsics, generated declarations, and
|
|
imported names are not exportable or importable.
|
|
|
|
## Project Commands
|
|
|
|
Project mode is selected only when the input is a directory containing
|
|
`slovo.toml` or the `slovo.toml` file itself:
|
|
|
|
```text
|
|
glagol check <project-root>
|
|
glagol test <project-root>
|
|
glagol build <project-root> -o <binary>
|
|
```
|
|
|
|
`check` validates every project module. `test` checks the project and runs
|
|
top-level tests in deterministic module and source order. `build` checks the
|
|
project, requires the entry module and supported `main` function, and produces
|
|
one hosted native executable through the existing LLVM IR plus Glagol runtime C
|
|
plus Clang path.
|
|
|
|
## Supported Fixture Additions
|
|
|
|
v1.3 adds this Slovo project fixture:
|
|
|
|
```text
|
|
examples/projects/basic/slovo.toml
|
|
examples/projects/basic/src/main.slo
|
|
examples/projects/basic/src/math.slo
|
|
```
|
|
|
|
exp-17 later adds this project enum-import fixture:
|
|
|
|
```text
|
|
examples/projects/enum-imports/slovo.toml
|
|
examples/projects/enum-imports/src/readings.slo
|
|
examples/projects/enum-imports/src/main.slo
|
|
```
|
|
|
|
## v1.3 Deferrals
|
|
|
|
Slovo v1.3 does not support packages, dependencies, remote registries, version
|
|
solving, lockfiles, workspaces, hierarchical modules, import aliases, glob
|
|
imports, qualified names, re-exports, macros, public ABI, cross-package
|
|
visibility, incremental builds, watch mode, LSP, SARIF, path escapes,
|
|
generated code, project formatting, build profiles, cross-compilation, object
|
|
output, library output, header output, stable debug metadata, DWARF, or
|
|
standalone source maps.
|
|
|
|
## v1.2
|
|
|
|
Release tag: `v1.2`
|
|
|
|
Release date: 2026-05-17
|
|
|
|
## Summary
|
|
|
|
Slovo v1.2 is a practical runtime values release over the v1.1 single-file
|
|
toolchain contract. It does not add project mode, package management, imports,
|
|
multi-file modules, stable ABI/layout promises, or a standard runtime.
|
|
|
|
Assuming the matching Glagol v1.2 release implements this contract, v1.2
|
|
promotes:
|
|
|
|
- immutable string `let` locals
|
|
- string parameters and returns
|
|
- calls returning strings
|
|
- string equality with `=`
|
|
- string byte length with `string_len`
|
|
- top-level tests using string equality or string length comparisons
|
|
- temporary compiler/runtime intrinsic `print_bool`
|
|
- stable runtime trap messages and process exit behavior for array bounds and
|
|
option/result unwrap failures
|
|
|
|
## Supported Fixture Additions
|
|
|
|
v1.2 adds these Slovo fixtures:
|
|
|
|
```text
|
|
examples/supported/string-value-flow.slo
|
|
examples/supported/print-bool.slo
|
|
examples/formatter/string-value-flow.slo
|
|
examples/formatter/print-bool.slo
|
|
```
|
|
|
|
No `print_unit` fixture is added because unit printing remains unsupported.
|
|
|
|
## Runtime String Contract
|
|
|
|
Strings remain immutable compiler/runtime values. Every promoted string value
|
|
originates from a source string literal or from propagating such a value through
|
|
an immutable local, parameter, return, or call result.
|
|
|
|
`string_len` returns the decoded byte count before the trailing NUL byte. String
|
|
equality compares decoded bytes before the trailing NUL byte. v1.2 does not
|
|
promise Unicode normalization, grapheme counting, display width, arbitrary byte
|
|
escapes, embedded NUL bytes, allocation, ownership, deallocation, stable ABI, or
|
|
FFI behavior.
|
|
|
|
String concatenation remains deferred in v1.2 because it requires allocation,
|
|
ownership, lifetime, and deallocation semantics. exp-1 later stages only the
|
|
narrow `std.string.concat` contract.
|
|
|
|
## Printing And Unit
|
|
|
|
`print_bool` has exactly one `bool` argument, returns builtin `unit`, and writes
|
|
`true\n` or `false\n`.
|
|
|
|
`print_unit` remains unsupported. This keeps `unit` as an internal builtin
|
|
result type for supported unit-producing body forms rather than making it a
|
|
user-visible, storable, comparable, or test-final value.
|
|
|
|
## Runtime Errors
|
|
|
|
Runtime traps are process-terminating runtime errors, not user-catchable Slovo
|
|
exceptions. Required stderr messages are:
|
|
|
|
```text
|
|
slovo runtime error: array index out of bounds
|
|
slovo runtime error: unwrap_some on none
|
|
slovo runtime error: unwrap_ok on err
|
|
slovo runtime error: unwrap_err on ok
|
|
```
|
|
|
|
Each message is written with a trailing newline. The process exits with code
|
|
`1`. `glagol test` reports a top-level test that triggers one of these runtime
|
|
errors as a trapped test and exits with code `1`.
|
|
|
|
## v1.2 Deferrals
|
|
|
|
Slovo v1.2 does not support mutable string locals, string assignment, string
|
|
concatenation, string indexing or slicing, strings inside arrays/structs/
|
|
options/results, broader owned or heap strings, user-defined string runtime bindings,
|
|
stable string ABI/layout, `print_unit`, user-visible `unit` values, project
|
|
mode, imports, packages, or multi-file modules. exp-1 later stages only
|
|
`std.string.concat` as a runtime-owned string operation.
|
|
|
|
## v1.1
|
|
|
|
Release tag: `v1.1`
|
|
|
|
Release date: 2026-05-17
|
|
|
|
## Summary
|
|
|
|
Slovo v1.1 is a tooling release over the v1 language contract. It does not add
|
|
new source language features, broaden the supported fixture set, or relax any
|
|
v1 unsupported boundary.
|
|
|
|
Assuming the matching Glagol v1.1 release implements the Slovo v1.1 toolchain
|
|
contract, the stable user-facing tool surface is:
|
|
|
|
```text
|
|
glagol check <file.slo>
|
|
glagol fmt <file.slo>
|
|
glagol test <file.slo>
|
|
glagol build <file.slo> -o <binary>
|
|
```
|
|
|
|
These commands are single-file commands in v1.1. Project mode, package
|
|
management, multi-file modules, stdin formatting, write-in-place formatting,
|
|
test filtering, cross-compilation, optimization profiles, stable ABI promises,
|
|
object/library output, C headers, FFI, LSP, SARIF, and daemon protocols remain
|
|
deferred.
|
|
|
|
## Toolchain Contract
|
|
|
|
v1.1 productizes the existing v1 language through a predictable CLI contract:
|
|
|
|
- `check` parses, lowers, and type-checks one Slovo source file without
|
|
producing primary artifacts.
|
|
- `fmt` prints canonical formatted source for one file to stdout and does not
|
|
modify the input file.
|
|
- `test` runs top-level Slovo tests in one file and reports source failures,
|
|
failed tests, and reported runtime traps as ordinary command failures.
|
|
- `build` produces a hosted native executable for the current machine through
|
|
the Glagol LLVM IR plus runtime C plus Clang pipeline.
|
|
- `--json-diagnostics` requests newline-delimited JSON diagnostics on stderr.
|
|
- `--manifest <path>` requests a `slovo.artifact-manifest` version `1`
|
|
manifest describing the actual invocation outputs.
|
|
- `--no-color`, `--help`, and `--version` are common command flags.
|
|
|
|
Machine diagnostics remain schema `slovo.diagnostic` version `1`. Artifact
|
|
manifests remain schema `slovo.artifact-manifest` version `1`.
|
|
|
|
## Stable Exit Codes
|
|
|
|
Glagol v1.1 commands use this stable table:
|
|
|
|
```text
|
|
0 success
|
|
1 source parse, lowering, type, formatter, test failure, or unsupported form
|
|
2 command-line usage error
|
|
3 required toolchain component missing or unusable
|
|
4 internal compiler error
|
|
5 manifest or output artifact write failure
|
|
```
|
|
|
|
A failed Slovo test is exit code `1`. A missing hosted build dependency such as
|
|
Clang is exit code `3`. Panics or impossible compiler states on supported
|
|
inputs are release blockers and map to exit code `4` only as a containment
|
|
path.
|
|
|
|
## Compatibility Aliases
|
|
|
|
The canonical documented commands are `check`, `fmt`, `test`, and `build`.
|
|
|
|
Glagol may retain pre-v1.1 developer commands or flags as compatibility aliases
|
|
only when they route through the same diagnostics, manifest, and exit-code
|
|
paths as the canonical commands and do not change semantics. Slovo v1.1 does
|
|
not treat those aliases as primary user documentation, and exact alias names
|
|
remain Glagol release evidence rather than new Slovo language surface.
|
|
|
|
## Native Build Boundary
|
|
|
|
`glagol build <file.slo> -o <binary>` is a hosted native build path, not a
|
|
stable systems ABI promise. It proves that supported v1 programs can build and
|
|
run as direct executables on the current host using documented Glagol runtime C
|
|
inputs and the host Clang/linker environment.
|
|
|
|
Required v1.1 native build smoke coverage includes `add`, `while`, array value
|
|
flow, option payload flow, result payload flow, struct value flow, and string
|
|
print.
|
|
|
|
## Release Gates
|
|
|
|
Slovo-side gate:
|
|
|
|
```text
|
|
git -C slovo diff --check
|
|
```
|
|
|
|
Glagol-side gates for the matching v1.1 release include the baseline test and
|
|
format gates, CLI tests for all canonical commands, stable exit-code tests,
|
|
JSON diagnostic snapshots, artifact manifest snapshots, hosted native build
|
|
smokes, fixture-alignment checks, and release-note review for aliases and
|
|
deferrals.
|
|
|
|
No `v1.1` tag should be cut while required gates are failing, skipped, or
|
|
blocked by review.
|
|
|
|
## v1
|
|
|
|
Release tag: `v1`
|
|
|
|
Release date: 2026-05-17
|
|
|
|
## Summary
|
|
|
|
Slovo v1 extends the v0 kernel with practical value flow while preserving the
|
|
manifest rule: a feature is supported only when the language contract, fixtures,
|
|
formatter behavior, diagnostics, tests, and Glagol implementation agree.
|
|
|
|
v1 keeps native executable output, stable ABI/layout promises, broad runtime
|
|
bindings, raw memory, and FFI out of scope. The supported compiler path remains
|
|
Slovo source through Glagol to textual LLVM IR, with native execution available
|
|
through the explicit LLVM-plus-runtime Clang workflow.
|
|
|
|
## Supported Fixture Set
|
|
|
|
These examples define the promoted Slovo v1 surface:
|
|
|
|
```text
|
|
examples/supported/add.slo
|
|
examples/supported/top-level-test.slo
|
|
examples/supported/local-variables.slo
|
|
examples/supported/if.slo
|
|
examples/supported/while.slo
|
|
examples/supported/struct.slo
|
|
examples/supported/struct-value-flow.slo
|
|
examples/supported/array.slo
|
|
examples/supported/array-value-flow.slo
|
|
examples/supported/array-direct-scalars.slo
|
|
examples/supported/array-direct-scalars-value-flow.slo
|
|
examples/supported/array-string.slo
|
|
examples/supported/array-string-value-flow.slo
|
|
examples/supported/option-result.slo
|
|
examples/supported/option-result-flow.slo
|
|
examples/supported/option-result-payload.slo
|
|
examples/supported/string-print.slo
|
|
examples/supported/unsafe.slo
|
|
```
|
|
|
|
Formatter fixtures under `examples/formatter/` define canonical v1 layout,
|
|
including the promoted full-line comment stability fixture
|
|
`examples/formatter/comments.slo`.
|
|
|
|
Frozen v0 compatibility fixtures remain under `examples/compat/v0/`.
|
|
|
|
## Promoted v1 Language Surface
|
|
|
|
- Struct value flow: immutable struct locals, struct parameters, struct
|
|
returns, calls returning structs, and field access through stored values.
|
|
- Fixed array value flow: immutable positive-length arrays over the current
|
|
direct scalar families `i32`, `i64`, `f64`, `bool`, plus `string`, with
|
|
immutable array locals, parameters, returns, calls returning arrays, and
|
|
runtime-checked dynamic indexing on `i32` expressions.
|
|
- Option/result value flow for `(option i32)` and `(result i32 i32)`: immutable
|
|
locals, parameters, calls returning option/result values, tag observation, and
|
|
explicit trap-based `i32` payload extraction with `unwrap_some`, `unwrap_ok`,
|
|
and `unwrap_err`.
|
|
- Narrow string runtime slice: direct source string literals passed to
|
|
temporary compiler/runtime intrinsic `print_string`.
|
|
- Lexical `unsafe` remains the accepted unsafe boundary, without raw memory or
|
|
FFI operations.
|
|
|
|
### Runtime String Slice
|
|
|
|
- Promotes the Slovo-side contract for immutable source string literals passed
|
|
directly to temporary compiler/runtime intrinsic `(print_string value)`.
|
|
- Defines the first runtime representation as a borrowed immutable
|
|
NUL-terminated byte pointer to compiler-emitted static storage, with no user
|
|
ownership, mutation, allocation, free, stable ABI, or broader runtime binding
|
|
promise.
|
|
- Adds `examples/supported/string-print.slo` and
|
|
`examples/formatter/string-print.slo`.
|
|
|
|
Still deferred at that stage: string locals, string function parameters or
|
|
returns, string equality/comparison, strings inside arrays, structs, options,
|
|
or results, slices, concatenation, length, indexing, ownership, user-defined
|
|
string runtime bindings, and stable string ABI promises. Current exp-19 later
|
|
promotes only direct immutable `string` struct fields.
|
|
|
|
## Tooling Contracts
|
|
|
|
- Machine diagnostics use `slovo.diagnostic` version `1` with a root
|
|
`(diagnostic ...)` form.
|
|
- Artifact manifests use `slovo.artifact-manifest` version `1` for compiler
|
|
outputs and test-report side channels.
|
|
- Formatter output is stable for promoted formatter fixtures, preserves accepted
|
|
full-line comment positions, rejects unsupported comment/layout positions
|
|
with structured diagnostics, and does not promise width-based reflow.
|
|
- Glagol keeps golden diagnostic fixtures for current explicitly rejected v1
|
|
boundaries and textual lowering-inspector golden fixtures for promoted v1
|
|
feature families.
|
|
- Stable LLVM debug metadata, DWARF, standalone source-map files, JSON tooling
|
|
output, direct native output, package layout, and stable ABI/layout remain
|
|
deferred.
|
|
|
|
## Explicit Deferrals
|
|
|
|
Slovo v1 does not support:
|
|
|
|
- struct field/value mutation
|
|
- full option/result matching, mapping, equality, printing, nested values,
|
|
non-`i32` payloads, containers, or user-catchable payload traps
|
|
- bool or unit printing, user-declared/stored `unit`, or broader standard
|
|
runtime printing
|
|
- full string value flow, ownership, slicing, indexing, equality/comparison, or
|
|
user-defined runtime bindings
|
|
- array mutation, arrays of unsupported element types, zero-length arrays,
|
|
array equality, printing arrays, nested arrays, unchecked indexing, or
|
|
stable array layout
|
|
- pointer types, allocation, deallocation, load/store, pointer arithmetic,
|
|
reinterpretation, raw memory operations, or FFI
|
|
- JSON diagnostics or lowering-inspector output
|
|
- macros, generics, package management, concurrency, direct machine-code
|
|
backend, stable ABI, or stable layout
|
|
|
|
## v0
|
|
|
|
Release tag: `v0`
|
|
|
|
Release date: 2026-05-16
|
|
|
|
Release commit: `d7a60ce`
|
|
|
|
## Summary
|
|
|
|
Slovo v0 is the first released language contract. It turns the initial
|
|
manifest, design laws, and compiler experiments into a strict supported subset
|
|
with matching Glagol implementation coverage.
|
|
|
|
The purpose of v0 is not broad application development. The purpose is to
|
|
establish a clean, compiler-backed kernel that can be parsed, formatted,
|
|
checked, tested, inspected, lowered, and emitted as LLVM IR.
|
|
|
|
## Supported Fixture Set
|
|
|
|
These examples define the compiler-supported Slovo v0 surface:
|
|
|
|
```text
|
|
examples/supported/add.slo
|
|
examples/supported/top-level-test.slo
|
|
examples/supported/local-variables.slo
|
|
examples/supported/if.slo
|
|
examples/supported/while.slo
|
|
examples/supported/struct.slo
|
|
examples/supported/array.slo
|
|
examples/supported/option-result.slo
|
|
examples/supported/unsafe.slo
|
|
```
|
|
|
|
Formatter fixtures live in `examples/formatter/` and define canonical layout
|
|
for the same strict supported syntax.
|
|
|
|
Frozen copies of the v0 supported and formatter fixtures live under
|
|
`examples/compat/v0/` for post-v0 compatibility checks.
|
|
|
|
Examples under `examples/speculative/` are design targets, not supported v0
|
|
compiler fixtures.
|
|
|
|
## Supported Language Surface
|
|
|
|
Slovo v0 supports:
|
|
|
|
- `(module name)`
|
|
- top-level `(fn ...)`
|
|
- top-level `(test "name" body... final-expression)`
|
|
- top-level `(struct Name (field i32)...)`
|
|
- explicit `i32` parameters and `i32` returns
|
|
- direct `(option i32)` and `(result i32 i32)` constructor returns
|
|
- integer literals and parameter references
|
|
- binary `+`
|
|
- equality comparison `=`
|
|
- ordering comparison `<`
|
|
- user function calls
|
|
- temporary compiler intrinsic `print_i32`
|
|
- local `i32` bindings with `let` and `var`
|
|
- mutable local assignment with `set`
|
|
- value-producing `if`
|
|
- first-pass `while` as a non-final sequential body form
|
|
- first-pass struct construction and immediate field access
|
|
- first-pass fixed `i32` array construction
|
|
- immutable fixed `i32` array locals
|
|
- literal checked indexing
|
|
- first-pass option/result constructors
|
|
- lexical `unsafe` expression blocks containing otherwise supported safe forms
|
|
|
|
## Compiler Contract
|
|
|
|
The matching compiler release is Glagol v0. Its implementation-facing surface is
|
|
the `glagol` binary CLI.
|
|
|
|
Glagol can:
|
|
|
|
- emit LLVM IR for supported programs
|
|
- format supported source
|
|
- print parsed trees
|
|
- inspect surface lowering
|
|
- inspect checked lowering
|
|
- check top-level tests
|
|
- run top-level tests
|
|
- emit structured diagnostics for unsupported or invalid source-reachable forms
|
|
|
|
Native executable output is not part of the Slovo v0 language contract. v0 uses
|
|
the explicit Glagol LLVM IR plus Clang runtime-linking workflow.
|
|
|
|
## Explicit Deferrals
|
|
|
|
Slovo v0 does not support:
|
|
|
|
- runtime string values
|
|
- dynamic array indices
|
|
- runtime array bounds traps
|
|
- array parameters, returns, or mutation
|
|
- slices
|
|
- option/result locals, calls as values, matching, unwrap, equality, or printing
|
|
- struct locals, parameters, returns, field mutation, nested fields, recursive
|
|
structs, or methods
|
|
- pointer types
|
|
- raw allocation and deallocation
|
|
- pointer load/store
|
|
- pointer arithmetic
|
|
- unchecked indexing behavior
|
|
- reinterpretation
|
|
- FFI
|
|
- unsafe abstractions
|
|
- stable ABI or layout promises
|
|
- macros
|
|
- generics
|
|
- package management
|
|
- ownership or affine resources
|
|
- concurrency
|
|
- direct machine-code backend
|
|
|
|
## Post-v0 Direction
|
|
|
|
Post-v0 work starts in `SPEC-v1.md` and `.llm/V1_ROADMAP.md`.
|
|
|
|
The first recommended v1 slice is struct value flow: struct locals, parameters,
|
|
returns, and field access through stored struct values. This slice should be
|
|
specified before implementation and must preserve the v0 support rule.
|