| .. | ||
| compat/v0 | ||
| ffi/exp-6-c-add | ||
| formatter | ||
| projects | ||
| speculative | ||
| supported | ||
| workspaces | ||
| README.md | ||
Slovo Examples
Examples are split by current compiler support.
Compiler-Supported Targets
Entries in this section are current compiler support under the matching
release notes. The current compiler-supported baseline is 1.0.0-beta,
which absorbs the final exp-125 unsigned precursor scope alongside the
already promoted project/package, stdlib-source, collection, composite-data,
formatter, and diagnostics surface.
supported/add.slo is the current executable promotion fixture. Glagol can parse it,
lower it, type-check it, emit LLVM for it, and cover that output with an automated
test.
supported/top-level-test.slo is the current test-runner promotion fixture.
Glagol can parse it, lower it, type-check it, format it, inspect it, check tests,
run tests, keep normal LLVM emission free of test metadata, and cover those
behaviors with automated tests.
supported/local-variables.slo is the current local-binding promotion fixture.
Glagol can parse it, lower it, type-check it, format it, emit LLVM for local
storage, run local-using top-level tests, and cover local diagnostics with
automated tests. exp-112 later broadens that same fixture with direct
immutable bool locals over the already promoted bool-expression surface.
supported/if.slo is the current value-producing conditional promotion
fixture. Glagol can parse it, lower it, type-check it, format it, emit LLVM
branch/merge blocks, run if-using top-level tests, and cover conditional
diagnostics with automated tests.
supported/while.slo is the current first-pass loop promotion fixture. Glagol
can parse it, lower it, type-check it, format it, emit LLVM loop blocks, run
loop-using top-level tests, and cover loop diagnostics with automated tests.
supported/struct.slo is the current first-pass struct promotion fixture.
Glagol can parse it, lower it, type-check it, format it, emit LLVM for
immediate constructor field access, run struct-using top-level tests, and cover
struct diagnostics with automated tests.
supported/struct-value-flow.slo is the first v1 struct value-flow promotion
fixture. Glagol can parse it, lower it, type-check it, format it, emit LLVM for
immutable struct locals, struct parameters, struct returns, calls returning
structs, and field access through stored struct values.
supported/array.slo is the current first-pass array/indexing promotion
fixture. Glagol can parse it, lower it, type-check it, format it, emit LLVM for
immediate constructor indexing and immutable array local indexing, run
array-using top-level tests, and cover array diagnostics with automated tests.
supported/array-value-flow.slo is the first v1 array value-flow and
dynamic-indexing promotion fixture. Glagol can parse it, lower it, type-check
it, format it, emit LLVM for immutable array locals initialized from matching
array-valued expressions, fixed i32 array parameters, returns, calls
returning arrays, and runtime-checked dynamic indexing, and run array
value-flow top-level tests.
supported/array-direct-scalars.slo broadens the fixed-array fixture surface
from i32 only to direct scalar element families i32, i64, f64, and
bool. It keeps positive lengths only, immutable locals only, and checked
literal indexing only.
supported/array-direct-scalars-value-flow.slo broadens the array value-flow
fixture surface to the same direct scalar array family. It keeps immutable
array locals, parameters, returns, calls returning arrays, and runtime-checked
dynamic indexing, while keeping index expressions i32 only.
supported/array-string.slo broadens the fixed-array fixture surface with one
concrete string element lane. It keeps positive lengths only, immutable
locals only, and checked literal indexing only.
supported/array-string-value-flow.slo broadens the array value-flow fixture
surface to the same string array lane. It keeps immutable array locals,
parameters, returns, calls returning arrays, and runtime-checked dynamic
indexing, while keeping index expressions i32 only.
supported/option-result.slo is the current first-pass option/result
constructor promotion fixture. Glagol can parse it, lower it, type-check it,
format it, emit LLVM for direct constructor-return functions, and cover
option/result diagnostics with automated tests.
supported/option-result-flow.slo is the first v1 option/result value-flow
promotion fixture. Glagol can parse it, lower it, type-check it, format it,
emit LLVM for immutable option/result locals, option/result parameters, calls
returning option/result values, and tag observation with is_some, is_none,
is_ok, and is_err.
supported/option-result-payload.slo is the first v1 option/result
payload-access promotion fixture. Glagol can parse it, lower it, type-check it,
format it, emit LLVM for unwrap_some, unwrap_ok, and unwrap_err, runtime
trap on mismatched tags, and verify that tag checks happen before payload
access.
supported/option-result-match.slo is the v1.4 option/result match promotion
fixture. Glagol can parse it, lower it, type-check it, format it, emit LLVM for
source-level match over (option i32) and (result i32 i32), enforce
exhaustive arms, bind immutable arm payloads, type-check common arm result
types, and cover match diagnostics with automated tests.
supported/string-print.slo is the first runtime string promotion fixture.
Glagol can parse it, lower it, type-check it, format it, emit LLVM for
immutable compiler-emitted NUL-terminated string literal storage, call the
legacy print_string runtime compatibility alias, and verify that the decoded
literal is printed with a trailing newline.
supported/string-value-flow.slo is the v1.2 immutable string value-flow
promotion fixture. Glagol can parse it, lower it, type-check it, format it,
emit LLVM for string locals, parameters, returns, calls returning strings,
string equality, and string byte length with string_len, and run top-level
tests using string equality and length comparisons.
supported/print-bool.slo is the v1.2 bool-printing promotion fixture. Glagol
can parse it, lower it, type-check it, format it, emit LLVM for the legacy
print_bool runtime compatibility alias, and verify true / false output
with trailing newlines.
supported/standard-runtime.slo is the v1.5 standard-runtime alpha promotion
fixture. Glagol can parse it, lower it, type-check it, format it, emit LLVM for
compiler-known std.io.print_i32, std.io.print_string, std.io.print_bool,
and std.string.len calls, preserve legacy print and string-length aliases,
and reject unknown or unpromoted std.* calls with structured diagnostics.
supported/owned-string-concat.slo is the exp-1 owned-runtime-string
compiler-supported fixture. The surface is compiler-known std.string.concat
with signature (string, string) -> string, producing an immutable
runtime-owned string usable by existing string equality, std.string.len,
std.io.print_string, string locals, parameters, returns, and calls.
supported/vec-i32.slo is the exp-2 collections alpha compiler-supported
fixture. It covers one concrete (vec i32) type,
std.vec.i32.empty, std.vec.i32.append, std.vec.i32.len,
std.vec.i32.index, vector equality, immutable locals, parameters, returns,
calls, and top-level tests.
supported/vec-i64.slo is the exp-94 concrete (vec i64) baseline
compiler-supported fixture. It covers std.vec.i64.empty,
std.vec.i64.append, std.vec.i64.len, std.vec.i64.index, vector
equality, append immutability, immutable locals, parameters, returns, calls,
and top-level tests.
supported/host-io.slo is the exp-3 standard IO and host environment
compiler-supported fixture. It covers std.io.eprint, std.process.argc,
std.process.arg,
std.env.get, std.fs.read_text, and std.fs.write_text using the
stage-specific trap/status behavior.
supported/time-sleep.slo is the exp-8 host time and sleep alpha conformance
fixture added by the exp-14 alignment release. It covers
std.time.monotonic_ms: () -> i32, std.time.sleep_ms: (i32) -> unit,
non-negative/structural monotonic-time checks, and deterministic sleep_ms 0
behavior. It makes no positive-duration timing assertion.
supported/enum-basic.slo is the exp-4 user enum fixture. It covers a
payloadless enum declaration, zero-argument qualified constructors,
same-enum equality, immutable local/parameter/return/call flow, exhaustive
payloadless enum match, and top-level tests.
supported/enum-payload-i32.slo is the exp-16 unary i32 enum payload fixture.
It covers an enum declaration mixing payloadless and unary i32 payload
variants, qualified payload constructors, payload match arms with immutable
arm-local bindings, immutable local/parameter/return/call flow, same-enum
tag-plus-payload equality, top-level tests, and main.
supported/enum-struct-fields.slo is the exp-18 enum struct field fixture. It
covers struct field declarations using current enum type names directly,
struct construction with payloadless and unary i32 enum field values, field
access returning enum values, same-enum equality on field access, exhaustive
enum match on field access, immutable local/parameter/return/call flow,
top-level tests, and main.
supported/primitive-struct-fields.slo is the exp-19 primitive struct field
fixture. It covers direct i32, bool, and immutable string struct fields,
construction, field access, immutable local/parameter/return/call flow, a bool
field in a predicate and test, string field equality, std.string.len,
top-level tests, and main.
supported/local-variables.slo is also the exp-112 immutable bool locals
fixture. It now covers direct immutable bool locals declared with let,
initialized from already promoted bool literals, parameters, and calls
returning bool, with local references feeding existing predicate, return,
call, top-level test, and main positions.
supported/f64-numeric-primitive.slo is the exp-20 f64 numeric primitive
fixture. It covers direct f64 parameters, returns, immutable locals, calls,
decimal literals, same-type f64 arithmetic/comparison, std.io.print_f64,
top-level tests, and main returning i32.
supported/i64-numeric-primitive.slo is the exp-21 i64 numeric primitive
fixture. It covers direct i64 parameters, returns, immutable locals, calls,
explicit signed decimal i64 literal atoms, same-type i64
arithmetic/comparison, std.io.print_i64, top-level tests, and main
returning i32.
supported/numeric-widening-conversions.slo is the exp-22 numeric widening
conversions alpha fixture. It covers exactly three explicit standard-runtime
calls: std.num.i32_to_i64 : (i32) -> i64,
std.num.i32_to_f64 : (i32) -> f64, and
std.num.i64_to_f64 : (i64) -> f64, with converted values feeding same-type
arithmetic/comparison, top-level tests, and main returning i32.
supported/checked-i64-to-i32-conversion.slo is the exp-23 checked
i64-to-i32 conversion alpha fixture. It covers exactly one checked narrowing
standard-runtime call,
std.num.i64_to_i32_result : (i64) -> (result i32 i32), with low/high
signed i32 bounds and an in-range negative value returning ok, out-of-range
values returning err 1, existing std.result.* helpers, top-level tests,
and main returning i32.
supported/integer-to-string.slo is the exp-24 integer to string alpha
fixture. It covers exactly two integer formatting standard-runtime calls,
std.num.i32_to_string : (i32) -> string and
std.num.i64_to_string : (i64) -> string, with decimal signed ASCII output
for i32 zero/negative/high values and i64 low/high/beyond-i32 values,
existing string equality, std.string.len, std.io.print_string, top-level
tests, and main returning i32.
supported/string-parse-i64-result.slo is the exp-25 string parse i64 result
alpha fixture. It covers exactly one string parsing standard-runtime call,
std.string.parse_i64_result : (string) -> (result i64 i32), with complete
non-empty ASCII signed decimal input, ok results for zero, a negative value,
and signed i64 low/high bounds, err 1 for empty, leading-plus, and
out-of-range input, existing result observation/extraction forms,
std.num.i64_to_string roundtrips, top-level tests, and main returning
i32.
supported/f64-to-string.slo is the exp-26 f64 to string alpha fixture. It
promotes exactly std.num.f64_to_string : (f64) -> string, with finite
decimal ASCII text for promoted finite f64 fixture values.
supported/f64-to-i32-result.slo is the exp-27 checked f64 to i32 result
alpha fixture. It promotes exactly
std.num.f64_to_i32_result : (f64) -> (result i32 i32), returning ok value
only for finite, exactly integral inputs inside the signed i32 range and
err 1 for non-finite, fractional, or out-of-range input.
supported/string-parse-f64-result.slo is the exp-28 string parse f64 result
alpha fixture. It promotes exactly
std.string.parse_f64_result : (string) -> (result f64 i32), returning
ok value for complete finite ASCII decimal f64 text and err 1 for
ordinary parse failure, non-finite text, trailing or leading unsupported
characters, or out-of-domain input.
supported/numeric-struct-fields.slo is the exp-29 numeric struct fields
alpha fixture. It promotes direct immutable struct field declarations whose
field types are exactly i64 or finite f64, alongside already supported
direct i32, bool, immutable string, and current enum fields. It covers
constructors, immutable local/parameter/return/call flow, field access,
same-type arithmetic/comparison after field access, existing numeric
print/format helpers, top-level tests, and main.
formatter/std-source-layout-alpha.slo is the exp-30 standard library source
layout alpha formatter fixture. It demonstrates the current helper shape while
the source layout itself lives under std/; it does not claim repo-root std
import/search support.
supported/f64-to-i64-result.slo is the exp-31 checked f64 to i64 result
alpha fixture. It promotes exactly
std.num.f64_to_i64_result : (f64) -> (result i64 i32), returning ok value
only for finite, exactly integral inputs inside the signed i64 range and
err 1 for non-finite, fractional, or out-of-range input. It uses a
formatter-stable conservative out-of-range fixture value,
9223372036854776000.0; the accepted exact 9223372036854775808.0 spelling
formats to that value. Detailed edge behavior near the f64/i64 limits is
implementation-owned by Glagol tests.
Current Slovo-Side Beta Baseline
The current Slovo-side beta baseline includes the final exp-125 unsigned numeric and stdlib breadth scope. These files are now current compiler-supported targets with matching Glagol coverage:
supported/u32-numeric-primitive.slosupported/u64-numeric-primitive.slosupported/unsigned-integer-to-string.slosupported/string-parse-u32-result.slosupported/string-parse-u64-result.slo- widened explicit import projects under
projects/std-import-string/,projects/std-import-num/,projects/std-import-io/,projects/std-import-env/,projects/std-import-fs/,projects/std-import-process/,projects/std-import-cli/,projects/std-import-result/, andprojects/std-import-option/
supported/unsafe.slo is the current lexical unsafe promotion fixture. Glagol
can parse it, lower it, type-check it, format it, emit LLVM for safe forms
inside the block, and cover unsafe-required diagnostics for raw unsafe
operation heads with automated tests.
supported/random.slo is the exp-11 basic randomness alpha release fixture.
It covers only std.random.i32: () -> i32 and a non-negative result check.
supported/stdin-result.slo is the exp-12 standard input result alpha release
fixture. It covers only
std.io.read_stdin_result: () -> (result string i32), existing
(result string i32) observers, unwrap, and match, with deterministic
test-runner ok behavior.
supported/string-parse-i32-result.slo is the exp-13 string parse i32 result
alpha release fixture. It covers only
std.string.parse_i32_result: (string) -> (result i32 i32), existing
(result i32 i32) observers, unwrap, and match, and structural composition
with std.io.read_stdin_result without assuming a particular stdin payload.
supported/result-helpers.slo is the exp-15 result helper standard names alpha
fixture. It covers std.result.is_ok, std.result.is_err,
std.result.unwrap_ok, and std.result.unwrap_err for only
(result i32 i32) and (result string i32).
Supported examples are part of the current compiler contract. The supported
subset is only the syntax and behavior exercised by the released fixture set:
module,
top-level functions, top-level tests, top-level i32 structs, i32 parameters
and returns, direct (option i32), (option i64), and (result i32 i32)
constructor returns,
integer literals, parameter references, binary +, equality
comparison =, function calls, legacy compiler/runtime compatibility alias
print_i32, local i32 bindings with let and var, immutable
(array T N) locals with direct array constructors when T is i32, i64,
f64, or bool, assignment to mutable locals with set, ordering comparison
< as a bool-producing condition, value-producing if,
first-pass while, first-pass struct construction and immediate field access,
first v1 struct value flow through immutable locals, parameters, returns, and
stored field access,
fixed direct scalar array constructors and literal indexing,
fixed direct scalar array value flow through immutable array locals initialized
from matching array-valued expressions, fixed array parameters, returns, calls
returning arrays, and runtime-checked dynamic indexing with i32 index
expressions,
first-pass (some i32 value), (none i32), (some i64 value),
(none i64), (ok i32 i32 value), and (err i32 i32 value) constructors as
direct function returns,
first v1 option/result value flow through immutable locals, parameters, calls,
and tag observation,
first v1 trap-based concrete option/result payload extraction with
unwrap_some, unwrap_ok, and unwrap_err,
v1.4 source-level match for (option i32), (option i64), and
(result i32 i32) values, with exhaustive arms, immutable arm-scoped payload
bindings, one-or-more expression arm bodies, and common arm result types,
first runtime string slice through immutable source string literals passed
directly to legacy compiler/runtime compatibility alias print_string,
v1.2 immutable string value flow through let locals, parameters, returns,
calls returning strings, string equality, string byte length through
string_len, top-level tests using string equality, and legacy
compiler/runtime compatibility alias print_bool,
v1.5 compiler-known standard-runtime names std.io.print_i32,
std.io.print_string, std.io.print_bool, and std.string.len, with legacy
print_i32, print_string, print_bool, and string_len retained as
compatibility aliases,
exp-1 std.string.concat fixture for immutable runtime-owned strings,
exp-2 (vec i32) values with empty/append/len/index/equality,
exp-3 host IO calls,
exp-4 payloadless enum forms,
exp-5 local package/workspace graph hygiene,
exp-6 C FFI scalar imports behind lexical unsafe,
exp-8 host time/sleep names with only sleep_ms 0 and structural/
non-negative monotonic_ms checks,
the exp-11 std.random.i32 release,
the exp-12 std.io.read_stdin_result release,
the exp-13 std.string.parse_i32_result release,
the exp-15 preferred std.result.* helper names for the already supported
(result i32 i32) and (result string i32) families, with legacy
unqualified result helpers retained as compatibility syntax,
the exp-16 unary i32 enum payload release,
the exp-18 direct enum struct field release,
the exp-19 direct primitive struct field release,
the exp-112 immutable bool locals release,
the exp-20 direct f64 numeric primitive release,
the exp-21 direct i64 numeric primitive release,
the exp-22 numeric widening conversion release,
the exp-23 checked i64-to-i32 conversion release,
the exp-24 integer to string release,
the exp-25 string parse i64 result release,
the exp-26 f64 to string release,
the exp-27 checked f64-to-i32 result release,
the exp-28 string parse f64 result release,
the exp-31 checked f64-to-i64 result release,
lexical unsafe expression blocks containing only otherwise supported safe v0 forms,
and final-expression returns.
Compatibility
Frozen v0 compatibility fixtures live under compat/v0/.
compat/v0/supported/ preserves the v0 supported program fixtures, and
compat/v0/formatter/ preserves the v0 formatter fixtures. They are not the
place for new v1 promotion work.
Compatibility fixtures change only through the migration process in
../MIGRATION_POLICY.md. Ordinary v1 additions belong in supported/ and
formatter/.
Projects
projects/basic/ is the minimal v1.3 project-mode fixture. It contains a
slovo.toml manifest, a flat src source root, one exported local module, one
explicit import, top-level tests, and an entry main function.
projects/enum-imports/ is the exp-17 project enum import fixture. It exports
an enum from one module, imports that enum type into another module, and covers
payloadless and unary i32 payload constructors, immutable locals,
signatures, calls/returns, same-enum equality, exhaustive enum match,
top-level tests, and main. Matching Glagol exp-17 gates are required before
broader compiler-support claims.
Project fixtures are local module fixtures only. They are not package-manager, dependency, workspace, registry, generated-code, ABI, or incremental-build fixtures.
Workspaces
workspaces/exp-5-local/ is the minimal exp-5 local workspace fixture.
It contains one workspace manifest, two local package manifests, one local path
dependency, one package-qualified import, and one exported cross-package
function.
This fixture is experimental compiler-supported after matching Glagol exp-5 gates passed. It is not a remote registry, version solving, lockfile, build-script, generated-code, published-package, semver, ABI, macro, package-generic, or package re-export fixture.
FFI
ffi/exp-6-c-add/ is the minimal exp-6 C FFI scalar imports alpha fixture. It
contains one top-level imported C function declaration, a local C companion
implementing c_add, and a safe Slovo wrapper whose imported C call is visibly
inside lexical (unsafe ...).
This fixture is current experimental compiler-supported coverage after matching Slovo and Glagol exp-6 gates. It is not a pointer, allocation, deallocation, raw memory, ownership/lifetime, C export, generated-header, generated-library, broad linker, stable ABI, or stable layout fixture.
Formatter
Files in formatter/ define canonical layout for the current strict supported
syntax. They do not add language features and they are not executable
promotion fixtures unless they are also present under supported/.
Formatter examples may use only the supported forms listed above, plus line
comments. Unsupported design-target forms must stay out of formatter fixtures
until their formatter behavior and full compiler contract are implemented.
Top-level test is covered by formatter/top-level-test.slo.
Value-producing if is covered by formatter/if.slo.
Local declarations and assignment are covered by
formatter/local-variables.slo. First-pass while is covered by
formatter/while.slo. First-pass structs are covered by
formatter/struct.slo. First v1 struct value flow is covered by
formatter/struct-value-flow.slo. First-pass array constructors, immutable
array locals, and literal indexing are covered by formatter/array.slo and
the widened direct scalar fixture formatter/array-direct-scalars.slo. First
v1 array value flow and dynamic indexing are covered by
formatter/array-value-flow.slo and the widened direct scalar fixture
formatter/array-direct-scalars-value-flow.slo. The widened fixed string
array constructor and literal-indexing lane is covered by
formatter/array-string.slo. The widened fixed string array value-flow and
dynamic-indexing lane is covered by formatter/array-string-value-flow.slo.
First-pass option/result constructors are covered by
formatter/option-result.slo. First v1 option/result value flow is covered by
formatter/option-result-flow.slo. First v1 option/result payload access is
covered by formatter/option-result-payload.slo. v1.4 option/result match is
covered by formatter/option-result-match.slo. Lexical unsafe blocks are
covered by formatter/unsafe.slo. First runtime string printing is covered by
formatter/string-print.slo. v1.2 string value flow is covered by
formatter/string-value-flow.slo. v1.2 bool printing is covered by
formatter/print-bool.slo. v1.5 standard-runtime names are covered by
formatter/standard-runtime.slo. exp-1 owned string concatenation is covered
by formatter/owned-string-concat.slo. exp-2 vectors are covered by
formatter/vec-i32.slo. exp-3 host IO formatting is covered by
formatter/host-io.slo. exp-4 enum formatting is covered by
formatter/enum-basic.slo. exp-16 unary i32 enum payload formatting is
covered by formatter/enum-payload-i32.slo. exp-18 direct enum struct field
formatting is covered by formatter/enum-struct-fields.slo. exp-19 direct
primitive struct field formatting is covered by
formatter/primitive-struct-fields.slo. exp-112 immutable bool locals
formatting is covered by formatter/local-variables.slo. exp-20 f64 numeric
primitive formatting is covered by formatter/f64-numeric-primitive.slo. exp-21 i64
numeric primitive formatting is covered by
formatter/i64-numeric-primitive.slo. exp-22 numeric widening conversion
formatting is covered by formatter/numeric-widening-conversions.slo. exp-23
checked i64-to-i32 conversion formatting is covered by
formatter/checked-i64-to-i32-conversion.slo. exp-24 integer to string
formatting is covered by formatter/integer-to-string.slo. exp-17 does not
add a project
formatter fixture because this directory contains single-file formatter
fixtures, not whole project directories. The exp-12 standard input result
alpha is covered by formatter/stdin-result.slo. The exp-13 string
parse i32 result alpha is covered by
formatter/string-parse-i32-result.slo. The exp-25 string parse i64 result
alpha is covered by formatter/string-parse-i64-result.slo. The exp-26 f64
to string alpha is covered by formatter/f64-to-string.slo. The exp-27
checked f64-to-i32 result alpha is covered by
formatter/f64-to-i32-result.slo. The exp-28 string parse f64 result alpha
is covered by formatter/string-parse-f64-result.slo. The exp-29 numeric
struct fields alpha is covered by formatter/numeric-struct-fields.slo. The
exp-30 standard library source layout alpha is covered conservatively by
formatter/std-source-layout-alpha.slo. The exp-31 checked f64-to-i64 result
alpha is covered by formatter/f64-to-i64-result.slo. The
exp-15 result helper standard names
alpha is covered by
formatter/result-helpers.slo.
Design/Speculative
Files in speculative/ are language-design targets. They document intended Slovo
forms, but they are not current Glagol executable fixtures until each form has
parser/lowerer support, checker behavior, diagnostics, formatter behavior, LLVM
behavior or explicit unsupported diagnostics, and automated tests.
Speculative examples may use forms that Glagol partially recognizes. Partial recognition is not support; these files stay outside the compiler contract until the strict support rule is satisfied.
speculative/point.slo tracks follow-up struct behavior beyond v1 struct value
flow, including mutation and broader layout/ABI questions. The first-pass
struct contract is promoted through supported/struct.slo; the first v1
struct value-flow contract is promoted through supported/struct-value-flow.slo.
speculative/array-index.slo is retained as a non-contract array sketch. The
promoted v1 array value-flow forms live in supported/array-value-flow.slo
and the widened direct scalar fixtures supported/array-direct-scalars.slo
and supported/array-direct-scalars-value-flow.slo, plus the fixed string
fixtures supported/array-string.slo and
supported/array-string-value-flow.slo; mutation, slices, other unsupported
element types, nested arrays, equality, printing, unchecked indexing, and
layout/ABI questions remain follow-up work.
speculative/option-result.slo tracks follow-up option/result behavior beyond
the current promoted constructor, value-flow, tag-observation, and explicit
i32 payload-access and v1.4 match fixtures, including mapping, equality,
printing, string payloads, non-i32 payloads, generic payloads, nested
option/result values, arrays or structs containing option/results,
payload ADTs, and user-catchable exceptions.
Runtime string printing is promoted through supported/string-print.slo.
Immutable string value flow, string equality, and string byte length are
promoted through supported/string-value-flow.slo. Mutable string locals,
string assignment, string ordering, strings inside arrays, options, or
results, string containers beyond exp-19 direct struct fields, string slices,
concatenation beyond exp-1 std.string.concat,
indexing, ownership annotations, and user-defined string runtime bindings
remain follow-up design work. print_unit remains
unsupported because unit is still an internal builtin result type rather than
a user-visible value. v1.5 standard-runtime names are promoted only for
existing print and string-length behavior. std.io.print_unit, host IO beyond
the exp-3 slice and exp-12 stdin-result slice, networking, async IO, binary
file APIs, directory
traversal, terminal control, platform abstraction, general host error ADTs,
result string Error, package interaction, stdin APIs beyond the exp-12
result slice, parsing beyond exp-13 std.string.parse_i32_result, exp-25
std.string.parse_i64_result, and exp-28
std.string.parse_f64_result, result helper payload families beyond the
explicitly listed (result i32 i32), (result i64 i32),
(result string i32), and exp-28 returned (result f64 i32) families,
tokenizer/scanner APIs, parsing bools/strings/bytes,
whitespace/locale/base-prefix/underscore/plus-sign parsing, Unicode digit
parsing, parse error messages or richer codes, randomness, time, generic
vectors, vector element types other than i32,
vector mutation, vector var or set, vector literals beyond empty/append
construction, push, nested vectors, vectors in arrays, structs, options, or
results, iterators, slices, maps, sets, user-visible vector deallocation,
stable vector ABI/layout/helper symbols, allocation, user-defined standard
modules, imports/packages, overloading, generic APIs, Unicode length
semantics, and ABI/layout promises remain follow-up design work. exp-2 adds
only (vec i32) with
std.vec.i32.empty, std.vec.i32.append, std.vec.i32.len,
std.vec.i32.index, and vector equality. exp-3 adds only std.io.eprint,
std.process.argc, std.process.arg, std.env.get, std.fs.read_text, and
std.fs.write_text. exp-4 adds only payloadless user-defined enums with
qualified zero-argument constructors, same-enum equality, immutable value flow,
and exhaustive payloadless enum match. exp-16 adds only unary i32 enum
payload variants, exp-17 adds only explicit project/workspace import/export
of current enum type names, and exp-18 adds only direct enum-typed struct
fields for the current enum surface. exp-19 adds only direct bool and
immutable string struct fields alongside direct i32 and exp-18 enum
fields. exp-112 adds only direct immutable bool locals over already
promoted bool expressions. exp-20 adds only direct f64 value flow,
same-type f64 arithmetic/comparison, and std.io.print_f64. f32,
wider/common integer
types beyond exp-21 direct i64, char/bytes/decimal, numeric casts, mixed
numeric arithmetic, f64/i64 collections, f64/i64 enum payloads, f64/i64 struct
fields, parse_f64, random floats or random i64, stable
ABI/layout, and beta maturity remain deferred. exp-21 adds only direct i64
value flow, explicit signed decimal i64 literal atoms, same-type i64
arithmetic/comparison, and std.io.print_i64. exp-22 adds only explicit
standard-runtime widening calls std.num.i32_to_i64 : (i32) -> i64,
std.num.i32_to_f64 : (i32) -> f64, and
std.num.i64_to_f64 : (i64) -> f64. exp-23 adds only
std.num.i64_to_i32_result : (i64) -> (result i32 i32); implicit promotion,
mixed numeric operators, other narrowing or checked conversions, cast syntax,
std.num.cast, f64 conversions, f32, unsigned/narrower integer families,
numeric parse/format APIs beyond exp-24 integer-to-string, exp-25
std.string.parse_i64_result, exp-26 finite std.num.f64_to_string, and
exp-27 checked std.num.f64_to_i32_result,
stable ABI/layout, and beta maturity remain deferred. exp-24 adds only
std.num.i32_to_string : (i32) -> string and
std.num.i64_to_string : (i64) -> string; f64 formatting, parse APIs,
locale/base/radix/grouping/padding controls, generic format/display traits,
implicit conversions, stable standard-library implementation source, stable
ABI/layout/ownership, and beta maturity remain deferred. exp-25 adds only
std.string.parse_i64_result : (string) -> (result i64 i32); f64 parse,
generic parse, whitespace/plus/underscore/radix/base/locale/Unicode parsing,
rich parse errors, stable ABI/layout/ownership, and beta maturity remain
deferred. exp-26 adds only std.num.f64_to_string : (f64) -> string; f32,
f64 parse, generic format/display/interpolation, precision controls, stable
NaN/infinity text, stable ABI/layout/ownership, and beta maturity remain
deferred. exp-27 adds only
std.num.f64_to_i32_result : (f64) -> (result i32 i32); unchecked f64 to
i32, casts or cast syntax, generic cast_checked, f32,
unsigned/narrower integer families, f64 parse, mixed numeric arithmetic,
numeric containers, stable ABI/layout/ownership, and beta maturity remain
deferred. exp-28 adds only
std.string.parse_f64_result : (string) -> (result f64 i32); 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, and beta maturity remain deferred.
exp-29 adds only direct immutable i64 and finite f64 struct fields;
struct field mutation, nested structs, arrays/vectors/options/results as
fields, enum payload widening, numeric containers, f32, unsigned or
narrower integer families, mixed numeric arithmetic, implicit conversions,
new parse/format APIs, generic structs, methods, traits, stable ABI/layout/
ownership, manifest schema changes, FFI layout claims, and beta maturity
remain deferred. exp-31 adds only
std.num.f64_to_i64_result : (f64) -> (result i64 i32); unchecked casts,
cast syntax, generic cast_checked, f32, unsigned/narrower integer
families, mixed numeric arithmetic, broad math, stable ABI/layout, manifest
schema changes, and beta maturity remain deferred.
Payloads beyond unary
i32,
generic enums,
generic functions, type aliases, traits/interfaces/protocols, methods, derives,
wildcard/rest patterns, guards, nested patterns, enum values in
arrays/options/results/vectors, enum values in nested structs, enum mutation, enum
printing/ordering/hash, reflection, explicit discriminants, unqualified
variant constructors, enum import behavior beyond exp-17 explicit local lists,
stable ABI/layout, and moving option/result to ordinary standard-library types
remain deferred.
speculative/unsafe-memory.slo tracks follow-up raw-memory behavior beyond the
current lexical unsafe block, including pointer locals, allocation,
deallocation, pointer load/store, and other unsafe operations.