167 KiB
Slovo Roadmap
This roadmap tracks the language contract. Glagol, in ../glagol, tracks the
compiler implementation.
Guiding rule: the manifest wins. A feature is not accepted until it has surface syntax, typed-core meaning, lowering behavior, formatter behavior, diagnostics, and tests.
Long-horizon planning lives in
.llm/GENERAL_PURPOSE_LANGUAGE_ROADMAP.md. It defines the experimental
release train from the historical v2.0.0-beta.1 tag toward and beyond the
first real general-purpose beta Slovo contract.
Current stage: 1.0.0-beta, released on 2026-05-21 as the first real
general-purpose beta Slovo contract. The beta release integrates the completed
unsigned u32/u64 numeric and staged-stdlib breadth scope from exp-125
with the already promoted project/package workflow, explicit std-source
imports, concrete vector families, fixed arrays, structs, enums, result/
option, generated docs, formatter behavior, and structured diagnostics.
The final experimental precursor scope is exp-125, defined in
.llm/EXP_125_UNSIGNED_U32_U64_NUMERIC_AND_STDLIB_BREADTH_ALPHA.md. Its
unsigned direct-value flow, parse/format runtime lanes, and matching staged
stdlib helper breadth are now absorbed into 1.0.0-beta.
The last tagged experimental alpha before beta is exp-124, defined in
.llm/EXP_124_FIXED_ARRAY_ENUM_AND_STRUCT_ELEMENTS_ALPHA.md.
The previous released experimental alpha contract is exp-123, defined in
.llm/EXP_123_OWNED_VECTOR_BENCHMARK_SUITE_EXTENSION_AND_WHITEPAPER_REFRESH_ALPHA.md,
for one connected benchmark/publication refresh. It keeps the exp-121
language surface unchanged while refreshing the current whitepaper baseline
and the documented nine-kernel benchmark suite around 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, with local-machine evidence
only, no threshold claim, and no beta claim.
The previous released experimental alpha contract is exp-122, defined in
.llm/EXP_122_COMPOSITE_DATA_BENCHMARK_SUITE_EXTENSION_AND_WHITEPAPER_REFRESH_ALPHA.md,
for one connected benchmark/publication refresh. It kept the exp-121
language surface unchanged while refreshing the earlier whitepaper baseline
and the documented seven-kernel benchmark suite around math-loop,
branch-loop, parse-loop, array-index-loop, string-eq-loop,
array-struct-field-loop, and enum-struct-payload-loop, with
local-machine evidence only, no threshold claim, and no beta claim.
The previous released experimental alpha contract is exp-121, defined in
.llm/EXP_121_NON_RECURSIVE_STRUCT_ENUM_PAYLOADS_ALPHA.md, for one connected
broadening of the enum payload surface. It allows unary enum payload variants
to use current known non-recursive struct types, while keeping exactly one
payload per payload variant, a conservative same-payload-type-per-enum rule
when payload variants are present, existing immutable enum flow through
locals/params/returns/calls/tests/main, existing match payload binding and
field access behavior, no enum equality requirement for struct-payload enums,
no direct array/vec/option/result payloads, no recursion, and no beta claim.
The previous released experimental alpha contract is exp-120, defined in
.llm/EXP_120_FIXED_ARRAY_STRUCT_FIELDS_ALPHA.md, for one connected
broadening of the struct-field surface. It adds direct struct fields over the
current promoted fixed immutable array family (array i32 N), (array i64 N),
(array f64 N), (array bool N), and (array string N), while keeping array
lengths positive only, arrays and structs immutable only, checked indexing on
i32 expressions only, no field mutation, no array mutation, and no beta
claim.
The earlier released experimental alpha contract is exp-119, defined in
.llm/EXP_119_BENCHMARK_SUITE_EXTENSION_AND_WHITEPAPER_REFRESH_ALPHA.md, for
one connected benchmark/publication refresh. It keeps the exp-118 language
surface unchanged while refreshing the earlier whitepaper baseline and the
documented five-kernel benchmark suite around math-loop, branch-loop,
parse-loop, array-index-loop, and string-eq-loop, with local-machine
evidence only, no threshold claim, and no beta claim.
The previous released experimental alpha contract is exp-118, defined in
.llm/EXP_118_STRING_FIXED_ARRAYS_ALPHA.md, for one connected broadening of
the fixed-array surface. It adds (array string N) alongside the earlier
direct scalar array family, while keeping array lengths positive only, arrays
immutable only, checked indexing on i32 expressions only, arrays in struct
fields out of scope at that earlier boundary, and no beta claim.
The previous released experimental alpha contract is exp-117, defined in
.llm/EXP_117_DIRECT_SCALAR_FIXED_ARRAYS_ALPHA.md, for one connected
broadening of the fixed-array surface. It adds direct scalar element families
i64, f64, and bool alongside the existing i32 lane, while keeping
array lengths positive only, arrays immutable only, checked indexing on i32
expressions only, string arrays out of scope at that earlier boundary, and no
beta claim.
The previous released experimental alpha contract is exp-116, defined in
.llm/EXP_116_DIRECT_SCALAR_AND_STRING_ENUM_PAYLOADS_ALPHA.md, for one
connected broadening of the enum payload surface. It adds unary direct i64,
f64, bool, and string payload variants alongside payloadless variants
and the existing unary i32 lane, while keeping exactly one payload per
payload variant, a conservative same-payload-kind-per-enum rule, containers
and composite payloads out of scope, and no beta claim.
The previous released experimental alpha contract is exp-115, defined in
.llm/EXP_115_COMPOSITE_STRUCT_FIELDS_AND_NESTED_STRUCTS_ALPHA.md, for one
connected broadening of the struct-field surface. It adds current concrete
vec, option, and result families plus current known non-recursive struct
types as direct struct fields, alongside the already-supported direct scalar,
immutable string, and current enum field families, without broadening arrays
as fields, field mutation, recursive/cyclic layouts, adding new runtime
calls, or claiming beta maturity.
The previous released experimental alpha contract is exp-114, defined in
.llm/EXP_114_MUTABLE_COMPOSITE_LOCALS_ALPHA.md, for one connected
broadening of the local-value surface. It adds same-type mutable whole-value
reassignment for string, the current concrete vec families, the current
concrete option/result families, current known struct values, and current enum
values, without broadening arrays, field/element/payload mutation, adding new
runtime calls, or claiming beta maturity.
The previous released experimental alpha contract is exp-113, defined in
.llm/EXP_113_MUTABLE_SCALAR_LOCALS_ALPHA.md, for one connected broadening
of the local-value surface. It adds direct mutable bool, i64, and f64
locals declared with var and reassigned with set from already promoted
same-type scalar expressions, without broadening string/vector/option/result/
struct/enum mutation, adding new runtime calls, or claiming beta maturity.
The previous released experimental alpha contract is exp-112, defined in
.llm/EXP_112_IMMUTABLE_BOOL_LOCALS_ALPHA.md, for one connected broadening
of the local-value surface. It adds direct immutable bool locals declared
with let, initialized from already promoted bool expressions, and reusable
in existing predicate, return, call, test, and main positions, without
adding mutable bool locals, bool assignment, new runtime calls, or a beta
claim.
The previous released experimental alpha contract is exp-111, defined in
.llm/EXP_111_STANDARD_IO_STDIN_SOURCE_HELPERS_ALPHA.md, for one connected
broadening of the concrete std.io facade. It adds
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, and read_stdin_bool_or while staying
source-authored over the promoted std.io.read_stdin_result,
std.string.parse_*_result, and exp-109 bridge helpers only, without
adding compiler-known std names, generics, new runtime calls, or a beta
claim.
The previous released experimental alpha contract is exp-109, defined in
.llm/EXP_109_STANDARD_OPTION_AND_RESULT_BRIDGE_HELPERS_ALPHA.md, for one
connected broadening of the concrete std.option and std.result facades.
It adds some_or_err_i32, some_or_err_i64, some_or_err_f64,
some_or_err_bool, some_or_err_string, ok_or_none_i32,
ok_or_none_i64, ok_or_none_string, ok_or_none_f64, and
ok_or_none_bool while staying source-authored over the existing concrete
option/result families only, without adding compiler-known std names,
generics, or a beta claim.
The previous released experimental alpha contract is exp-108, defined in
.llm/EXP_108_STANDARD_VEC_STRING_F64_AND_BOOL_PREFIX_AND_SUFFIX_HELPERS_ALPHA.md,
for one connected broadening of the concrete std.vec_string,
std.vec_f64, and std.vec_bool facades. It adds starts_with,
without_prefix, ends_with, and without_suffix to all three modules
while staying source-authored, recursive, and immutable over the existing
vec-string, vec-f64, and vec-bool runtime families only, without adding
compiler-known std names, generics, or a beta claim.
The previous released experimental alpha contract is exp-106, defined in
.llm/EXP_106_STANDARD_VEC_F64_AND_BOOL_OPTION_QUERY_HELPERS_ALPHA.md, for
one connected broadening of the concrete std.vec_f64 and std.vec_bool
facades. It adds index_option, first_option, last_option,
index_of_option, and last_index_of_option to both modules while staying
source-authored, recursive, and immutable over the existing vec-f64 and
vec-bool runtime families and the already promoted concrete option families
only, without adding compiler-known std names, generics, edit helpers, or a
beta claim.
The previous released experimental alpha contract is exp-104, defined in
.llm/EXP_104_STANDARD_VEC_BOOL_BASELINE_ALPHA.md, for the first usable
std.vec_bool baseline facade over the sibling concrete (vec bool) runtime
family. It freezes the baseline direct wrappers, builder helpers, query
helpers, and the simple real-program helpers contains and count_of
without widening compiler semantics beyond concrete (vec bool) flow and
equality, and without adding generics, option/result helpers, transform/edit
helpers, or a beta claim.
The previous released experimental alpha contract is exp-102, defined in
.llm/EXP_102_STANDARD_OPTION_BOOL_AND_F64_BASELINE_ALPHA.md, for one
connected broadening of the concrete std.option facade and the conservative
option core-language slice. It adds the concrete (option f64) and
(option bool) helper families to std/option.slo, broadens immutable value
flow, extraction, and source-level match to those same families, and keeps
the whole slice explicit and concrete without adding compiler-known std names,
generic option semantics, or a beta claim.
The earlier released experimental alpha contract is exp-101, defined in
.llm/EXP_101_STANDARD_VEC_STRING_OPTION_AND_TRANSFORM_HELPERS_ALPHA.md, for
one connected broadening of the concrete std.vec_string facade. It adds the
option-query helpers index_option, first_option, last_option,
index_of_option, and last_index_of_option, plus the transform helpers
concat, take, drop, reverse, and subvec, while staying
source-authored, recursive, and immutable over the existing vec-string
runtime family without adding compiler-known std names, generics, edit
helpers, or a beta claim.
The earlier released experimental alpha contract is exp-100, defined in
.llm/EXP_100_STANDARD_OPTION_STRING_BASELINE_ALPHA.md, for the first
concrete (option string) baseline on top of the existing option slice. It
broadens std/option.slo with concrete string constructors, observers, and
fallback helpers, and broadens immutable option value flow, payload
extraction, and source-level match to (option string) without adding
compiler-known std names, generic option semantics, or a beta claim.
The earlier released experimental alpha contract is exp-99, defined in
.llm/EXP_99_STANDARD_VEC_STRING_BASELINE_ALPHA.md, for the first usable
std.vec_string baseline facade over the sibling concrete (vec string)
runtime family. It adds the required direct wrappers, builder helpers, query
helpers, and simple real-program helpers as one connected source-authored
slice without widening compiler semantics beyond concrete (vec string) flow
and equality, and without adding generics, helper families beyond the frozen
baseline, or a beta claim.
The earlier released experimental alpha contract is exp-98, defined in
.llm/EXP_98_STANDARD_VEC_I64_EDIT_HELPERS_ALPHA.md, for connected edit
helpers on top of the existing std.vec_i64 baseline facade. It adds
insert_at, insert_range, replace_at, replace_range, remove_at, and
remove_range as one connected source-authored slice, keeps the full
vec_i64 source family recursive and immutable, and does not add
compiler-known std names, generics, or a beta claim.
The earlier released experimental alpha contract is exp-97, defined in
.llm/EXP_97_STANDARD_VEC_I64_TRANSFORM_HELPERS_ALPHA.md, for narrow
transform helpers on top of the existing std.vec_i64 baseline facade. It
adds concat, take, drop, reverse, and subvec as one connected
source-authored slice, keeps the full vec_i64 source family recursive and
immutable, and does not add compiler-known std names, insert/replace/remove
helpers, generics, or a beta claim.
The earlier released experimental alpha contract is exp-96, defined in
.llm/EXP_96_STANDARD_VEC_I64_OPTION_QUERY_HELPERS_ALPHA.md, for concrete
option-query helpers on top of the existing std.vec_i64 baseline facade.
It adds index_option, first_option, last_option, index_of_option,
and last_index_of_option as one connected source-authored slice, keeps the
module self-contained through raw current (option i64) and (option i32)
forms instead of std.option, keeps the full vec_i64 source family recursive
and immutable, and does not add compiler-known std names, transform/range/edit
helpers, generics, or a beta claim.
The earlier released experimental alpha contract is exp-95, defined in
.llm/EXP_95_STANDARD_OPTION_I64_BASELINE_ALPHA.md, for the first concrete
(option i64) baseline on top of the existing option slice. It broadens
std/option.slo with the i64 constructor, observer, and fallback helper
surface, and broadens immutable option value flow, payload extraction, and
source-level match to (option i64) without adding compiler-known std
names, generic option semantics, or a beta claim.
The earlier released exp-94 is defined in
.llm/EXP_94_STANDARD_VEC_I64_BASELINE_ALPHA.md, for the first usable
std.vec_i64 baseline facade over the sibling concrete (vec i64) runtime
family. It adds the required direct wrappers, builder helpers, query
helpers, and simple real-program helpers as one connected source-authored
slice without widening compiler semantics or adding new Slovo-side
compiler-known runtime names. It remains experimental maturity, not a beta
claim.
The earlier released exp-93 is defined in
.llm/EXP_93_STANDARD_VEC_I32_COUNT_OF_HELPER_ALPHA.md, for one new public
std.vec_i32 helper, count_of, layered onto that same concrete runtime
family without widening compiler semantics or adding new runtime names. It
remains experimental maturity, not a beta claim.
The earlier released exp-92 is defined in
.llm/EXP_92_STANDARD_VEC_I32_WITHOUT_PREFIX_HELPER_ALPHA.md, for one new
public std.vec_i32 helper, without_prefix, layered onto that same
concrete runtime family without widening compiler semantics or adding new
runtime names. It remains experimental maturity, not a beta claim.
The earlier released exp-91 is defined in
.llm/EXP_91_STANDARD_VEC_I32_WITHOUT_SUFFIX_HELPER_ALPHA.md, for one new
public std.vec_i32 helper, without_suffix, layered onto that same
concrete runtime family without widening compiler semantics or adding new
runtime names. It remains experimental maturity, not a beta claim.
The earlier released exp-90 is defined in
.llm/EXP_90_STANDARD_VEC_I32_ENDS_WITH_HELPER_ALPHA.md, for one new
public std.vec_i32 helper, ends_with, layered onto that same concrete
runtime family without widening compiler semantics or adding new runtime
names. It remains experimental maturity, not a beta claim.
The earlier released exp-89 is defined in
.llm/EXP_89_STANDARD_VEC_I32_STARTS_WITH_HELPER_ALPHA.md, for one new
public std.vec_i32 helper, starts_with, layered onto that same concrete
runtime family without widening compiler semantics or adding new runtime
names. It remains experimental maturity, not a beta claim.
The earlier released exp-88 is defined in
.llm/EXP_88_STANDARD_VEC_I32_REPLACE_RANGE_HELPER_ALPHA.md, for one new
public std.vec_i32 helper, replace_range, layered onto that same
concrete runtime family without widening compiler semantics or adding new
runtime names. It remains experimental maturity, not a beta claim.
The earlier released exp-87 is defined in
.llm/EXP_87_STANDARD_VEC_I32_INSERT_RANGE_HELPER_ALPHA.md, for one new
public std.vec_i32 helper, insert_range, layered onto that same concrete
runtime family without widening compiler semantics or adding new runtime
names. It remains experimental maturity, not a beta claim.
The earlier released exp-86 is defined in
.llm/EXP_86_STANDARD_VEC_I32_REMOVE_RANGE_HELPER_ALPHA.md, for one new
public std.vec_i32 helper, remove_range, layered onto that same concrete
runtime family without widening compiler semantics or adding new runtime
names. It remains experimental maturity, not a beta claim.
The earlier released exp-85 is defined in
.llm/EXP_85_STANDARD_VEC_I32_SUBVEC_HELPER_ALPHA.md, for one new public
std.vec_i32 helper, subvec, layered onto that same concrete runtime
family without widening compiler semantics or adding new runtime names. It
remains experimental maturity, not a beta claim.
The earlier released exp-84 is defined in
.llm/EXP_84_STANDARD_VEC_I32_INSERT_HELPER_ALPHA.md, for one new public
std.vec_i32 helper, insert_at, layered onto that same concrete runtime
family without widening compiler semantics or adding new runtime names. It
remains experimental maturity, not a beta claim.
The earlier released exp-83 is defined in
.llm/EXP_83_STANDARD_VEC_I32_REMOVE_HELPER_ALPHA.md, for one new public
std.vec_i32 helper, remove_at, layered onto that same concrete runtime
family without widening compiler semantics or adding new runtime names. It
remains experimental maturity, not a beta claim.
The earlier released exp-82 is defined in
.llm/EXP_82_STANDARD_VEC_I32_REPLACE_HELPER_ALPHA.md, for one new public
std.vec_i32 helper, replace_at, layered onto that same concrete runtime
family without widening compiler semantics or adding new runtime names. It
remains experimental maturity, not a beta claim.
The earlier released exp-81 is defined in
.llm/EXP_81_STANDARD_VEC_I32_RANGE_HELPER_ALPHA.md, for one new public
std.vec_i32 helper, range, layered onto that same concrete runtime
family without widening compiler semantics or adding new runtime names. It
remains experimental maturity, not a beta claim.
The earlier released exp-80 is defined in
.llm/EXP_80_STANDARD_VEC_I32_GENERATED_CONSTRUCTOR_HELPERS_ALPHA.md, for
narrow generated constructor helpers layered onto the existing std.vec_i32
source facade over the promoted (vec i32) runtime family.
The earlier released exp-79 is defined in
.llm/EXP_79_STANDARD_VEC_I32_TRANSFORM_HELPERS_ALPHA.md, for narrow
recursive transform helpers layered onto the existing std.vec_i32 source
facade over the promoted (vec i32) runtime family. It remains
experimental maturity, not a beta claim.
The earlier released exp-78 is defined in
.llm/EXP_78_STANDARD_CLI_LOCAL_SOURCE_FACADE_ALPHA.md, for the unchanged
std.cli helper surface recorded as the Slovo-side contract for the sibling
Glagol local-source gate over the existing std.process and std.string
source facades. It remains experimental maturity, not a beta claim.
The earlier released exp-77 is defined in
.llm/EXP_77_STANDARD_VEC_I32_OPTION_QUERY_HELPERS_ALPHA.md, for concrete
option-returning query helpers layered onto the current std.vec_i32 source
facade over the promoted (vec i32) runtime family. It remains experimental
maturity, not a beta claim.
The earlier released exp-76 is defined in
.llm/EXP_76_STANDARD_VEC_I32_SOURCE_HELPERS_ALPHA.md, for a concrete
std.vec_i32 source facade over the current promoted (vec i32) runtime
family. It remains experimental maturity, not a beta claim.
The earlier released exp-75 is defined in
.llm/EXP_75_STANDARD_OPTION_CONSTRUCTORS_ALPHA.md, for source-authored
concrete option constructors over the current promoted (option i32) family.
It remains experimental maturity, not a beta claim.
The earlier released exp-74 is defined in
.llm/EXP_74_STANDARD_RESULT_CONSTRUCTOR_HELPERS_ALPHA.md, for
source-authored concrete result constructors over the current promoted result
families. It remains experimental maturity, not a beta claim.
The earlier released exp-73 is defined in
.llm/EXP_73_STANDARD_IO_VALUE_HELPERS_ALPHA.md, for source-authored
value-returning IO print helpers over the current promoted print runtime
calls. It remains experimental maturity, not a beta claim.
The earlier released exp-72 is defined in
.llm/EXP_72_STANDARD_CLI_CUSTOM_FALLBACK_HELPERS_ALPHA.md, for
source-authored typed CLI argument custom-fallback helpers over the current
argument lookup and concrete parse result families. It remains experimental
maturity, not a beta claim.
The earlier released exp-71 is defined in
.llm/EXP_71_STANDARD_PROCESS_CUSTOM_FALLBACK_HELPERS_ALPHA.md, for
source-authored typed process argument custom-fallback helpers over the
current argument lookup and concrete parse result families. It remains
experimental maturity, not a beta claim.
The earlier released exp-70 is defined in
.llm/EXP_70_STANDARD_FS_CUSTOM_FALLBACK_HELPERS_ALPHA.md, for
source-authored typed filesystem read custom-fallback helpers over the current
text-read and concrete parse result families. It remains experimental
maturity, not a beta claim.
The earlier released exp-69 is defined in
.llm/EXP_69_STANDARD_ENV_CUSTOM_FALLBACK_HELPERS_ALPHA.md, for
source-authored typed environment parse custom-fallback helpers over the
current environment lookup and concrete parse result families. It remains
experimental maturity, not a beta claim.
The earlier released exp-68 is defined in
.llm/EXP_68_STANDARD_STRING_CUSTOM_FALLBACK_HELPERS_ALPHA.md, for
source-authored typed string parse custom-fallback helpers over the current
concrete parse result families. It remains experimental maturity, not a beta
claim.
The earlier released exp-67 is defined in
.llm/EXP_67_STANDARD_PROCESS_TYPED_HELPERS_ALPHA.md, for source-authored
typed process argument result/fallback helpers over the current argument
lookup and concrete parse result families. It remains experimental maturity,
not a beta claim.
The earlier released exp-66 is defined in
.llm/EXP_66_STANDARD_FS_TYPED_READ_HELPERS_ALPHA.md, for source-authored
typed filesystem read result/fallback helpers over the current text-read and
concrete parse result families. It remains experimental maturity, not a beta
claim.
The earlier released exp-65 is defined in
.llm/EXP_65_STANDARD_ENV_TYPED_HELPERS_ALPHA.md, for source-authored typed
environment parse result/fallback helpers over the current environment lookup
and concrete parse result families. It remains experimental maturity, not a
beta claim.
The earlier released exp-64 is defined in
.llm/EXP_64_STANDARD_NUM_FALLBACK_HELPERS_ALPHA.md, for source-authored
checked conversion fallback helpers over the current numeric result
families. It remains experimental maturity, not a beta claim.
The earlier released exp-63 is defined in
.llm/EXP_63_STANDARD_FS_FALLBACK_HELPERS_ALPHA.md, for source-authored
filesystem fallback/status helpers over the current (result string i32) and
(result i32 i32) families. It remains experimental maturity, not a beta
claim.
The earlier released exp-62 is defined in
.llm/EXP_62_STANDARD_ENV_FALLBACK_HELPERS_ALPHA.md, for source-authored
environment presence/fallback helpers over the current (result string i32)
family. It remains experimental maturity, not a beta claim.
The earlier released exp-61 is defined in
.llm/EXP_61_STANDARD_PROCESS_FALLBACK_HELPERS_ALPHA.md, for source-authored
process argument fallback helpers over the current (result string i32)
family. It remains experimental maturity, not a beta claim.
The earlier released exp-60 is defined in
.llm/EXP_60_STANDARD_STRING_FALLBACK_HELPERS_ALPHA.md, for source-authored
string parse fallback helpers over the current concrete parse result
families. It remains experimental maturity, not a beta claim.
The earlier released exp-59 is defined in
.llm/EXP_59_HOSTED_BUILD_OPTIMIZATION_AND_BENCHMARK_PUBLICATION_ALPHA.md,
for the earlier benchmark/publication baseline paired with Glagol exp-59. It
keeps the exp-58 language surface unchanged and remains experimental
maturity, not a beta claim.
The earlier released exp-58 is defined in
.llm/EXP_58_BOOLEAN_LOGIC_ALPHA.md, for boolean and, or, and not
forms lowered through existing if semantics.
The earlier released exp-57 is defined in
.llm/EXP_57_INTEGER_BITWISE_ALPHA.md, for explicit integer bitwise heads
over same-width i32 and i64 operands plus source-authored std.math
bitwise wrappers.
The earlier released exp-56 is defined in
.llm/EXP_56_INTEGER_REMAINDER_ALPHA.md, for integer remainder % over
same-width i32 and i64 operands plus source-authored std.math
remainder/even/odd helpers.
The earlier released exp-55 is defined in
.llm/EXP_55_RESULT_F64_BOOL_SOURCE_FLOW_ALPHA.md, for concrete f64 and
bool result constructors and source match payload bindings.
The earlier released exp-54 is defined in
.llm/EXP_54_STANDARD_CLI_TYPED_ARGUMENTS_ALPHA.md, for typed argument parse
helpers in the staged CLI facade module.
The earlier released exp-53 is defined in
.llm/EXP_53_STANDARD_CLI_SOURCE_FACADE_ALPHA.md, for explicit project-mode
source search of the staged CLI facade module.
The earlier released exp-52 is defined in
.llm/EXP_52_STANDARD_PROCESS_FACADE_SOURCE_SEARCH_ALPHA.md, for explicit
project-mode source search of the staged process facade module.
The earlier released exp-51 is defined in
.llm/EXP_51_STANDARD_LIBRARY_PATH_LIST_ALPHA.md, for ordered
SLOVO_STD_PATH discovery of explicit standard-library source imports.
The earlier released exp-50 is defined in
.llm/EXP_50_INSTALLED_STANDARD_LIBRARY_DISCOVERY_ALPHA.md, for installed
toolchain discovery of explicit standard-library source imports.
The earlier released exp-49 is defined in
.llm/EXP_49_STANDARD_IO_FACADE_SOURCE_SEARCH_ALPHA.md, for explicit
project-mode source search of the staged IO facade module.
The earlier released exp-48 is defined in
.llm/EXP_48_STANDARD_CORE_FACADE_SOURCE_SEARCH_ALPHA.md, for explicit
project-mode source search of staged core facade modules.
The earlier released exp-47 is defined in
.llm/EXP_47_STANDARD_HOST_FACADE_SOURCE_SEARCH_ALPHA.md, for explicit
project-mode source search of staged host facade modules.
The earlier released exp-46 is defined in
.llm/EXP_46_WORKSPACE_STANDARD_SOURCE_SEARCH_ALPHA.md, for explicit
workspace-package standard source search.
The earlier released exp-45 is defined in
.llm/EXP_45_STANDARD_RESULT_OPTION_SOURCE_SEARCH_ALPHA.md, for explicit
project-mode std.result and std.option source search.
The earlier released exp-44 is defined in
.llm/EXP_44_STANDARD_LIBRARY_SOURCE_SEARCH_ALPHA.md, for explicit
project-mode std.math source search.
The earlier released exp-43 is defined in
.llm/EXP_43_TECHNICAL_WHITEPAPERS_AND_SKILLS_ALPHA.md, for technical
whitepapers, PDF publication artifacts, and beta language-design skills.
The earlier released exp-42 is defined in
.llm/EXP_42_HOT_LOOP_BENCHMARK_MODE_ALPHA.md, for hot-loop benchmark mode
alignment. It remains experimental maturity, not a beta claim, and does not
change the exp-39 language surface.
The earlier released exp-41, Lisp Benchmark Comparison Alpha, is defined in
.llm/EXP_41_LISP_BENCHMARK_COMPARISON_ALPHA.md for Lisp-family benchmark
comparison alignment.
The earlier released exp-40, Benchmark Suite And License Alpha, is defined
in .llm/EXP_40_BENCHMARK_SUITE_AND_LICENSE_ALPHA.md for benchmark-suite
alignment, project licensing, and release naming criteria.
The earlier released exp-39, Standard Math Extensions And Benchmark
Scaffold Alpha, is defined in
.llm/EXP_39_STANDARD_MATH_EXTENSIONS_AND_BENCHMARK_SCAFFOLD_ALPHA.md for
source-authored math helper extensions in std/math.slo and matching Glagol
benchmark scaffold gates.
The earlier released exp-38, Standard Host Source Facades Alpha, is defined
in .llm/EXP_38_STANDARD_HOST_SOURCE_FACADES_ALPHA.md and remains part of the
experimental history.
The earlier released exp-37, Standard Time Source Facade Alpha, is defined
in .llm/EXP_37_STANDARD_TIME_SOURCE_FACADE_ALPHA.md and remains part of the
experimental history.
The earlier released exp-36, Standard Option Source Helpers Alpha, is
defined in .llm/EXP_36_STANDARD_OPTION_SOURCE_HELPERS_ALPHA.md and remains
part of the experimental history.
The earlier released exp-35, Standard Result Bool Source Helpers Alpha, is
defined in .llm/EXP_35_STANDARD_RESULT_BOOL_SOURCE_HELPERS_ALPHA.md and
remains part of the experimental history.
The earlier released exp-34, String Parse Bool Result Alpha, is defined in
.llm/EXP_34_STRING_PARSE_BOOL_RESULT_ALPHA.md and remains part of the
experimental history.
The earlier released exp-33, Standard Result Source Helpers Alpha, is
defined in .llm/EXP_33_STANDARD_RESULT_SOURCE_HELPERS_ALPHA.md and remains
part of the experimental history.
The earlier released exp-32, Standard Math Source Helpers Alpha, is defined
in .llm/EXP_32_STANDARD_MATH_SOURCE_HELPERS_ALPHA.md and remains part of
the experimental history.
The earlier released exp-31, Checked F64 To I64 Result Alpha, is defined in
.llm/EXP_31_CHECKED_F64_TO_I64_RESULT_ALPHA.md and remains part of the
experimental history.
The earlier released exp-30, Standard Library Source Layout Alpha, is
defined in .llm/EXP_30_STANDARD_LIBRARY_SOURCE_LAYOUT_ALPHA.md and remains
part of the experimental history.
The earlier released exp-29, Numeric Struct Fields Alpha, is defined in
.llm/EXP_29_NUMERIC_STRUCT_FIELDS_ALPHA.md and remains part of the
experimental history.
The current released experimental alignment is exp-14, Standard Runtime
Conformance Alignment, defined in
.llm/EXP_14_STANDARD_RUNTIME_CONFORMANCE_ALIGNMENT.md. It adds no 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.
Release maturity policy lives in .llm/RELEASE_MATURITY_POLICY.md. All
current releases are experimental maturity; beta is reserved for the
general-purpose threshold.
Definition Of Supported
An example is compiler-supported only when Glagol can parse it, lower it, type-check it, emit LLVM for it, and the behavior is covered by an automated test.
Partial compiler recognition does not count as support. A checked form that can still reach a backend panic, lacks diagnostics, or lacks tests remains a design target.
Current supported subset:
examples/supported/add.sloexamples/supported/top-level-test.sloexamples/supported/local-variables.sloexamples/supported/composite-locals.sloexamples/supported/composite-struct-fields.sloexamples/supported/if.sloexamples/supported/while.sloexamples/supported/struct.sloexamples/supported/struct-value-flow.sloexamples/supported/array.sloexamples/supported/array-value-flow.sloexamples/supported/array-direct-scalars.sloexamples/supported/array-direct-scalars-value-flow.sloexamples/supported/array-string.sloexamples/supported/array-string-value-flow.sloexamples/supported/array-struct-fields.sloexamples/supported/enum-payload-structs.sloexamples/supported/option-result.sloexamples/supported/option-result-flow.sloexamples/supported/option-result-payload.sloexamples/supported/option-result-match.sloexamples/supported/string-print.sloexamples/supported/string-value-flow.sloexamples/supported/print-bool.sloexamples/supported/standard-runtime.sloexamples/supported/unsafe.sloexamples/supported/time-sleep.sloexamples/supported/string-parse-i32-result.sloexamples/supported/result-helpers.sloexamples/supported/enum-payload-i32.sloexamples/supported/enum-payload-direct-scalars.sloexamples/supported/enum-struct-fields.sloexamples/supported/primitive-struct-fields.sloexamples/supported/f64-numeric-primitive.sloexamples/supported/i64-numeric-primitive.sloexamples/supported/numeric-widening-conversions.sloexamples/supported/checked-i64-to-i32-conversion.sloexamples/supported/integer-to-string.sloexamples/supported/string-parse-i64-result.sloexamples/supported/f64-to-string.sloexamples/supported/f64-to-i32-result.sloexamples/supported/string-parse-f64-result.sloexamples/supported/numeric-struct-fields.sloexamples/supported/f64-to-i64-result.sloexamples/supported/string-parse-bool-result.slo(module name)- top-level
(struct Name (field i32)...) - top-level
(fn ...) - top-level
(test "name" body... final-expression) - explicit
i32parameters andi32returns, plus direct(option i32)and(result i32 i32)constructor returns - integer literals, parameter references, binary
+, user function calls, legacy compiler/runtime compatibility aliasprint_i32, equality comparison=, ordering comparison<, and final-expression returns - local
i32bindings withletandvar, local references after declaration, and mutable local assignment withset - value-producing
if - first-pass
whileas a non-final sequential body form - first-pass struct construction and immediate field access
- first v1 struct value flow through immutable locals, parameters, returns, calls returning structs, and stored field access
- fixed direct scalar array constructors over
i32,i64,f64, andbool, immutable array locals, and literal checked 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
- first-pass
i32option/result constructors as direct function returns - first v1 option/result value flow through immutable locals, parameters,
calls returning option/result values, and
is_some/is_none/is_ok/is_errtag observation - first v1 trap-based
i32option/result payload extraction withunwrap_some,unwrap_ok, andunwrap_err - v1.4 source-level
matchfor existing(option i32)and(result i32 i32)values, with exhaustive arms, immutable arm-scoped payload bindings, one-or-more expression arm bodies, and common arm result types - exp-10 concrete
(result string i32)with the same narrow result flow, observers, unwraps, andmatchshape used by existing(result i32 i32)support - exp-15 preferred result helper standard names
std.result.is_ok,std.result.is_err,std.result.unwrap_ok, andstd.result.unwrap_errfor only(result i32 i32),(result i64 i32), and(result string i32), plus(result f64 i32)where promoted by exp-28, with legacy unqualified result helpers retained as compatibility syntax - exp-16 user-defined enum variants carrying exactly one
i32payload, qualified unary constructors, immutable arm-local payload bindings in exhaustive enummatch, enum value flow through locals, parameters, returns, calls, tests, andmain, and same-enum tag-plus-payload equality - exp-120 direct struct fields over fixed immutable arrays
(array i32 N),(array i64 N),(array f64 N),(array bool N), and(array string N), with immutable struct flow and checked indexing after field access - exp-121 unary enum payload variants over current known non-recursive struct
types, with one payload per payload variant, one payload type per enum when
payload variants are present, immutable enum flow, and
matchpayload binding exposing existing field access behavior - exp-118 fixed immutable arrays over
string, with positive literal lengths, direct construction, immutable local value flow, parameters, returns, calls returning arrays, and checked indexing withi32expressions only - exp-117 fixed immutable arrays over direct scalar element families
i32,i64,f64, andbool, with positive literal lengths, direct construction, immutable local value flow, parameters, returns, calls returning arrays, and checked indexing withi32expressions only - exp-116 user-defined enum variants carrying exactly one direct
i64,f64,bool, orstringpayload in addition to the existing unaryi32lane, with the same one-binding exhaustivematchshape, immutable value flow, and same-enum tag-plus-payload equality, while keeping one direct payload kind per enum when payload variants are present - exp-18 enum-typed struct fields using the current exp-4 payloadless and
exp-16 unary
i32enum surfaces, with struct construction, immutable struct flow, field access, same-enum equality on field access, and enum match on field access - exp-19 primitive struct fields using direct
booland immutablestringfield types alongside directi32and exp-18 enum fields, with struct construction, immutable struct flow, field access, bool predicate use, string equality, andstd.string.len - exp-112 immutable bool locals using direct immutable
letlocals declared asbool, initialized from already promoted bool expressions, and flowing into existing predicate, return, call, test, andmainpositions - exp-113 mutable scalar locals using direct mutable
varlocals declared asbool,i64, andf64, plus same-typesetreassignment from already promoted scalar expressions - exp-114 mutable composite locals using same-type whole-value
var/setreassignment forstring, current concrete vec families, current concrete option/result families, current known struct values, and current enum values - exp-115 composite struct fields and nested structs using direct struct field declarations over current concrete vec families, current concrete option/result families, and current known non-recursive struct types, alongside the already supported direct scalar, immutable string, and current enum field families
- exp-20 f64 numeric primitive using direct
f64parameters, returns, immutable locals, calls, decimal literals, same-typef64arithmetic and comparison, andstd.io.print_f64 - exp-21 i64 numeric primitive using direct
i64parameters, returns, immutable locals, calls, explicit signed decimali64literal atoms, same-typei64arithmetic and comparison, andstd.io.print_i64 - exp-22 numeric widening conversions using explicit
std.num.i32_to_i64 : (i32) -> i64,std.num.i32_to_f64 : (i32) -> f64, andstd.num.i64_to_f64 : (i64) -> f64calls over the existing numeric primitives - exp-23 checked i64-to-i32 conversion using explicit
std.num.i64_to_i32_result : (i64) -> (result i32 i32), returningokfor signedi32range values anderr 1for out-of-range values - exp-24 integer to string formatting using explicit
std.num.i32_to_string : (i32) -> stringandstd.num.i64_to_string : (i64) -> string, returning decimal signed ASCII text with-only for negative values and no leading+ - exp-25 string parse i64 result using explicit
std.string.parse_i64_result : (string) -> (result i64 i32), returningok valuefor in-range ASCII signed decimali64text anderr 1for parse failure or out-of-range input - exp-26 f64 to string formatting using explicit
std.num.f64_to_string : (f64) -> string, returning finite decimal ASCII text for promoted finitef64values - exp-27 checked f64-to-i32 result conversion using explicit
std.num.f64_to_i32_result : (f64) -> (result i32 i32), returningokvalue only for finite, exactly integral inputs inside the signedi32range anderr 1for non-finite, fractional, or out-of-range input - exp-28 string parse f64 result using explicit
std.string.parse_f64_result : (string) -> (result f64 i32), returningok valuefor complete finite ASCII decimalf64text anderr 1for ordinary parse failure, non-finite text, trailing or leading unsupported characters, or out-of-domain input - exp-29 numeric struct fields using direct immutable
i64and finitef64field types alongside already supported directi32,bool, immutablestring, and current enum fields, with constructors, immutable struct flow, field access, existing same-type numeric arithmetic/comparison, and existing numeric print/format helpers - exp-30 standard library source layout using
std/as the staged source home for standard library modules and examples, including narrow source-authoredstd/math.slohelpers and source wrappers over already promoted compiler-known calls, without automaticstdimports or new compiler-knownstd.*names - exp-31 checked f64-to-i64 result conversion using explicit
std.num.f64_to_i64_result : (f64) -> (result i64 i32), returningokvalue only for finite, exactly integral inputs inside the signedi64range anderr 1for non-finite, fractional, or out-of-range input - exp-32 standard math source helpers in staged
std/math.slo, adding source-authoredi64and finitef64abs,min,max,clamp, andsquarecoverage without new compiler-knownstd.*runtime names - exp-39 standard math extension helpers in staged
std/math.slo, adding source-authoredneg,cube, zero/positive/negative predicates, and inclusivein_rangecoverage fori32,i64, and finitef64without broad math or benchmark-performance claims - exp-33 standard result source helpers in staged
std/result.slo, adding concreteis_err_*andunwrap_err_*wrappers for already promoted concrete result families plusunwrap_or_i32,unwrap_or_i64,unwrap_or_string, andunwrap_or_f64without new compiler-knownstd.*runtime names - exp-34 string parse bool result using explicit
std.string.parse_bool_result : (string) -> (result bool i32), returningok truefor exactlytrue,ok falsefor exactlyfalse, anderr 1for empty input, uppercase/mixed-case text, leading/trailing whitespace, numeric text, or any other text - exp-35 standard result bool source helpers in staged
std/result.slo, addingis_ok_bool,is_err_bool,unwrap_ok_bool,unwrap_err_bool, andunwrap_or_boolfor(result bool i32)without new compiler-knownstd.*runtime names, generic result helpers, or stable ABI/layout claims - exp-36 standard option source helpers in staged
std/option.slo, addingis_some_i32,is_none_i32,unwrap_some_i32, andunwrap_or_i32for(option i32)without new compiler-knownstd.*runtime names, generic option helpers, automaticstdimports/search, or stable ABI/layout claims - exp-37 standard time source facade in staged
std/time.slo, addingmonotonic_msandsleep_ms_zerowrappers over the already released exp-8 time calls without new compiler-knownstd.*runtime names, automaticstdimports/search, wall-clock/calendar/timezone APIs, high-resolution timers, async timers, cancellation, scheduling guarantees, or stable ABI/layout claims - first runtime string slice for immutable source string literals passed
directly to legacy compiler/runtime compatibility alias
print_string, which prints the string plus a newline and returns builtinunit - v1.2 immutable string value flow through
letlocals, parameters, returns, calls returning strings, string equality, string byte length throughstring_len, and top-level tests using string equality - legacy compiler/runtime compatibility alias
print_bool, which printstrueorfalseplus a newline and returns builtinunit - v1.5 standard-runtime alpha names
std.io.print_i32,std.io.print_string,std.io.print_bool, andstd.string.len, with legacyprint_i32,print_string,print_bool, andstring_lenretained as compatibility aliases - exp-8 host time/sleep alpha names
std.time.monotonic_ms: () -> i32andstd.time.sleep_ms: (i32) -> unit, with deterministicsleep_ms 0and only structural/non-negativemonotonic_mschecks in conformance fixtures - lexical
unsafeexpression blocks containing otherwise supported safe body forms, plusUnsafeRequired/UnsupportedUnsafeOperationdiagnostics for raw unsafe operation heads reserved by v1.6:alloc,dealloc,load,store,ptr_add,unchecked_index,reinterpret, andffi_call
Current exp-1 fixture support:
examples/supported/owned-string-concat.sloexamples/formatter/owned-string-concat.slo- compiler-known
std.string.concatwith signature(string, string) -> string, producing immutable runtime-owned strings
Current exp-2 fixture support:
examples/supported/vec-i32.sloexamples/formatter/vec-i32.slo- one concrete growable vector type
(vec i32) - compiler-known
std.vec.i32.empty,std.vec.i32.append,std.vec.i32.len, andstd.vec.i32.index - vector equality with
=
These are current compiler-supported exp-2 fixtures.
Current exp-3 fixture support:
examples/supported/host-io.sloexamples/formatter/host-io.slo- compiler-known
std.io.eprint,std.process.argc,std.process.arg,std.env.get,std.fs.read_text, andstd.fs.write_text - process argument out-of-range and file read failure as exact runtime traps
- missing environment variables as empty strings
- text file write status
0on success and1on host failure
These are current compiler-supported exp-3 fixtures.
Current exp-8 release fixtures:
examples/supported/time-sleep.sloexamples/formatter/time-sleep.slo- compiler-known
std.time.monotonic_ms: () -> i32 - compiler-known
std.time.sleep_ms: (i32) -> unit - non-negative host monotonic elapsed milliseconds with implementation-owned epoch
- deterministic
sleep_ms 0 - no positive-duration timing assertion
These are current compiler-supported exp-8 fixtures aligned by the released exp-14 conformance release.
Current exp-12 release fixtures:
examples/supported/stdin-result.sloexamples/formatter/stdin-result.slo- compiler-known
std.io.read_stdin_result: () -> (result string i32) - remaining stdin text as
ok - ordinary EOF with no bytes as
ok "" - ordinary host/input failure as
err 1 - deterministic-enough test-runner behavior through an implementation-owned
fixed
okstring
These are current compiler-supported exp-12 fixtures.
Current exp-13 release fixtures:
examples/supported/string-parse-i32-result.sloexamples/formatter/string-parse-i32-result.slo- compiler-known
std.string.parse_i32_result: (string) -> (result i32 i32) - entire ASCII decimal signed
i32parsing with optional leading- - success as
(ok i32 i32 value) - ordinary parse failure as
(err i32 i32 1) - structural composition with
std.io.read_stdin_resultwithout assuming a particular stdin payload
These are current compiler-supported exp-13 fixtures.
Current exp-15 released fixtures:
examples/supported/result-helpers.sloexamples/formatter/result-helpers.slo- compiler-known
std.result.is_okandstd.result.is_errfor(result i32 i32)and(result string i32) - compiler-known
std.result.unwrap_okreturningi32for(result i32 i32)andstringfor(result string i32) - compiler-known
std.result.unwrap_errreturningi32for both supported result families - legacy unqualified
is_ok,is_err,unwrap_ok, andunwrap_errremain compatibility syntax where already supported
These are released Slovo-side exp-15 fixtures with matching Glagol gates.
Current exp-10 compiler-supported fixtures:
examples/supported/host-io-result.sloexamples/formatter/host-io-result.slo- concrete
(result string i32)values - compiler-known
std.process.arg_result,std.env.get_result,std.fs.read_text_result, andstd.fs.write_text_result - ordinary host failure as
err 1 - exp-3 calls unchanged
Current exp-11 release fixtures:
examples/supported/random.sloexamples/formatter/random.slo- compiler-known
std.random.i32: () -> i32 - non-negative implementation-owned random
i32values for basic CLI use - exact unavailable trap:
slovo runtime error: random i32 unavailable
Current exp-4 fixture support:
examples/supported/enum-basic.sloexamples/formatter/enum-basic.slo- payloadless
(enum Name VariantA VariantB ...)declarations with at least one variant - zero-argument qualified constructors such as
(Name.VariantA) - enum values through immutable locals, parameters, returns, calls, equality, and top-level tests
- exhaustive payloadless enum
matcharms with common final result types
These are current compiler-supported exp-4 fixtures.
Current exp-16 fixture support:
examples/supported/enum-payload-i32.sloexamples/formatter/enum-payload-i32.slo- enum declarations mixing payloadless variants and unary
i32payload variants - zero-argument constructors for payloadless variants and qualified unary constructors for payload variants
- enum values through immutable locals, parameters, returns, calls, equality,
top-level tests, and
main - exhaustive enum
matcharms with immutable arm-local payload bindings for payload variants - same-enum equality by tag for payloadless variants and by tag plus payload for payload variants
These are released experimental exp-16 fixtures.
Current exp-121 fixture support:
examples/supported/enum-payload-structs.sloexamples/formatter/enum-payload-structs.slo- unary enum payload variants over current known non-recursive struct types
- one payload per payload variant and one payload type per enum when payload variants are present
- qualified constructors, immutable enum locals, parameters, returns, calls,
tests, and
main - exhaustive
matchpayload binding exposing the struct payload for existing field access and checked indexing through array-bearing struct fields
These are released experimental exp-121 fixtures.
Current exp-120 fixture support:
examples/supported/array-struct-fields.sloexamples/formatter/array-struct-fields.slo- direct struct field declarations over fixed immutable arrays with element
families
i32,i64,f64,bool, andstring - struct construction from matching fixed-array expressions
- immutable struct locals, parameters, returns, calls, tests, and
mainfor structs carrying those field types - field access returning the declared fixed-array type for existing checked
indexing with
i32expressions
These are released experimental exp-120 fixtures.
Current exp-118 fixture support:
examples/supported/array-string.sloexamples/formatter/array-string.sloexamples/supported/array-string-value-flow.sloexamples/formatter/array-string-value-flow.slo- fixed immutable arrays over
string - positive literal lengths only, immutable arrays only, and checked indexing
with
i32expressions only - direct constructors, immutable array locals, parameters, returns, calls
returning arrays, top-level tests, and
main
These are released experimental exp-118 fixtures.
Current exp-117 fixture support:
examples/supported/array-direct-scalars.sloexamples/formatter/array-direct-scalars.sloexamples/supported/array-direct-scalars-value-flow.sloexamples/formatter/array-direct-scalars-value-flow.slo- fixed immutable arrays over direct scalar element families
i32,i64,f64, andbool - positive literal lengths only, immutable arrays only, and checked indexing
with
i32expressions only - direct constructors, immutable array locals, parameters, returns, calls
returning arrays, top-level tests, and
main
These are released experimental exp-117 fixtures.
Current exp-116 fixture support:
examples/supported/enum-payload-direct-scalars.sloexamples/formatter/enum-payload-direct-scalars.slo- enum declarations mixing payloadless variants and unary direct
i64,f64,bool, orstringpayload variants - one payload per payload variant, with one direct payload kind per enum when payload variants are present
- zero-argument constructors for payloadless variants and qualified unary constructors for payload variants
- enum values through immutable locals, parameters, returns, calls, equality,
top-level tests, and
main - exhaustive enum
matcharms with one immutable arm-local payload binding for payload variants
These are released experimental exp-116 fixtures.
Released exp-17 project contract fixture:
examples/projects/enum-imports/- export lists may include top-level enum names in project/workspace modules
- import lists may import exported enum names
- imported enum types may be used in function signatures, immutable locals, calls/returns, equality, exhaustive enum matches, and qualified constructors
- the enum surface remains exactly exp-4 payloadless variants plus exp-16
unary
i32payload variants
This is a released experimental exp-17 fixture. It does not claim beta maturity or widen manifests, packages, enum payloads, generics, containers, mutation, printing, ordering, hashing, reflection, or stable ABI/layout.
Current exp-18 fixture support:
examples/supported/enum-struct-fields.sloexamples/formatter/enum-struct-fields.slo- direct struct fields whose types are current user-defined enum names
- struct construction with payloadless and unary
i32enum field values - immutable struct locals, parameters, returns, calls, tests, and
main - field access returning enum values
- same-enum equality and exhaustive enum
matchon field access
This is a released experimental exp-18 fixture. It does not claim beta maturity or widen enum payloads, containers, nested structs, mutation, printing, ordering, hashing, reflection, import behavior, manifest schema, package-manager behavior, or stable ABI/layout.
Current exp-19 fixture support:
examples/supported/primitive-struct-fields.sloexamples/formatter/primitive-struct-fields.slo- direct struct fields whose types are
i32,bool, or immutablestring - struct construction with
i32,bool, and immutablestringfield values - immutable struct locals, parameters, returns, calls, tests, and
main - field access returning primitive values
- bool field access in predicate/test positions
- string field equality and
std.string.lenon field access
This is a released experimental exp-19 fixture. It does not claim beta maturity or widen arrays, vectors, options, results, nested structs, mutation, string ownership/cleanup guarantees, broader string operations, printing, package/import behavior, manifest schema, generics, methods, traits, or stable ABI/layout.
Current exp-115 fixture support:
examples/supported/composite-struct-fields.sloexamples/formatter/composite-struct-fields.slo- direct struct field declarations using current concrete vec families
- direct struct field declarations using current concrete option/result families
- direct struct field declarations using current known non-recursive struct types
- coexistence with the already supported direct
i32,bool, immutablestring,i64, finitef64, and current enum field families - immutable struct locals, parameters, returns, calls, tests, and
mainfor structs carrying those fields - field access returning those composite field values for use with existing
vec indexing, option/result
match, string/number helpers, enummatch, and nested struct helper flow
This is a released experimental exp-115 fixture alignment. It does not claim beta maturity or add arrays as struct fields, field mutation, recursive/cyclic layouts, imports, runtime names, or stable ABI/layout.
Current exp-114 fixture support:
examples/supported/composite-locals.sloexamples/formatter/composite-locals.slo- same-type mutable whole-value
var/setreassignment forstring, current concrete vec families, current concrete option/result families, current known struct values, and current enum values - fixed arrays remain immutable and field/element/payload mutation stays out of scope
This is a released experimental exp-114 fixture alignment. It does not claim beta maturity or add mutable arrays, field mutation, vector element mutation, option/result payload mutation, enum payload mutation, imports, runtime names, or stable ABI/layout.
Current exp-113 fixture support:
examples/supported/local-variables.sloexamples/formatter/local-variables.slo- direct mutable
varlocals declared asbool,i64, andf64 - same-type
setreassignment from already promoted scalar expressions for those declared local types - the fixture pair retains the earlier direct
i32local flow and exp-112 immutableboollocal coverage
This is a released experimental exp-113 fixture alignment. It does not claim
beta maturity or add mutable string locals, vector mutation, option/result
mutation, struct or enum mutation, mixed-type assignment, imports, runtime
names, or stable ABI/layout.
Current exp-20 fixture support:
examples/supported/f64-numeric-primitive.sloexamples/formatter/f64-numeric-primitive.slo- direct
f64function parameters and returns - immutable
letlocals declared asf64 - calls passing and returning
f64 - decimal
f64literals inf64contexts - same-type
f64+,-,*,/,=,<,>,<=, and>= std.io.print_f64- top-level tests and
mainreturningi32
This is a released experimental exp-20 fixture. It does not claim beta
maturity or widen f32, wider/common integer types, char/bytes/decimal,
numeric casts, mixed numeric arithmetic, f64 collections, f64 enum payloads,
f64 struct fields, parsing, random floats, broader math APIs, manifest schema,
or stable ABI/layout.
Current exp-21 fixture support:
examples/supported/i64-numeric-primitive.sloexamples/formatter/i64-numeric-primitive.slo- direct
i64function parameters and returns - immutable
letlocals declared asi64 - calls passing and returning
i64 - explicit signed decimal
i64literal atoms with thei64suffix - same-type
i64+,-,*,/,=,<,>,<=, and>= std.io.print_i64- top-level tests and
mainreturningi32
This is a released experimental exp-21 fixture. It does not claim beta
maturity or widen f32, unsigned integers, narrower integer widths,
char/bytes/decimal, numeric casts, implicit promotion, mixed
i32/i64/f64 arithmetic, i64 collections, i64 enum payloads, i64 struct
fields, parsing, random i64, broader math APIs, manifest schema, or stable
ABI/layout.
Current exp-22 fixture support:
examples/supported/numeric-widening-conversions.sloexamples/formatter/numeric-widening-conversions.slostd.num.i32_to_i64 : (i32) -> i64std.num.i32_to_f64 : (i32) -> f64std.num.i64_to_f64 : (i64) -> f64- converted values feeding same-type arithmetic and comparison
- top-level tests and
mainreturningi32
This is a released experimental alpha exp-22 fixture. It does not claim beta
maturity or add implicit promotion, mixed numeric operators, narrowing or
checked conversions, cast syntax, f32, unsigned or narrower integer
families, numeric parse/format APIs, stable ABI/layout, manifest schema, or
standard-library breadth.
Current exp-23 fixture support:
examples/supported/checked-i64-to-i32-conversion.sloexamples/formatter/checked-i64-to-i32-conversion.slostd.num.i64_to_i32_result : (i64) -> (result i32 i32)okresults for signedi32range valueserr 1results for out-of-range values, without range-failure traps- existing
std.result.*observers and unwraps - top-level tests and
mainreturningi32
This is a released experimental alpha exp-23 fixture. It does not claim beta
maturity or add f64 narrowing, checked cast generics, mixed numeric
operators, std.num.cast, unsigned or narrower integer families, numeric
parse/format APIs, stable ABI/layout, manifest schema, or standard-library
breadth.
Current exp-25 fixture support:
examples/supported/string-parse-i64-result.sloexamples/formatter/string-parse-i64-result.slostd.string.parse_i64_result : (string) -> (result i64 i32)- complete non-empty ASCII signed decimal
i64parsing with optional leading- - success as
ok valueand parse/range failure aserr 1 - existing result observation/extraction helpers over
(result i64 i32) - top-level tests and
mainreturningi32
This is a released experimental alpha exp-25 fixture. It does not claim beta
maturity or add f64 parse, generic parse, leading +, whitespace trimming,
underscores, base/radix prefixes, locale-aware parsing, Unicode digit parsing,
rich parse errors, stable ABI/layout/ownership, manifest schema, or
standard-library breadth.
Current exp-26 fixture support:
examples/supported/f64-to-string.sloexamples/formatter/f64-to-string.slostd.num.f64_to_string : (f64) -> string- finite decimal ASCII text for promoted finite
f64values - existing string equality,
std.string.len, andstd.io.print_string - top-level tests and
mainreturningi32
This is a released experimental alpha exp-26 fixture. It does not claim beta
maturity or add f32, f64 parse, generic format/display/interpolation,
locale/base/radix/grouping/padding/precision controls, stable NaN/infinity
text, implicit conversion, stable ABI/layout/ownership, manifest schema, or
standard-library breadth.
Current exp-27 fixture support:
examples/supported/f64-to-i32-result.sloexamples/formatter/f64-to-i32-result.slostd.num.f64_to_i32_result : (f64) -> (result i32 i32)ok valueonly for finite, exactly integralf64inputs inside the signedi32rangeerr 1for non-finite, fractional, or out-of-range input- existing result observation/extraction helpers over
(result i32 i32) - top-level tests and
mainreturningi32
This is a released experimental alpha exp-27 fixture. It does not claim beta
maturity or add unchecked f64 to i32, casts or cast syntax, generic
cast_checked, f32, unsigned or narrower integer families, f64 parse,
mixed numeric arithmetic, numeric containers, stable ABI/layout/ownership,
manifest schema, or standard-library breadth.
Current exp-28 fixture support:
examples/supported/string-parse-f64-result.sloexamples/formatter/string-parse-f64-result.slostd.string.parse_f64_result : (string) -> (result f64 i32)- complete finite ASCII decimal
f64parsing ok valuefor12.5and-0.25err 1for ordinary parse failure, non-finite text, trailing or leading unsupported characters, or out-of-domain input- existing result observation/extraction helpers over
(result f64 i32) - top-level tests and
mainreturningi32
This is a released experimental alpha exp-28 fixture. It does not claim beta maturity or 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, or standard-library breadth.
Current exp-29 fixture support:
examples/supported/numeric-struct-fields.sloexamples/formatter/numeric-struct-fields.slo- direct immutable struct fields whose field types are exactly
i64orf64 - constructors with
i64and finitef64field initializers - immutable struct local/parameter/return/call flow
- field access returning
i64orf64 - existing same-type numeric arithmetic/comparison after field access
- existing numeric print/format helpers after field access
- top-level tests and
mainreturningi32
This is a released experimental alpha exp-29 fixture. It does not claim beta
maturity or 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, FFI layout
claims, or standard-library breadth.
Current exp-30 source-layout support:
std/README.mdstd/cli.slostd/io.slostd/string.slostd/num.slostd/result.slostd/math.sloexamples/formatter/std-source-layout-alpha.slo- flat current module names inside
std/*.slowhile repo-rootstdimport/search remains deferred - source-authored
std/math.slohelpers:abs_i32,min_i32,max_i32,clamp_i32,square_i32, andsquare_f64
This is a released experimental alpha exp-30 source-layout fixture. It does
not claim beta maturity or add automatic standard-library imports, replacement
of compiler-known std.* calls, new compiler-known std.* operation names,
stable standard-library APIs, manifest schema changes, broad math, generics,
traits, overloads, module/package registry behavior, or stable ABI/layout.
Current exp-31 fixture support:
examples/supported/f64-to-i64-result.sloexamples/formatter/f64-to-i64-result.slostd.num.f64_to_i64_result : (f64) -> (result i64 i32)ok valueonly for finite, exactly integralf64inputs inside the signedi64rangeerr 1for non-finite, fractional, or out-of-range input- formatter-stable conservative out-of-range fixture value
9223372036854776000.0 - existing result observation/extraction helpers over
(result i64 i32) std.num.i64_to_stringover a successfuli64payload- top-level tests and
mainreturningi32
This is a released experimental alpha exp-31 fixture. It does not claim beta
maturity or add unchecked casts, unchecked f64 to i64, cast syntax,
generic cast_checked, f32, unsigned or narrower integer families, mixed
numeric arithmetic, broad math, numeric containers, stable ABI/layout/
ownership, manifest schema changes, or standard-library breadth. Detailed
edge behavior around the f64/i64 limits is implementation-owned Glagol
test coverage.
Current exp-32 source-helper support:
std/math.slo- retained exp-30 helpers:
abs_i32,min_i32,max_i32,clamp_i32,square_i32, andsquare_f64 - added
i64helpers:abs_i64,min_i64,max_i64,clamp_i64, andsquare_i64 - added finite
f64helpers:abs_f64,min_f64,max_f64, andclamp_f64 - ordinary source functions using existing same-type arithmetic/comparison,
if, literals, calls, and explicit signatures
This is a released experimental alpha exp-32 source fixture. It does not
claim beta maturity or add automatic standard-library imports, compiler-loaded
std/ source, new compiler-known std.* operation names, broad math,
trigonometry, sqrt, pow, f32, unsigned or narrower integer families,
generic math, overloads, traits, mixed numeric arithmetic, numeric containers,
stable ABI/layout/ownership, manifest schema changes, or standard-library
breadth.
Current exp-33 source-helper support:
std/result.slo- retained i32 helpers:
is_ok_i32,is_err_i32,unwrap_ok_i32, andunwrap_err_i32 - completed concrete err wrappers:
is_err_i64,unwrap_err_i64,is_err_string,unwrap_err_string,is_err_f64, andunwrap_err_f64 - concrete fallback helpers:
unwrap_or_i32,unwrap_or_i64,unwrap_or_string, andunwrap_or_f64 - ordinary source functions over existing
std.result.is_ok,std.result.is_err,std.result.unwrap_ok,std.result.unwrap_err,if,match, parameters, and explicit signatures
This is a released experimental alpha exp-33 source fixture. It does not
claim beta maturity or add automatic standard-library imports, compiler-loaded
std/ source, new compiler-known std.* operation names, generic
std.result.map, generic std.result.unwrap_or, std.result.and_then,
option helper names, new result payload families, stable ABI/layout/
ownership, manifest schema changes, or standard-library breadth.
Current exp-34 fixture support:
examples/supported/string-parse-bool-result.sloexamples/formatter/string-parse-bool-result.slostd.string.parse_bool_result : (string) -> (result bool i32)- exact complete ASCII lowercase
trueandfalseparsing ok truefortrueok falseforfalseerr 1for empty input, uppercase or mixed-case text, leading or trailing whitespace, numeric text, and any other text- existing result observation/extraction helpers over the returned
(result bool i32)value - top-level tests and
mainreturningi32
This is a released experimental alpha exp-34 fixture. It does not claim beta
maturity or add generic parse APIs, trap-based parse, bool parsing beyond
exact lowercase true/false, string/bytes parse, whitespace trimming,
case-insensitive parsing, locale/Unicode parsing, numeric boolean parsing,
rich parse errors, source-authored std/result.slo bool wrappers, stable
helper ABI/layout/ownership, manifest schema changes, or standard-library
breadth.
Current exp-35 source-helper support:
std/result.slo- retained exp-33 concrete result source helpers
- added
(result bool i32)helpers:is_ok_bool,is_err_bool,unwrap_ok_bool,unwrap_err_bool, andunwrap_or_bool - ordinary source functions over existing compiler-supported
std.result.is_ok,std.result.is_err,std.result.unwrap_ok,std.result.unwrap_err,if, parameters, and explicit signatures - alignment with exp-34 compiler-supported bool parse result fixture flow
This is a released experimental alpha exp-35 source fixture. It does not
claim beta maturity or add automatic standard-library imports,
compiler-loaded std/ source, new compiler-known std.* operation names,
source-authored generic result helpers, generic std.result.map, generic
std.result.unwrap_or, std.result.and_then, option helper names,
source constructors for (result bool i32), general source match over
(result bool i32) beyond compiler-supported fixture flow, stable
ABI/layout/ownership, manifest schema changes, or standard-library breadth.
Current exp-74/exp-109 source-helper support:
std/result.slo- retained exp-33 and exp-35 concrete result source helpers
- concrete source constructors:
ok_i32,err_i32,ok_i64,err_i64,ok_string,err_string,ok_f64,err_f64,ok_bool, anderr_bool - concrete bridge helpers:
ok_or_none_i32,ok_or_none_i64,ok_or_none_string,ok_or_none_f64, andok_or_none_bool - ordinary source functions over existing compiler-supported
ok,err,std.result.is_ok,std.result.unwrap_ok,some,none,if,match, parameters, and explicit signatures
This is the released experimental alpha result helper family through exp-109.
It does not claim beta maturity or add automatic standard-library imports,
compiler-loaded std/ source, new compiler-known std.* operation names,
generic result helpers, broader map/and_then/transpose/flatten
packages, new payload families, stable ABI/layout/ownership, manifest schema
changes, or standard-library breadth.
Current exp-36/exp-75/exp-95/exp-100/exp-102/exp-109 source-helper support:
std/option.slo- concrete
(option i32)helpers:some_i32,none_i32,is_some_i32,is_none_i32,unwrap_some_i32,unwrap_or_i32, andsome_or_err_i32 - concrete
(option i64)helpers:some_i64,none_i64,is_some_i64,is_none_i64,unwrap_some_i64,unwrap_or_i64, andsome_or_err_i64 - concrete
(option f64)helpers:some_f64,none_f64,is_some_f64,is_none_f64,unwrap_some_f64,unwrap_or_f64, andsome_or_err_f64 - concrete
(option bool)helpers:some_bool,none_bool,is_some_bool,is_none_bool,unwrap_some_bool,unwrap_or_bool, andsome_or_err_bool - concrete
(option string)helpers:some_string,none_string,is_some_string,is_none_string,unwrap_some_string,unwrap_or_string, andsome_or_err_string - ordinary source functions over existing compiler-supported
is_some,is_none,unwrap_some,ok,err,if, parameters, and explicit signatures - flat
std/*.slofacade organization, with any futurestd.sloaggregator/reexport layer deferred until import/search semantics exist
This is the released experimental alpha option helper family through exp-109.
It does not
claim beta maturity or add automatic standard-library imports, repo-root
std/ search, compiler-loaded std/ source, new compiler-known std.*
operation names, generic option helpers, option payload families beyond
(option i32), (option i64), (option f64), (option bool), and
(option string), stable ABI/layout/ownership, manifest schema changes, or
standard-library breadth.
Current exp-111 stdlib/source support:
std/io.sloretains the zero-returning and value-returning print wrappers and now also addsread_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, andread_stdin_bool_or- the matching explicit import fixture
examples/projects/std-import-io/now imports the expanded helper list and keeps stdin assertions structural so the runner does not need to provide a specific stdin payload - all new helpers are ordinary source wrappers over the promoted
std.io.read_stdin_result,std.string.parse_*_result, and exp-109std.result.ok_or_none_*
Current exp-110 stdlib/source support:
std/string.sloretainslen,concat, the concreteparse_*_resultwrappers, the zero/custom-fallback helpers, and now also addsparse_i32_option,parse_i64_option,parse_f64_option, andparse_bool_optionstd/env.sloretainsget,get_result,has,get_or, the typed*_resultand fallback helpers, and now also addsget_option,get_i32_option,get_i64_option,get_f64_option, andget_bool_optionstd/fs.sloretains text read/write helpers, the typed*_resultand fallback helpers, and now also addsread_text_option,read_i32_option,read_i64_option,read_f64_option, andread_bool_optionstd/process.sloretainsargc,arg,arg_result,has_arg,arg_or,arg_or_empty, the typed*_resultand fallback helpers, and now also addsarg_option,arg_i32_option,arg_i64_option,arg_f64_option, andarg_bool_optionstd/cli.sloretainsarg_text_result, the typed*_resultand fallback helpers, and now also addsarg_text_option,arg_i32_option,arg_i64_option,arg_f64_option, andarg_bool_option- all new helpers are ordinary source wrappers over existing concrete result
helpers through exp-109
std.result.ok_or_none_* - 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/, andexamples/projects/std-import-cli/now import the expanded helper lists and keep deterministic option/result and fallback coverage
This is the current released exp-111 stdlib/source contract summary, with the immediately previous exp-110 source package still listed above. It does not claim beta maturity or add compiler-known std names, generics, new runtime calls beyond the already promoted stdin-result lane, line/binary/async stdin APIs, vec work, stable ABI/layout/ownership, or optimizer guarantees.
Current exp-125 Slovo-side target:
std/result.slostages concrete(result u32 i32)and(result u64 i32)constructor, observer, unwrap, fallback, and option-bridge helpersstd/option.slostages concrete(option u32)and(option u64)constructor, observer, unwrap, fallback, and result-bridge helpersstd/string.slostagesparse_u32_*andparse_u64_*result/option/ fallback helper lanesstd/num.slostagesu32_to_stringandu64_to_stringstd/io.slo,std/env.slo,std/fs.slo,std/process.slo, andstd/cli.slostage matchingu32/u64helper parity over the concrete family pattern already used fori32,i64,f64,bool, andstring- the matching Slovo fixtures are
u32-numeric-primitive.slo,u64-numeric-primitive.slo,unsigned-integer-to-string.slo,string-parse-u32-result.slo,string-parse-u64-result.slo, and the widenedexamples/projects/std-import-*module fixtures
This is a current Slovo-side contract target only. It does not claim beta
maturity, released compiler support, implicit promotion, mixed
signed/unsigned arithmetic, broader cast families, unsigned widths beyond
u32/u64, or stable ABI/layout/ownership.
Current exp-37 source-facade support:
std/time.slo- narrow time wrappers:
monotonic_msandsleep_ms_zero - ordinary source functions over existing compiler-supported
std.time.monotonic_ms,std.time.sleep_ms, parameters, sequential body forms, and explicit signatures - flat
std/*.slofacade organization, with any futurestd.sloaggregator/reexport layer deferred until import/search semantics exist
This is a released experimental alpha exp-37 source fixture. It does not
claim beta maturity or add automatic standard-library imports, repo-root
std/ search, compiler-loaded std/ source, new compiler-known std.*
operation names, wall-clock/calendar/timezone APIs, high-resolution timers,
async timers, cancellation, scheduling guarantees, stable ABI/layout/ownership,
manifest schema changes, or standard-library breadth.
Current exp-38 source-facade support:
std/random.slostd/env.slostd/fs.slo- narrow host/runtime wrappers for
std.random.i32,std.env.get,std.env.get_result,std.fs.read_text,std.fs.read_text_result,std.fs.write_text, andstd.fs.write_text_result - flat
std/*.slofacade organization, with any futurestd.sloaggregator/reexport layer deferred until import/search semantics exist
This is a released experimental alpha exp-38 source fixture. It does not
claim beta maturity or add automatic standard-library imports, repo-root
std/ search, compiler-loaded std/ source, new compiler-known std.*
operation names, random seed/range/bytes/float/UUID/crypto APIs, environment
mutation/enumeration, rich host error ADTs, binary/directory/streaming/async
filesystem APIs, stable ABI/layout/ownership, manifest schema changes, or
standard-library breadth.
Current exp-39 source-helper support:
std/math.slo- retained exp-32 helpers:
abs,min,max,clamp, andsquarefor the currently stagedi32,i64, and finitef64families - added helpers for each family:
neg,cube,is_zero,is_positive,is_negative, and inclusivein_range - ordinary source functions using existing same-type arithmetic/comparison,
if, literals, calls, and explicit signatures - matching Glagol benchmark scaffold gates for local
math-looptiming comparisons only, with no performance threshold in the language contract
This is a released experimental alpha exp-39 source fixture. It does not
claim beta maturity or add automatic standard-library imports, repo-root
std/ search, compiler-loaded std/ 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 ABI/layout/ownership, manifest schema
changes, or standard-library breadth.
Current exp-40 governance/tooling support:
- project licensing recorded as
MIT OR Apache-2.0 - release naming criteria documented in
.llm/ALPHA_BETA_RELEASE_CRITERIA.md - Glagol benchmark-suite gates aligned for
math-loop,branch-loop,parse-loop,array-index-loop,string-eq-loop,array-struct-field-loop, andenum-struct-payload-loop - Slovo, C, Rust, Python, and Clojure benchmark source slots, with local-only timing comparisons and no release threshold; Common Lisp/SBCL is also part of the current paired benchmark publication surface
This is a released experimental alpha exp-40 governance/tooling fixture. It does not claim beta maturity or add source syntax, type forms, standard-library APIs, optimizer guarantees, benchmark thresholds, cross-machine performance claims, stable ABI/layout/ownership, package registry behavior, or language-surface changes.
Current exp-41 governance/tooling support:
- Glagol benchmark-suite gates include Common Lisp/SBCL beside Clojure as a second Lisp-family comparison target
- benchmark timing is explicitly cold-process local-machine evidence only
- Clojure timings include JVM and Clojure startup; Common Lisp timings include SBCL script startup
- the current published benchmark-suite kernel inventory is
math-loop,branch-loop,parse-loop,array-index-loop,string-eq-loop,array-struct-field-loop, andenum-struct-payload-loop
This is a released experimental alpha exp-41 governance/tooling fixture. It does not claim beta maturity or add source syntax, type forms, standard-library APIs, optimizer guarantees, benchmark thresholds, cross-machine performance claims, stable ABI/layout/ownership, package registry behavior, or language-surface changes.
Current exp-42 governance/tooling support:
- Glagol benchmark-suite gates separate
cold-processandhot-looptiming modes - hot-loop mode uses a larger runtime-supplied loop count and reports total time plus normalized median time for the base loop count
- the paired benchmark-suite kernel inventory now covers arithmetic, branching, parsing, checked fixed-array indexing, exact string equality, direct fixed-array struct-field access, and unary enum payload matching over non-recursive struct payloads
- Slovo language surface remains unchanged; no high-resolution timing API is promoted
This is a released experimental alpha exp-42 governance/tooling fixture. It does not claim beta maturity or add source syntax, type forms, standard-library APIs, high-resolution timing APIs, optimizer guarantees, benchmark thresholds, cross-machine performance claims, stable ABI/layout/ownership, package registry behavior, or language-surface changes.
Current exp-43 documentation/tooling support:
docs/SLOVO_WHITEPAPER.mdrecords the current language state, Lisp-family comparison, local benchmark evidence, and path to1.0.0-beta- generated PDF artifacts publish the whitepaper and language manifest
.llm/skills/slovo-beta-language-design/SKILL.mdrecords the manifest-first beta language-design workflow
This is a released experimental alpha exp-43 documentation/tooling fixture. It does not claim beta maturity or add source syntax, type forms, standard-library APIs, optimizer guarantees, benchmark thresholds, cross-machine performance claims, stable ABI/layout/ownership, package registry behavior, or language-surface changes.
Current exp-44 language/tooling support:
std/math.slocarries its own export list for helper importsexamples/projects/std-import-math/imports(import std.math (...))without a local copiedmath.slo- Glagol resolves explicit project-mode
std.mathimports to the repo-root standard-library source file
This is a released experimental alpha exp-44 source-search fixture. It does
not claim beta maturity or add automatic standard-library imports, broad
standard-library APIs, package registry behavior, workspace/package std
imports, optimizer guarantees, stable ABI/layout/ownership, or a std.slo
aggregator.
Current exp-45 language/tooling support:
std/result.sloandstd/option.slocarry their own export listsexamples/projects/std-import-result/imports(import std.result (...))without a local copiedresult.sloexamples/projects/std-import-option/imports(import std.option (...))without a local copiedoption.slo- Glagol resolves these explicit project-mode imports to the repo-root standard-library source files
This is a released experimental alpha exp-45 source-search fixture. It does
not claim beta maturity or add automatic standard-library imports, generic
result or option helpers, broad standard-library APIs, package registry
behavior, workspace/package std imports, optimizer guarantees, stable
ABI/layout/ownership, or a std.slo aggregator.
Current exp-46 language/tooling support:
examples/workspaces/std-import-option/imports(import std.option (...))from a workspace package without a local copiedoption.slo- Glagol resolves explicit workspace-package
std.<module>imports to the repo-root standard-library source files
This is a released experimental alpha exp-46 source-search fixture. It does
not claim beta maturity or add automatic standard-library imports, workspace
dependency syntax for std, package registry behavior, installed toolchain
stdlib paths, generic option helpers, broad standard-library APIs, optimizer
guarantees, stable ABI/layout/ownership, or a std.slo aggregator.
Current exp-47 language/tooling support:
std/time.slo,std/random.slo,std/env.slo, andstd/fs.slocarry their own export lists for helper importsexamples/projects/std-import-time/imports(import std.time (...))without a local copiedtime.sloexamples/projects/std-import-random/imports(import std.random (...))without a local copiedrandom.sloexamples/projects/std-import-env/imports(import std.env (...))without a local copiedenv.sloexamples/projects/std-import-fs/imports(import std.fs (...))without a local copiedfs.slo
This is a released experimental alpha exp-47 source-search fixture. It does
not claim beta maturity or add automatic standard-library imports, installed
toolchain stdlib paths, broad host APIs, optimizer guarantees, stable
ABI/layout/ownership, package registry behavior, or a std.slo aggregator.
Current exp-48 language/tooling support:
std/string.sloandstd/num.slocarry their own export lists for helper importsexamples/projects/std-import-string/imports(import std.string (...))without a local copiedstring.sloexamples/projects/std-import-num/imports(import std.num (...))without a local copiednum.slo
This is a released experimental alpha exp-48 source-search fixture. It does
not claim beta maturity or add automatic standard-library imports, installed
toolchain stdlib paths, generic parse/format APIs, broad numeric casts,
optimizer guarantees, stable ABI/layout/ownership, package registry behavior,
or a std.slo aggregator.
Current exp-49 language/tooling support:
std/io.slocarries its own export list for helper importsexamples/projects/std-import-io/imports(import std.io (...))without a local copiedio.slo
This is a released experimental alpha exp-49 source-search fixture. It does
not claim beta maturity or add automatic standard-library imports, installed
toolchain stdlib paths, broad IO APIs, formatted output APIs, optimizer
guarantees, stable ABI/layout/ownership, package registry behavior, or a
std.slo aggregator.
Current exp-50 language/tooling support:
- explicit standard-source imports may discover staged
std/*.slomodules from installedshare/slovo/stdtoolchain layouts - no new
std/*.slomodule, helper, or compiler-known runtime name is added
This is a released experimental alpha exp-50 discovery fixture. It does not
claim beta maturity or add automatic standard-library imports, package
registry behavior, lockfiles, package std dependencies, stable install layout
guarantees, optimizer guarantees, stable ABI/layout/ownership, or a
std.slo aggregator.
Current exp-51 language/tooling support:
SLOVO_STD_PATHmay name an ordered OS path list of standard-library roots- the first root containing the requested module file wins
This is a released experimental alpha exp-51 discovery fixture. It does not
claim beta maturity or add automatic standard-library imports, package
registry behavior, lockfiles, semantic version solving, stable package
manager behavior, optimizer guarantees, stable ABI/layout/ownership, or a
std.slo aggregator.
Current exp-52 language/tooling support:
std/process.slocarries its own export list for helper importsexamples/projects/std-import-process/imports(import std.process (...))without a local copiedprocess.slo
This is a released experimental alpha exp-52 source-search fixture. It does
not claim beta maturity or add automatic standard-library imports, package
registry behavior, process spawning, exit/status control, current-directory
APIs, signal handling, optimizer guarantees, stable ABI/layout/ownership, or a
std.slo aggregator.
Current exp-53 language/tooling support:
std/cli.slocarries its own export list for helper importsstd/cli.sloimportsstd.processandstd.stringas ordinary standard source modulesexamples/projects/std-import-cli/imports(import std.cli (...))without a local copiedcli.slo
This is a released experimental alpha exp-53 source-search fixture. It does
not claim beta maturity or add automatic standard-library imports, package
registry behavior, shell parsing, option/flag parsing, subcommands,
environment-backed configuration, optimizer guarantees, stable
ABI/layout/ownership, or a std.slo aggregator.
Current exp-54 language/tooling support:
std/cli.sloaddsarg_i64_resultandarg_i64_or_zerostd/cli.sloaddsarg_f64_result,arg_f64_or_zero,arg_bool_result, andarg_bool_or_falseexamples/projects/std-import-cli/imports the expanded helper list and keeps deterministic tests on the currently source-supported result families
This is a released experimental alpha exp-54 source-facade fixture. It does
not claim beta maturity or add automatic standard-library imports, package
registry behavior, shell parsing, option/flag parsing, subcommands,
environment-backed configuration, optimizer guarantees, stable
ABI/layout/ownership, or a std.slo aggregator.
Current exp-101 stdlib/source support:
std/vec_string.slonow stages the concrete(vec string)facade through the exp-99 baseline plus the exp-101 option-query and transform package- the baseline direct wrappers remain
empty,append,len, andat - the baseline builder helpers remain
singleton,append2,append3,pair, andtriple - the baseline query helpers remain
is_empty,index_or,first_or, andlast_or - the new option-query helpers are
index_option,first_option,last_option,index_of_option, andlast_index_of_option - the new transform helpers are
concat,take,drop,reverse, andsubvec - the simple real-program helpers remain
containsandcount_of - the helper lane stays source-authored, recursive, and immutable over only
std.vec.string.empty,std.vec.string.append,std.vec.string.len, andstd.vec.string.index - the explicit project fixture
examples/projects/std-import-vec_string/now exercises deterministic baseline, option-query, transform, subvec, and real-program coverage
This is the current released exp-101 stdlib/source contract. It does not claim beta maturity or add compiler-known std names, generics, vec edit helpers, prefix/suffix helpers, nested vecs, mutating/capacity APIs, stable ABI/layout/ownership, or optimizer guarantees.
Current exp-108 stdlib/source support:
std/vec_string.sloretains the exp-99 baseline and exp-101 option-query plus transform surfaces, exp-107 edit helpers, and now also shipsstarts_with,without_prefix,ends_with, andwithout_suffixstd/vec_f64.sloretains the exp-103 baseline, exp-105 transform, and exp-106 option-query surfaces, exp-107 edit helpers, and now also ships the same four prefix/suffix helpersstd/vec_bool.sloretains the exp-104 baseline, exp-105 transform, and exp-106 option-query surfaces, exp-107 edit helpers, and now also ships the same four prefix/suffix helpers- all three helper lanes stay source-authored, recursive, and immutable over only their existing four runtime calls per family plus already promoted concrete option families where earlier helpers need them
- the explicit project fixtures
examples/projects/std-import-vec_string/,examples/projects/std-import-vec_f64/, andexamples/projects/std-import-vec_bool/now freeze deterministic direct, builder, query, option-query, prefix/suffix, transform, subvec, edit, and real-program coverage
This is the current released exp-108 stdlib/source contract. It does not claim beta maturity or add compiler-known std names, generics, sorting, mapping, filtering, nested vecs, mutating/capacity APIs, stable ABI/layout/ownership, or optimizer guarantees.
Current exp-93 stdlib/source support:
std/vec_i32.sloretains the exp-76 direct, builder, query, option-query, simple real-program, transform, generated constructor, range, replace, remove, insert, subvec, remove-range, replace-range, insert-range, starts-with, ends-with, without-suffix, and without-prefix helper surfacestd/vec_i32.sloadds exactly one new public helper,count_ofcount_of ((values (vec i32)) (target i32)) -> i32returns the number of elements invaluesequal totargetcount_of (empty) targetreturns0- if no element equals
target,count_ofreturns0 - repeated matches are counted exactly
- the helper leaves both source vectors unchanged
- the implementation is an ordinary source helper over existing
len,at, equality, andwhile examples/projects/std-import-vec_i32/imports the expanded helper list and keeps deterministic empty, repeated-match, single-match, no-match, and unchanged-source tests
This is the current released exp-93 stdlib/source contract. It does not
claim beta maturity or add automatic standard-library imports,
compiler-loaded standard-library source, new compiler-known std.* runtime
names, mutable vec locals, generic collections, slice/view types, vector
payload widening, 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/reserve/shrink, sorting, mapping, filtering,
iterators, optimizer guarantees, or stable ABI/layout/ownership.
Current exp-87 stdlib/source support:
std/vec_i32.sloretains the exp-76 direct, builder, query, option-query, simple real-program, transform, generated constructor, range, replace, remove, insert, subvec, and remove-range helper surfacestd/vec_i32.sloadds exactly one new public helper,insert_rangeinsert_range ((values (vec i32)) (position i32) (inserted (vec i32))) -> (vec i32)inserts all ofinsertedintovaluesat a validposition- if
position < 0orposition > len(values),insert_rangereturnsvaluesunchanged - if
0 <= position < len(values),insert_rangeinserts all ofinsertedbefore the current element atposition - if
position == len(values),insert_rangeappendsinsertedat the end - the helper preserves the order of both vectors and leaves both source vectors unchanged
- the result length is
len(values) + len(inserted)for valid positions - the implementation is an ordinary compositional source helper over existing
take,drop, andconcat examples/projects/std-import-vec_i32/imports the expanded helper list and keeps deterministic middle insertion, append-at-end insertion, negative-position, out-of-range-position, and unchanged-source tests
This is the current released exp-87 stdlib/source contract. It does not claim
beta maturity or add automatic standard-library imports,
compiler-loaded standard-library source, new compiler-known std.* runtime
names, mutable vec locals, generic collections, slice/view types, vector
payload widening, 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/reserve/shrink,
sorting, mapping, filtering, iterators, optimizer guarantees, or stable
ABI/layout/ownership.
Current exp-86 stdlib/source support:
std/vec_i32.sloretains the exp-76 direct, builder, query, option-query, simple real-program, transform, generated constructor, range, replace, remove, insert, and subvec helper surfacestd/vec_i32.sloadds exactly one new public helper,remove_rangeremove_range ((values (vec i32)) (start i32) (end_exclusive i32)) -> (vec i32)removes the half-open range[start, end_exclusive)fromvalues- if
start < 0,end_exclusive <= start, orstart >= len(values),remove_rangereturnsvaluesunchanged - if
end_exclusive >= len(values),remove_rangeremoves the tail fromstart - the helper preserves the order of the remaining elements and leaves the source vector unchanged
- the implementation is an ordinary compositional source helper over existing
take,drop, andconcat examples/projects/std-import-vec_i32/imports the expanded helper list and keeps deterministic middle-range removal, tail removal,end_exclusive <= start, out-of-range-start, negative-start, and unchanged-source tests
This is the current released exp-86 stdlib/source contract. It does not claim
beta maturity or add automatic standard-library imports,
compiler-loaded standard-library source, new compiler-known std.* runtime
names, mutable vec locals, generic collections, slice/view types, vector
payload widening, 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/reserve/shrink, sorting, mapping, filtering,
iterators, optimizer guarantees, or stable ABI/layout/ownership.
Current exp-85 stdlib/source support:
std/vec_i32.sloretains the exp-76 direct, builder, query, option-query, simple real-program, transform, generated constructor, range, replace, remove, and insert helper surfacestd/vec_i32.sloadds exactly one new public helper,subvecsubvec ((values (vec i32)) (start i32) (end_exclusive i32)) -> (vec i32)returns a copied contiguous subvector[start, end_exclusive)- if
start < 0,end_exclusive <= start, orstart >= len(values),subvecreturns(empty) - if
end_exclusive > len(values),subvecreturns the remaining tail fromstart - the helper preserves source order and leaves the source vector unchanged
- the helper is an ordinary copied vec helper, not a slice/view type
- the implementation is an ordinary compositional source helper over existing
takeanddrop examples/projects/std-import-vec_i32/imports the expanded helper list and keeps deterministic middle-range, tail-truncation, empty-range, out-of-range, negative-start, and unchanged-source tests
This is the current released exp-85 stdlib/source contract. It does not claim
beta maturity or add automatic standard-library imports,
compiler-loaded standard-library source, new compiler-known std.* runtime
names, mutable vec locals, generic collections, slice/view types, vector
payload widening, broader copied subvector/window helper families beyond
subvec, public insert/remove/edit families beyond subvec, insert_at,
replace_at, and remove_at, mutating vec APIs, capacity/reserve/shrink,
sorting, mapping, filtering, iterators, optimizer guarantees, or stable
ABI/layout/ownership.
Current exp-84 stdlib/source support:
std/vec_i32.sloretains the exp-76 direct, builder, query, option-query, simple real-program, transform, generated constructor, range, replace, and remove helper surfacestd/vec_i32.sloadds exactly one new public helper,insert_atinsert_at ((values (vec i32)) (position i32) (value i32)) -> (vec i32)returns a new vector for valid insertions while preserving source order- if
0 <= position < len(values),insert_atinsertsvaluebefore the current element atposition - if
position == len(values),insert_atappendsvalueat the end - if the insertion is valid, the result length is
len(values) + 1 - if
position < 0orposition > len(values),insert_atreturnsvaluesunchanged - the helper does not mutate the source vector
- the implementation is an ordinary compositional source helper over existing
append,take,drop, andconcat examples/projects/std-import-vec_i32/imports the expanded helper list and keeps deterministic middle-insert, append-at-end, negative, and out-of-range insertion tests
This is the current released exp-84 stdlib/source contract. It does not claim
beta maturity or add automatic standard-library imports,
compiler-loaded standard-library source, new compiler-known std.* runtime
names, mutable vec locals, generic collections, slice types, vector payload
widening, public insert/remove/edit families beyond insert_at,
replace_at, and remove_at, mutating vec APIs, capacity/reserve/shrink,
sorting, mapping, filtering, iterators, optimizer guarantees, or stable
ABI/layout/ownership.
Current exp-82 stdlib/source support:
std/vec_i32.sloretains the exp-76 direct, builder, query, option-query, simple real-program, transform, generated constructor, and range helper surfacestd/vec_i32.sloadds exactly one new public helper,replace_atreplace_at ((values (vec i32)) (position i32) (replacement i32)) -> (vec i32)returns a new vector with the same length and order asvaluesexcept that the in-rangepositionslot becomesreplacement- if
position < 0orposition >= len(values),replace_atreturnsvaluesunchanged - the helper does not mutate the source vector
- the implementation is an ordinary compositional source helper over existing
append,take,drop, andconcat examples/projects/std-import-vec_i32/imports the expanded helper list and keeps deterministic in-range, negative, and out-of-range replacement tests
This is the current released exp-82 stdlib/source contract. It does not claim
beta maturity or add automatic standard-library imports,
compiler-loaded standard-library source, new compiler-known std.* runtime
names, mutable vec locals, generic collections, slice types, vector payload
widening, public insert/remove/edit families beyond replace_at, mutating
vec APIs, capacity/reserve/shrink, sorting, mapping, filtering, iterators,
optimizer guarantees, or stable ABI/layout/ownership.
Current exp-81 stdlib/source support:
std/vec_i32.sloretains the exp-76 direct, builder, query, option-query, simple real-program, transform, and generated constructor helper surfacestd/vec_i32.sloadds exactly one new public helper,rangerange ((start i32) (end_exclusive i32)) -> (vec i32)produces an ascending half-open sequence fromstartup to but excludingend_exclusive- negative bounds are allowed, and
rangereturns an empty vector whenend_exclusive <= start - generation stays private through an ordinary recursive source helper over
existing
appendandemptyvec facade operations range_from_zeroremains public and may delegate torange 0 countexamples/projects/std-import-vec_i32/imports the expanded helper list and keeps deterministic negative, empty, and positive ascending tests
This is the current released exp-81 stdlib/source contract. It does not claim
beta maturity or add automatic standard-library imports,
compiler-loaded standard-library source, new compiler-known std.* runtime
names, mutable vec locals, generic collections, slice types, vector payload
widening, descending or stepped range variants, inclusive range variants,
edit helpers, mutating vec APIs, capacity/reserve/shrink, sorting, mapping,
filtering, iterators, optimizer guarantees, or stable ABI/layout/ownership.
Current exp-80 stdlib/source support:
std/vec_i32.sloretains the exp-76 direct, builder, query, option-query, simple real-program, and transform helper surfacestd/vec_i32.sloadds generated constructor helpersrepeatandrange_from_zero- the new helpers are ordinary recursive source helpers over existing
appendandemptyvec facade operations repeatreturns an empty vector whencount <= 0range_from_zeroreturns0..countwith an exclusive upper bound and returns an empty vector whencount <= 0examples/projects/std-import-vec_i32/imports the expanded helper list and keeps deterministic explicit standard-source tests
This is a released experimental alpha exp-80 stdlib/source fixture. It does
not claim beta maturity or add automatic standard-library imports,
compiler-loaded standard-library source, new compiler-known std.* runtime
names, mutable vec locals, generic collections, slice types, vector payload
widening, mutating vec APIs, capacity/reserve/shrink, sorting, mapping,
filtering, iterators, optimizer guarantees, or stable ABI/layout/ownership.
Current exp-78 stdlib/source support:
std/cli.slokeeps the exp-72 helper list unchangedstd/cli.slokeepsstd.processandstd.stringas its only direct standard-source dependencies- the Slovo-side contract now explicitly freezes this facade for the sibling Glagol local-source gate
- no source edit to
std/cli.slois required for this release
This is a released experimental alpha exp-78 contract-alignment fixture. It
does not claim beta maturity or add automatic standard-library imports,
compiler-loaded standard-library source, package registry behavior, shell
parsing, option/flag parsing, subcommands, environment-backed configuration,
optimizer guarantees, stable ABI/layout/ownership, or a std.slo
aggregator.
Current exp-55 language/tooling support:
examples/supported/result-f64-bool-match.slo- source constructors for
(result f64 i32)and(result bool i32) - source
matchwithf64andboolok payload bindings andi32err payload bindings std.cliuses this support to propagate missing argument indexes for all typed helper result families
This is a released experimental alpha exp-55 source-flow fixture. It does not claim beta maturity or add generic result types, result payload families beyond the already promoted concrete families, generic result combinators, optimizer guarantees, or stable ABI/layout/ownership.
Current exp-60 stdlib/source support:
std/string.slo- retained
len,concat, and concreteparse_*_resultwrappers - added
parse_i32_or_zero,parse_i64_or_zero,parse_f64_or_zero, andparse_bool_or_false - ordinary source
matchover existing concretei32,i64,f64, andboolparse result families examples/projects/std-import-string/imports the expanded helper list and keeps deterministic tests on both direct parse results and fallback helpers
This is a released experimental alpha exp-60 stdlib/source fixture. It does
not claim beta maturity or add automatic standard-library imports,
compiler-loaded std/ source, generic parse helpers, whitespace trimming,
case-insensitive bool parsing, rich parse errors, optimizer guarantees, or
stable ABI/layout/ownership.
Current exp-61 stdlib/source support:
std/process.slo- retained
argc,arg,arg_result, andhas_arg - added
arg_orandarg_or_empty - ordinary source
matchover the existing(result string i32)process argument family examples/projects/std-import-process/imports the expanded helper list and keeps deterministic tests on both missing-index and present-index flows
This is a released experimental alpha exp-61 stdlib/source fixture. It does
not claim beta maturity or add automatic standard-library imports,
compiler-loaded std/ source, shell parsing, option/flag parsing,
subcommands, process spawning, exit/status control, rich host errors,
optimizer guarantees, or stable ABI/layout/ownership.
Current exp-56 language/stdlib support:
examples/supported/integer-remainder.sloexamples/formatter/integer-remainder.slo%binary operator over same-widthi32andi64operands- formatter/checker/test-runner/LLVM support for integer signed remainder
std/math.slohelpers:rem_i32,is_even_i32,is_odd_i32,rem_i64,is_even_i64, andis_odd_i64- explicit
std.mathimport fixture coverage for the expanded helper list
This is a released experimental alpha exp-56 numeric/stdlib fixture. It does not claim beta maturity or add floating-point remainder, Euclidean modulo, unsigned arithmetic, bit operations, generic math, mixed numeric arithmetic, optimizer guarantees, or stable ABI/layout/ownership.
Current exp-57 language/stdlib support:
examples/supported/integer-bitwise.sloexamples/formatter/integer-bitwise.slobit_and,bit_or, andbit_xorbinary heads over same-widthi32andi64operands- formatter/checker/test-runner/LLVM support for integer bitwise operations
std/math.slohelpers:bit_and_i32,bit_or_i32,bit_xor_i32,bit_and_i64,bit_or_i64, andbit_xor_i64
This is a released experimental alpha exp-57 numeric/stdlib fixture. It does not claim beta maturity or add shifts, bit-not, unsigned arithmetic, bit-width-specific integer families, floating-point bitwise operations, generic math, mixed numeric arithmetic, optimizer guarantees, or stable ABI/layout/ownership.
Current exp-123 documentation/tooling support:
docs/SLOVO_WHITEPAPER.mdrefreshed to the current exp-121 language surface and exp-123 publication baseline- 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, andvec-string-eq-loop - paired same-machine publication tables are widened from seven rows to nine in the controller-owned benchmark refresh pass
- generated PDF artifacts remain published through
scripts/render-doc-pdfs.sh - compatibility
WHITEPAPER.pdfremains mirrored from the canonical docs PDF - explicit release metadata keeps exp-121 as the latest language-surface slice while exp-123 is the current publication baseline
This is a released experimental alpha exp-123 documentation/tooling fixture. It does not claim beta maturity or add source syntax, type forms, standard-library APIs, optimizer guarantees, benchmark thresholds, cross-machine performance claims, stable ABI/layout/ownership, package registry behavior, or language-surface changes.
Current exp-58 language support:
examples/supported/boolean-logic.sloexamples/formatter/boolean-logic.slo(and left right)and(or left right)as short-circuiting boolean forms(not value)as a boolean negation form- lowering through existing
if, so no new LLVM primitive is required
This is a released experimental alpha exp-58 boolean logic fixture. It does not claim beta maturity or add truthiness, variadic boolean operators, pattern guards, macro expansion, optimizer guarantees, or stable ABI/layout/ownership.
Current exp-24 fixture support:
examples/supported/integer-to-string.sloexamples/formatter/integer-to-string.slostd.num.i32_to_string : (i32) -> stringstd.num.i64_to_string : (i64) -> string- decimal signed ASCII strings with
-only for negative values and no leading+ - existing string equality,
std.string.len, andstd.io.print_string - top-level tests and
mainreturningi32
This is a released experimental alpha exp-24 fixture. It does not claim beta
maturity or add f64 formatting, parse APIs, locale/base/radix/grouping or
padding controls, generic format/display traits, implicit conversions, stable
ABI/layout and ownership, manifest schema, or standard-library breadth.
Current exp-5 fixture support:
examples/workspaces/exp-5-local/- one workspace manifest with explicit local members
- two package manifests with package name/version metadata
- one local path dependency
- one package-qualified import
- deterministic local package graph recording in artifact manifests
These are current compiler-supported exp-5 fixtures.
Current compiler-supported exp-6 fixture:
examples/ffi/exp-6-c-add/- top-level imported C function declaration for
c_add i32-only scalar parameters andi32return- lexical
(unsafe ...)required at every imported C call site - safe Slovo wrapper around
(unsafe (c_add 40 2)) - fixture-scoped native C companion source, with no stable ABI/layout promise
These are current compiler-supported exp-6 fixtures after matching Slovo and Glagol exp-6 gates.
v1 scope-freeze decisions:
- struct field/value mutation remains deferred beyond v1 unless explicitly promoted later
- option/result mapping, equality, printing, payloads and extraction beyond
the explicitly promoted
(result i32 i32),(result string i32), and(result i64 i32)concrete slices, nesting, containers, generic payloads, payload ADTs, and user-catchable exceptions remain deferred unless explicitly promoted later - unit printing is unsupported in v1.2;
print_unitremains deferred unitremains an internal builtin result type for supported unit-producing body forms; user-declared or storedunitvalues remain unsupported- standard-runtime printing beyond v1.5
std.io.print_i32,std.io.print_string, andstd.io.print_bool, exp-20std.io.print_f64, and exp-21std.io.print_i64remains deferred std.io.print_unit, host IO beyond the exp-3 slice, exp-10*_resultslice, and exp-12 stdin-result slice, parsing beyond exp-13std.string.parse_i32_result, exp-25std.string.parse_i64_result, and exp-28std.string.parse_f64_result, plus exp-34 exact lowercasestd.string.parse_bool_result, time, randomness beyond exp-11, user-visible allocation, integer formatting beyond exp-24, f64 formatting beyond exp-26 finite text, locale/base/radix/grouping/padding formatting controls, user-defined standard modules, overloading, generic APIs, Unicode length or digit semantics, and ABI/layout promises remain deferred- lexical
unsaferemains the only accepted unsafe boundary; v1.6 reserves raw unsafe operation heads for gating diagnostics, but pointer types, allocation, deallocation, load, store, pointer arithmetic, reinterpretation, unchecked indexing, raw memory execution, and FFI remain deferred - stable ABI and stable layout promises remain deferred; v1.6 keeps memory direction staged toward safe values by default, future affine ownership, and explicit unsafe regions
v1.1 tooling release decisions:
- v1.1 is a tooling release over v1 semantics, not a source language release.
- The canonical v1.1 commands are
glagol check <file.slo>,glagol fmt <file.slo>,glagol test <file.slo>, andglagol build <file.slo> -o <binary>. - v1.1 assumes
slovo.diagnosticversion1,slovo.artifact-manifestversion1, JSON diagnostics on request, artifact manifests on request, a hosted native build path through LLVM IR, Glagol runtime C, and Clang, and the stable exit-code table from.llm/V1_1_TOOLCHAIN_PRODUCTIZATION.md. - Compatibility aliases may remain only as Glagol-side aliases that route through the canonical command behavior; Slovo docs teach the canonical commands.
- Project mode, package management, multi-file modules, write-in-place formatting, test filtering, build profiles, cross-compilation, stable ABI, object/library/header output, FFI, LSP, SARIF, and daemon protocols stay deferred.
v1.2 practical runtime values release decisions:
- v1.2 is a conservative source-language release over the v1.1 toolchain contract.
- The precise Slovo-side contract is
.llm/V1_2_PRACTICAL_RUNTIME_VALUES.md. - Runtime strings still originate only from immutable compiler-emitted source literals and propagation of those values; v1.2 adds no allocation, ownership, deallocation, stable ABI, or FFI promise.
- String concatenation stays deferred in v1.2 because it requires allocation,
ownership, lifetime, and deallocation semantics; exp-1 later stages only the
narrow
std.string.concatcontract. - Runtime trap messages are stable for array bounds and option/result unwrap
failures, are written to stderr with a trailing newline, and exit the process
with code
1. - v1.2 preserves v1.1 single-file CLI/toolchain assumptions and does not add project mode, imports, packages, or multi-file modules.
v1.3 project mode and modules release decisions:
- v1.3 is a conservative project-mode release over the v1.2 language and toolchain contract.
- The precise Slovo-side contract is
.llm/V1_3_PROJECT_MODE_AND_MODULES.md. - Project mode is selected only when
glagol check,glagol test, orglagol buildreceives a project root containingslovo.tomlor theslovo.tomlfile itself. - Passing one
.slofile keeps the v1.2 single-file behavior unchanged. slovo.tomluses a minimal[project]schema with requiredname, optionalsource_rootdefaulting tosrc, and optionalentrydefaulting tomain; the detailed.llmcontract is normative for identifier, unknown-key, and path-boundary validation.- v1.3 project modules are flat local
.slofiles directly under the source root; each file stem must match its(module name ...)declaration. - Imports are explicit local imports of exported names only; there are no packages, dependencies, registries, version solving, workspaces, aliases, glob imports, qualified names, or re-exports.
- Only top-level
fnandstructdeclarations listed in a module export list are importable. - Duplicate-name, missing-import, import-cycle, ambiguous-name, and visibility failures are required structured diagnostics with multi-file source spans.
AmbiguousNamemeans the same unqualified name was imported from different modules; duplicate names within one import list remainDuplicateName.- Module discovery, graph validation, test execution, diagnostics, and artifact manifests use deterministic ordering.
v1.4 core language expansion release decisions:
- v1.4 is a conservative source-language release over the v1.3 project-mode and v1.2 runtime-values contracts.
- The precise Slovo-side contract is
.llm/V1_4_CORE_LANGUAGE_EXPANSION.md. - v1.4 promotes source-level
matchonly for existing(option i32),(option i64), and(result i32 i32)values. - Option matches require exactly
someandnone; result matches require exactlyokanderr. - Payload bindings for
some,ok, anderrare immutable and scoped only to the selected arm. - Match arm bodies may contain one or more expressions; the final expression is the arm value.
- The match expression type is the common arm result type. Mismatches are structured diagnostics.
- Existing tag observers and
unwrap_*forms remain supported, but new option/result payload examples prefermatch. - v1.4 does not promote user-defined enums/ADTs, generic payloads, mutation,
vectors,
i64, general block expressions, pattern guards, wildcard/rest patterns, destructuring, standard-library error conventions, ownership, or layout/ABI promises.
v1.5 standard library alpha release decisions:
- v1.5 is a conservative standard-runtime naming release over the v1.4 contract.
- The precise Slovo-side contract is
.llm/V1_5_STANDARD_LIBRARY_ALPHA.md. - v1.5 promotes only
std.io.print_i32,std.io.print_string,std.io.print_bool, andstd.string.len. - These names are compiler-known source-level standard-runtime names, not user modules, imports, package dependencies, foreign functions, or stable C ABI symbols.
std.io.print_i32accepts exactly onei32, returns builtinunit, and keeps legacyprint_i32stdout behavior.std.io.print_stringaccepts exactly onestring, returns builtinunit, and keeps legacyprint_stringstdout behavior and string-literal constraints.std.io.print_boolaccepts exactly onebool, returns builtinunit, and keeps legacyprint_boolstdout behavior.std.string.lenaccepts exactly onestring, returnsi32, and keeps legacystring_lendecoded-byte count semantics.- Legacy
print_i32,print_string,print_bool, andstring_lenremain compatibility aliases, but new examples preferstd.*names. - Promoted
std.*names are reserved from user function/export shadowing. - Unknown or unpromoted
std.*calls use structured diagnostics; the suggested diagnostic code isUnsupportedStandardLibraryCall. - Arity and type mismatches for promoted
std.*calls use existing arity/type diagnostics where applicable. - v1.5 does not promote
std.io.print_unit, file IO, environment variables, process arguments, time, vectors/collections, allocation, user-defined standard modules, imports/packages, overloading, generic APIs, Unicode length semantics, or ABI/layout promises.
v1.6 memory and unsafe design slice release decisions:
- v1.6 was released 2026-05-17.
- The precise Slovo-side contract is
.llm/V1_6_MEMORY_UNSAFE_SLICE.md. - v1.6 promotes a reservation and gating contract, not raw-memory execution.
- Lexical
(unsafe ...)remains the only unsafe boundary. alloc,dealloc,load,store,ptr_add,unchecked_index,reinterpret, andffi_callare compiler-known reserved unsafe heads.- Safe code using a reserved unsafe head must receive
UnsafeRequiredbefore ordinary call lookup. - Code inside
(unsafe ...)using a reserved unsafe head must receiveUnsupportedUnsafeOperationuntil a future release defines semantics. - User functions, imports, exports, and parameters cannot shadow reserved unsafe heads.
- Memory direction remains staged: safe values by default, future affine ownership, and explicit unsafe regions.
- v1.6 does not promote pointer types, allocation/free, load/store, pointer arithmetic, unchecked indexing, raw reinterpretation, FFI, stable ABI, or stable layout.
v1.7 developer experience hardening release decisions:
- v1.7 was released 2026-05-17.
- The precise Slovo-side contract is
.llm/V1_7_DEVELOPER_EXPERIENCE_HARDENING.md. - v1.7 is a tooling-only release over the v1.6 language contract.
glagol new <project-dir> [--name <name>]scaffolds a valid v1.3-style project withslovo.toml,src/main.slo, and a small testable main module.glagol newmust fail without overwriting non-empty directories.- Plain
glagol fmt <file.slo>remains stdout formatting. glagol fmt --check <file-or-project>checks canonical formatting without writing files.glagol fmt --write <file-or-project>writes canonical formatting for one file or all immediate project source modules.glagol doc <file-or-project> -o <dir>generates deterministic Markdown from source structure: modules, imports/exports, structs, functions, and tests.- Documentation generation is not a semantic reflection API and does not claim typed-core, debug metadata, source-map, ABI, layout, or runtime reflection stability.
- A repo script or documented command entry point must run the full local v1 release gate.
- LSP, watch mode, daemon protocols, SARIF, debug adapters, stable debug metadata, DWARF, and stable source-map files remain deferred.
v2.0.0-beta.1 experimental integration/readiness release decisions:
v2.0.0-beta.1is a historical experimental release contract, released 2026-05-17. The pushed tag name is historical and is not a beta maturity claim.- The precise Slovo-side contract is
.llm/V2_0_0_BETA_1_RELEASE_CONTRACT.md. - Experimental readiness is based on v1.7 and adds no new source language syntax or semantics unless already implemented and gate-proven in Glagol.
- Experimental readiness means small real flat local projects can use
glagol new,check,fmt --check,fmt --write,test,build,doc, artifact manifests, JSON diagnostics, and the release-gate script as one integrated workflow. - The experimental language surface is the accumulated v1.1-v1.7 surface:
i32,bool, builtin internalunit, tests, locals,if,while, structs, fixed direct scalar arrays with checked indexing, string value flow, option/result values and exact match slice, standard-runtime alpha, and lexical unsafe with reserved unsafe heads. - Basic IO is only
std.io.print_i32,std.io.print_string,std.io.print_bool, andstd.string.len; file/env/process/time IO remains deferred. - Vectors and growable collections are not experimental readiness requirements. Fixed arrays satisfy the experimental gate because this is an integration milestone; growable collections require allocation, ownership/lifetime, capacity, mutation, diagnostics, lowering, runtime tests, and docs that remain future beta work.
- Stable ABI/layout, FFI, raw-memory execution, LSP, stable debug metadata, stable source-map files, and package registries remain future beta work.
exp-1 owned runtime strings release decisions:
- exp-1 is the first experimental step toward
1.0.0-beta. - The precise Slovo-side contract is
.llm/EXP_1_OWNED_RUNTIME_STRINGS.md. - exp-1 promotes exactly one new source-level operation:
std.string.concat. std.string.concataccepts twostringvalues and returns an immutable runtime-ownedstring.- Existing string equality,
std.string.len,std.io.print_string, string locals, parameters, returns, and calls returningstringapply to literal-backed and runtime-owned strings. - No legacy
string_concatalias is introduced. - Allocation failure traps with
slovo runtime error: string allocation failedand exits with code1. - Runtime-owned string cleanup is compiler/runtime-owned and not source-visible.
- exp-1 keeps mutable strings, string containers, string indexing/slicing, user-visible allocation/deallocation, file IO, packages, generics, growable collections, raw-memory execution, FFI, and stable ABI/layout deferred.
The matching Glagol exp-4 gate has passed. The next planned implementation stage is the next beta-roadmap slice after payloadless user-defined enums.
exp-2 collections alpha release decisions:
- exp-2 is a current experimental compiler-supported contract after matching Glagol exp-2 gates.
- The precise Slovo-side contract is
.llm/EXP_2_COLLECTIONS_ALPHA.md. - exp-2 promotes exactly one concrete growable vector type:
(vec i32). - exp-2 promotes exactly four compiler-known standard-runtime operations:
std.vec.i32.empty,std.vec.i32.append,std.vec.i32.len, andstd.vec.i32.index. std.vec.i32.appendaccepts(vec i32)andi32and returns a new immutable runtime-owned(vec i32)without mutating the input vector.std.vec.i32.lenreturnsi32;std.vec.i32.indexreturnsi32and traps on invalid indices.- Vector equality with
=compares lengths andi32element values in order. - Runtime trap texts are
slovo runtime error: vector allocation failedandslovo runtime error: vector index out of bounds. - exp-2 keeps generic vectors, non-
i32element types, vector mutation, vectorvar/set, vector literals beyond empty/append construction,push, nested vectors, vectors in arrays/structs/options/results, iterators, slices, maps, sets, user-visible deallocation, stable ABI/layout/helper symbols, packages, and IO expansion deferred.
exp-3 standard IO and host environment release decisions:
- exp-3 is a current experimental compiler-supported contract after matching Glagol exp-3 gates.
- The precise Slovo-side contract is
.llm/EXP_3_STANDARD_IO_HOST_ENV.md. - exp-3 promotes exactly six compiler-known standard-runtime operations:
std.io.eprint,std.process.argc,std.process.arg,std.env.get,std.fs.read_text, andstd.fs.write_text. std.io.eprintacceptsstring, writes to stderr without adding a newline, and returns builtinunit.std.process.argcreturnsi32;std.process.argacceptsi32and returnsstring, trapping on out-of-range access withslovo runtime error: process argument index out of bounds.std.env.getacceptsstringand returnsstring; missing variables return the empty string for this stage.std.fs.read_textacceptsstringand returnsstring, trapping on host read failure withslovo runtime error: file read failed.std.fs.write_textaccepts twostringvalues and returns0on success or1on host failure.- exp-3 keeps networking, async IO, binary file APIs, directory traversal,
terminal control, platform abstraction, general host error ADTs,
result string Error, package interaction, stdin full read/line iteration, randomness, time, stable ABI/layout, and stable helper symbols deferred.
exp-4 user data types and polymorphism release decisions:
- exp-4 is a current experimental compiler-supported contract after matching Glagol exp-4 gates.
- The precise Slovo-side contract is
.llm/EXP_4_USER_ADTS_ALPHA.md. - exp-4 promotes only payloadless user-defined enums:
(enum Name VariantA VariantB ...), with at least one variant. - Variant values are constructed only 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
matchsupports exhaustive payloadless variant arms with pattern syntax((Name.VariantA) body...), one-or-more expression bodies, and common final result types. - Runtime/backend representation is compiler-owned; exp-4 promises no stable
layout, discriminant value, ABI, helper symbols, reflection, or conversion
to
i32. - exp-4 keeps payload variants, tuple/record variants, generic enums, generic functions, type aliases, traits/interfaces/protocols, methods, derives, variant payload binding, wildcard/rest patterns, guards, nested patterns, enum values in arrays/options/results/vectors or nested structs beyond exp-18 direct fields, enum mutation, enum printing/ordering/hash, reflection, explicit discriminants, constructors with arguments, unqualified variant constructors, stable ABI/layout, and moving option/result to ordinary standard-library types deferred.
exp-6 C FFI scalar imports alpha release decisions:
- exp-6 is a released experimental contract, not beta maturity.
- The precise Slovo-side contract is
.llm/EXP_6_C_FFI_SCALAR_IMPORTS_ALPHA.md. - exp-6 promotes only top-level imported C function declarations with
i32-only scalar parameters andi32or internalunitreturns. - Calls to imported C functions must occur inside lexical
(unsafe ...). examples/ffi/exp-6-c-add/is the minimal fixture target, with ac_addC companion and a safe Slovo wrapper.- Artifact manifests must record foreign import metadata while marking the ABI/layout as experimental and fixture-scoped.
- exp-6 keeps pointer types, allocation/deallocation, raw unsafe heads execution, ownership/lifetime rules, C exports, headers, libraries, broad linker configuration, and stable ABI/layout deferred.
exp-7 test selection and test-run metadata alpha target decisions:
- exp-7 is a released experimental contract, not beta maturity.
- The precise Slovo-side release contract is
.llm/EXP_7_TEST_SELECTION_ALPHA.md. - exp-7 is narrowed to
glagol test <file.slo|project> --filter <substring>plus legacyglagol --run-tests --filter <substring> <file.slo>while Glagol keeps the legacy route. - Filtering is deterministic, case-sensitive substring matching against test display names.
- Selected tests execute in existing order; non-selected tests are skipped and counted.
- Zero matches is a successful run with explicit discovered, selected, passed, failed, and skipped counts.
- Test-run output and artifact manifests gain additive experimental metadata for total discovered, selected, passed, failed, skipped, and optional filter string.
- exp-7 keeps LSP, debug metadata, source maps, SARIF, watch/daemon protocols, documentation comments, lint categories, benchmarks, and new source language syntax deferred.
exp-8 host time and sleep alpha release decisions:
- exp-8 is a released experimental compiler-supported contract, not beta maturity.
- The precise Slovo-side release contract is
.llm/EXP_8_HOST_TIME_SLEEP_ALPHA.md. - exp-8 narrows the broad concurrency and long-running programs roadmap
category to exactly
std.time.monotonic_ms: () -> i32andstd.time.sleep_ms: (i32) -> unit. std.time.monotonic_msreturns non-negative host monotonic elapsed milliseconds with an implementation-owned epoch.std.time.sleep_msaccepts non-negativei32millisecond durations;0is valid, and negative values reject or trap withslovo runtime error: sleep_ms negative duration.- Test-runner support is deterministic for
sleep_ms 0;monotonic_mssupport is limited to structural tests or a non-negative host value. - The exp-14 conformance-alignment release adds byte-identical Slovo fixtures
examples/supported/time-sleep.sloandexamples/formatter/time-sleep.slofor this already released exp-8 behavior. - Artifact manifests record standard-runtime time usage only if existing manifest patterns support standard-runtime usage metadata; otherwise extra time-specific metadata is deferred.
- exp-8 keeps threads, tasks, channels, async, cancellation, actors, shared memory, data-race freedom, scheduling guarantees, timers, wall-clock/ calendar/timezone APIs, high-resolution timers, signal handling, source syntax, stable ABI/layout, and stable runtime helper symbols deferred.
exp-9 reliability, performance, and ecosystem hardening release decisions:
- exp-9 is a released experimental compiler-supported contract, not beta maturity.
- The precise Slovo-side release contract is
.llm/EXP_9_RELIABILITY_PERFORMANCE_ECOSYSTEM_HARDENING.md. - exp-9 is hardening-only over the released exp-8 baseline. It adds no source language syntax, type-system behavior, standard-runtime names, package features, manifest schema versions, runtime capabilities, stable ABI/layout promises, public performance guarantees, or beta claim.
- Matching Glagol gates must include property/fuzz-style parser, formatter, diagnostic, project graph, and promoted runtime API tests where feasible.
- Matching Glagol gates must include a source-reachable panic audit covering compiler, formatter, diagnostic, project graph, test-runner, backend, artifact-manifest, and runtime API paths.
- Matching Glagol gates must include benchmark fixtures or documented
benchmark smoke, compatibility inventory for promoted experimental
features, and a migration guide from
v2.0.0-beta.1and exp releases. - exp-9 keeps all language, standard-library, package-management, editor protocol, debug/source-map, broad FFI, raw-memory execution, stable benchmark-suite, stable ABI/layout, and beta-maturity expansion deferred.
exp-10 result-based host errors alpha release decisions:
- exp-10 is a released experimental compiler-supported contract, not beta maturity.
- The precise Slovo-side release contract is
.llm/EXP_10_RESULT_BASED_HOST_ERRORS_ALPHA.md. - exp-10 promotes exactly one new concrete result family:
(result string i32). - exp-10 promotes exactly four additive compiler-known standard-runtime
operations:
std.process.arg_result,std.env.get_result,std.fs.read_text_result, andstd.fs.write_text_result. - The only promised ordinary host failure code is
err 1. std.fs.write_text_resultreturnsok 0on success anderr 1on ordinary host write failure.- The existing exp-3 calls remain unchanged.
- Artifact manifests record exp-10 standard-runtime usage only if existing manifest patterns already record standard-runtime usage metadata; otherwise exp-10 adds no manifest schema fields.
- exp-10 keeps general host error ADTs,
result string Error, platform-specific codes, result equality/printing/mapping, broader host API families, stable ABI/layout/helper symbols, and beta maturity deferred.
exp-11 basic randomness alpha release decisions:
- exp-11 is released experimental compiler support and not beta maturity.
- The precise Slovo-side release contract is
.llm/EXP_11_BASIC_RANDOMNESS_ALPHA.md. - exp-11 promotes exactly one compiler-known standard-runtime operation:
std.random.i32: () -> i32. std.random.i32returns a non-negative implementation-owned pseudo-random or host-randomi32suitable only for basic CLI use.- Runtime/host inability to produce a value traps with exactly
slovo runtime error: random i32 unavailable. - Glagol test-runner behavior may use an implementation-owned deterministic non-negative sample or sequence.
- Artifact manifests record exp-11 standard-runtime usage only if existing manifest patterns already record standard-runtime usage metadata; otherwise exp-11 adds no manifest schema fields.
- exp-11 keeps seed APIs, crypto/security promises, bytes APIs, ranges,
bounds, floats, random strings, UUIDs, broad
std.random.*, stable ABI/layout/helper symbols, and beta maturity deferred.
exp-12 standard input result alpha release decisions:
- exp-12 is released experimental compiler support and not beta maturity.
- Release date: 2026-05-18.
- The precise Slovo-side release contract is
.llm/EXP_12_STDIN_RESULT_ALPHA.md. - exp-12 promotes exactly one compiler-known standard-runtime operation:
std.io.read_stdin_result: () -> (result string i32). std.io.read_stdin_resultreads remaining stdin as text, returnsoktext on success, returnsok ""for ordinary EOF with no bytes, and returns(err string i32 1)for ordinary host/input failure.- Glagol test-runner behavior may use an implementation-owned fixed
okstring. - Artifact manifests record exp-12 standard-runtime usage only if existing manifest patterns already record standard-runtime usage metadata; otherwise exp-12 adds no manifest schema fields.
- exp-12 keeps trap stdin, line/prompt/terminal/binary/streaming/async stdin, encoding or Unicode promises beyond existing string bytes, stable ABI/layout/helper symbols, manifest schema changes, and beta maturity deferred.
exp-13 string parse i32 result alpha release decisions:
- exp-13 is released experimental compiler support and not beta maturity.
- Release date: 2026-05-18.
- The precise Slovo-side release contract is
.llm/EXP_13_STRING_PARSE_I32_RESULT_ALPHA.md. - exp-13 promotes exactly one compiler-known standard-runtime operation:
std.string.parse_i32_result: (string) -> (result i32 i32). std.string.parse_i32_resultparses the entire string as ASCII decimal signedi32, with optional leading-and at least one 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). - The only ordinary parse error code promised by exp-13 is
err 1. - Release fixtures are
examples/supported/string-parse-i32-result.sloandexamples/formatter/string-parse-i32-result.slo. - exp-13 keeps trap-based parse, parsing floats/bools/strings/bytes, whitespace/locale/base-prefix/underscore/plus-sign parsing, generic parse, parse error messages/codes, Unicode digit parsing, string indexing/slicing, tokenizer/scanner APIs, stdin line APIs, stable ABI/layout/helper symbols, manifest schema fields, and beta maturity deferred.
exp-14 standard runtime conformance alignment release decisions:
- exp-14 is released experimental conformance alignment and not beta maturity.
- The precise Slovo-side target contract is
.llm/EXP_14_STANDARD_RUNTIME_CONFORMANCE_ALIGNMENT.md. - exp-14 adds
STANDARD_RUNTIME.mdas the promoted compiler-knownstd.*operation catalog through exp-13. - exp-14 adds byte-identical canonical fixtures
examples/supported/time-sleep.sloandexamples/formatter/time-sleep.slofor already released exp-8std.time.monotonic_msandstd.time.sleep_ms 0. - The time/sleep fixtures require only structural/non-negative monotonic-time
behavior and deterministic
sleep_ms 0; they do not assert positive-duration timing. - exp-14 requires the current supported fixture inventory to stay explicit and requires Slovo/Glagol supported and formatter fixtures to stay byte-aligned where matching files exist.
- exp-14 requires a fresh-project workflow covering
new,check,fmt --check,test,doc, andbuildwhere the hosted toolchain exists. - The workflow must exercise existing features together: modules/imports,
tests, strings,
std.string.concat,std.string.parse_i32_result, resultmatch,(vec i32), enummatch, andstd.io.print_i32. - exp-14 release gates still include Slovo and Glagol diff checks,
cargo fmt --check,cargo test, ignored promotion gate, binary smoke, LLVM smoke, and reviewPASS. - exp-14 release gates passed with Slovo and Glagol diff checks,
cargo fmt --check,cargo test, ignored promotion gate, binary smoke, LLVM smoke, focused conformance gate, and reviewPASS. - exp-14 adds no 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-15 result helper standard names alpha decisions:
- The precise Slovo-side target contract is
.llm/EXP_15_RESULT_HELPER_STANDARD_NAMES_ALPHA.md. - exp-15 promotes preferred source-level
std.result.is_ok,std.result.is_err,std.result.unwrap_ok, andstd.result.unwrap_err. - The names are accepted only for
(result i32 i32)and(result string i32). - Legacy unqualified result helpers remain compatibility syntax where already supported.
- Release fixtures are
examples/supported/result-helpers.sloandexamples/formatter/result-helpers.slo. - exp-15 keeps
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, and beta maturity deferred.
exp-17 project enum imports alpha decisions:
- The precise Slovo-side target contract is
.llm/EXP_17_PROJECT_ENUM_IMPORTS_ALPHA.md. - exp-17 promotes explicit export/import of top-level enum names across local project modules and exp-5 workspace package modules.
- Imported enum types can be used in function signatures, immutable locals, calls/returns, same-enum equality, exhaustive enum matches, and qualified constructors.
- The enum surface is exactly exp-4 payloadless variants plus exp-16 unary
i32payload variants. - The project fixture is
examples/projects/enum-imports/. - exp-17 keeps non-
i32enum payloads, multiple payloads, generics, containers, mutation, printing, ordering, hashing, reflection, stable ABI/layout, manifest schema changes, registry/package-manager claims, and beta maturity deferred.
exp-18 enum struct fields alpha decisions:
- The precise Slovo-side target contract is
.llm/EXP_18_ENUM_STRUCT_FIELDS_ALPHA.md. - exp-18 promotes direct struct field declarations whose field types are current user-defined enum type names.
- The enum field surface is exactly exp-4 payloadless variants plus exp-16
unary
i32payload variants. - Struct construction, immutable struct local/parameter/return/call flow,
field access, same-enum equality on field access, enum match on field
access, tests, and
mainare in scope. - Release fixtures are
examples/supported/enum-struct-fields.sloandexamples/formatter/enum-struct-fields.slo. - exp-18 keeps wider enum payloads, arrays/vectors/options/results containing enum values, nested structs, struct mutation, enum mutation, printing, ordering, hashing, reflection, import aliases/globs/re-exports, stable ABI/layout, manifest schema changes, registry/package-manager claims, generics, and beta maturity deferred.
exp-19 primitive struct fields alpha decisions:
- The precise Slovo-side target contract is
.llm/EXP_19_PRIMITIVE_STRUCT_FIELDS_ALPHA.md. - exp-19 promotes direct struct field declarations whose field types are
boolor immutablestring, alongside already supported directi32and exp-18 enum fields. - Struct construction, immutable struct local/parameter/return/call flow,
field access, bool predicate/test use, string equality,
std.string.len, tests, andmainare in scope. - Release fixtures are
examples/supported/primitive-struct-fields.sloandexamples/formatter/primitive-struct-fields.slo. - exp-19 keeps arrays/vectors/options/results, nested structs, struct mutation, string mutation, string ownership/cleanup guarantees beyond existing string behavior, broader string operations, printing beyond existing calls, package/import widening, stable ABI/layout, manifest schema changes, generics, methods, traits, and beta maturity deferred.
exp-20 f64 numeric primitive alpha decisions:
- The precise Slovo-side target contract is
.llm/EXP_20_F64_NUMERIC_PRIMITIVE_ALPHA.md. - exp-20 promotes direct
f64function parameters, returns, immutable locals, calls, and decimal literals inf64contexts. - Same-type
f64+,-,*,/,=,<,>,<=, and>=plusstd.io.print_f64, tests, andmainreturningi32are in scope. - Release fixtures are
examples/supported/f64-numeric-primitive.sloandexamples/formatter/f64-numeric-primitive.slo. - exp-20 keeps
f32, wider/common integer types, char/bytes/decimal, numeric casts, mixedi32/f64arithmetic, f64 arrays/vectors/options/results, f64 enum payloads, f64 struct fields,parse_f64, random floats, stable ABI/layout, manifest schema changes, and beta maturity deferred.
Phase 1: Stabilize The Contract
- Split examples into compiler-supported and design/speculative groups.
- Mark which examples Glagol can currently parse, check, and emit.
- Keep
examples/supported/add.sloaligned with Glagol's executable target. - Add notes to speculative examples saying they are design targets, not current compiler fixtures.
- Keep
SPEC-v0.mdexplicit about unimplemented v0 forms. - Keep README and examples docs explicit about the current supported subset.
- Keep supported examples free of any form outside the current compiler contract.
Phase 2: Make Tooling Real
- Define canonical formatter rules for current supported syntax only.
- Add formatter examples for modules, functions, calls, integer literals,
print_i32, and binary+. - Add formatter examples for comparison and top-level
testonly after those forms become supported or are explicitly documented as design-target fixtures. - Add Slovo formatter fixtures for top-level
testonly after Glagol implements and tests the full strict contract. - Define parsed-tree printer output.
- Define lowering-inspector output from surface AST to checked/core AST.
- Define machine-diagnostic fixture format.
Phase 3: Close Spec Gaps
- Specify exact supported integer-literal range behavior for
i32. - Specify
print_i32as either a temporary compiler intrinsic or a standard-library/runtime binding. - Specify whether
unitcan be used as a user-declared return type in supported fixtures. - Specify when checked-but-not-lowered forms must emit
UnsupportedBackendFeatureinstead of panicking. - Specify top-level
testbehavior enough for Glagol to implement it. - Coordinate remaining Glagol contract fixes and promotion tests before moving any
testexample intoexamples/supported/. - Specify
let,var, andsetchecking and lowering. - Specify
whilechecking and lowering. - Specify checked-expression spans as part of the compiler contract.
- Specify line/column diagnostic ranges in addition to byte spans.
- Specify the strict first-pass
i32struct contract. - Specify the strict first-pass
i32array constructor and literal checked-indexing contract. - Specify the strict first-pass
i32option/result constructor contract.
Phase 4: Grow The Core
- Promote
let,var, andsetinto supported examples and formatter fixtures. - Promote value-producing
ifinto supported examples and formatter fixtures. - Promote first-pass
whileinto supported examples and formatter fixtures. - Promote first-pass
i32struct definitions, construction, and field access into supported examples and formatter fixtures. - Promote first-pass arrays and checked indexing into supported examples and formatter fixtures.
- Promote first-pass
i32option/result constructors into supported examples and formatter fixtures. - Promote lexical
unsafeand unsafe-required diagnostics. - Runtime/string support or explicit unsupported diagnostics.
Phase 5: Close v0
- Promote
SPEC-v0.mdfrom draft sketch to the supported v0 contract. - Keep Glagol's binary CLI as the implementation-facing v0 tool surface.
- Keep direct executable output, package management, broader type flow, raw memory, FFI, and ABI layout promises deferred until separate contracts.
Phase 6: Start v1 Value Flow
- Promote immutable struct locals, struct parameters, struct returns, calls returning structs, and field access through stored struct values.
- Keep struct field/value mutation deferred beyond v1 unless explicitly promoted later.
- Promote option/result value flow and tag observation.
- Promote explicit trap-based
i32option/result payload extraction. - Keep option/result matching, mapping, equality, printing, non-
i32payloads and extraction, nested option/result values, arrays/structs containing option/results, and user-catchable exceptions deferred beyond v1 unless explicitly promoted later. v1.4 later promotes only the narrow(option i32)and(result i32 i32)match slice. - Promote array value flow, immutable array-local expression initialization, and dynamic indexing after layout and bounds behavior are specified.
Phase 7: Start Runtime Strings
- Promote the narrow runtime string slice: immutable source string literals
with ASCII-plus-current-escape semantics, direct
print_stringcalls, and borrowed immutable NUL-terminated compiler-emitted static storage. - Keep mutable string locals, string assignment, string
ordering/comparison beyond equality, string arrays/struct
fields/option-result payloads, slices, concatenation, indexing,
ownership, user-defined runtime bindings, and stable string ABI promises
deferred until separate contracts promote them; exp-1 later stages only
std.string.concat. - Keep standard-runtime printing deferred for this phase; v1.5 later
promotes only
std.io.print_i32,std.io.print_string, andstd.io.print_boolover the existing legacy aliases. - Keep unit printing unsupported; bool printing is promoted separately in
v1.2 through
print_bool. - Keep
unitinternal to supported unit-producing body forms; user-declared or storedunitvalues remain unsupported in v1.
Phase 8: Improve v1 Tooling Contracts
- Define
slovo.diagnosticversion1as the stable v1 machine diagnostic schema. - Define the v1 direction for preserving source spans through LLVM IR emission while deferring stable debug metadata and source-map files.
- Define
slovo.artifact-manifestversion1for compiler outputs and test reports without requiring native executable output. - Define formatter stability guarantees for comments and nested forms:
promoted formatter fixtures are idempotent canonical output, accepted
full-line comment positions are preserved, unsupported comment/layout
positions require structured diagnostics,
if/while/unsafekeep stable multiline shapes, expression calls and constructors stay inline, and v1 makes no width-based reflow promise. - Specify the Stage 3 diagnostics coverage contract: Glagol must keep a golden machine-diagnostic fixture inventory for every current explicitly rejected v1 boundary. This marks the Slovo obligation as specified; it does not claim the Glagol inventory is complete.
- Specify the Stage 3 lowering-inspector coverage contract: Glagol must keep textual inspector golden fixtures for add/canonical, top-level tests, locals, if, while, struct, struct value flow, array, array value flow, option/result, option/result flow, option/result payload, option/result match, string print, string value flow, print bool, unsafe, and formatter comments/stability only where inspector mode applies to source accepted by lowering.
- Keep stable LLVM debug metadata, DWARF emission, and source-map files deferred; lowering-inspector fixtures are textual compiler-tree artifacts, not debug metadata.
- Require future promoted features to add diagnostic and lowering-inspector coverage before promotion.
Phase 9: Productize v1.1 Toolchain
- Freeze v1.1 as a tooling release over the v1 language contract.
- Define canonical single-file commands for
check,fmt,test, andbuild. - Keep v1 source semantics and unsupported boundaries unchanged.
- Define JSON diagnostics as a serialization of
slovo.diagnosticversion1. - Apply
slovo.artifact-manifestversion1manifests to v1.1 command invocations. - Define the stable v1.1 exit-code table.
- Define hosted native build as LLVM IR plus Glagol runtime C plus Clang.
- Document compatibility aliases as secondary Glagol routes, not primary Slovo commands.
- Document v1.1 release gates and explicit deferrals.
Phase 10: Freeze v1.2 Practical Runtime Values
- Promote immutable string locals, string parameters, string returns, calls
returning strings, string equality, string byte length through
string_len, and top-level tests using string equality. - Promote
print_boolwith exacttrue\n/false\noutput. - Keep
print_unitunsupported becauseunitremains an internal builtin result type rather than a user-visible value. - Keep string concatenation deferred until allocation, ownership, lifetime,
and deallocation semantics are specified; exp-1 later specifies the
first narrow
std.string.concatoperation. - Define stable runtime trap messages and process exit code
1for array bounds and option/result unwrap failures. - Preserve v1.1 CLI/toolchain assumptions and keep project mode/modules deferred.
Phase 11: Freeze v1.3 Project Mode And Modules
- Define
slovo.tomlas the v1.3 project manifest. - Define a flat source-root convention with default
src. - Define project mode for
glagol check,glagol test, andglagol build. - Keep single-file command behavior unchanged when the input is a
.slofile. - Define module declarations, explicit local imports, and explicit export lists.
- Limit importable declarations to exported top-level
fnandstructnames. - Require deterministic module ordering, test ordering, and manifest ordering.
- Require multi-file source spans and artifact-manifest project fields.
- Keep packages, dependencies, remote registries, version solving, workspaces, macros, public ABI, cross-package visibility, incremental builds, watch/LSP, path escapes, and generated code deferred.
Phase 12: Freeze v1.4 Core Language Expansion
- Promote source-level
matchfor existing(option i32)and(result i32 i32)values. - Require exhaustive
some/noneandok/errarms. - Define immutable payload bindings scoped to one arm only.
- Define match arm bodies as one-or-more expression bodies whose final expression is the arm value.
- Define match expression type as the common arm result type.
- Name diagnostics for non-option/result subjects, unsupported payload types, missing arms, duplicate arms, malformed patterns, arm type mismatches, binding collisions, and unsupported mutation/container combinations.
- Keep v1.3 project mode and v1.2 runtime values unchanged.
- Keep user-defined enums/ADTs, generic payloads, mutation, vectors,
i64, general block expressions, pattern guards, wildcard/rest patterns, destructuring, standard-library error conventions, ownership, and layout/ABI promises deferred.
Phase 13: Freeze v1.5 Standard Library Alpha
- Promote
std.io.print_i32as the stable source-level standard-runtime name for legacyprint_i32behavior. - Promote
std.io.print_stringas the stable source-level standard-runtime name for legacyprint_stringbehavior. - Promote
std.io.print_boolas the stable source-level standard-runtime name for legacyprint_boolbehavior. - Promote
std.string.lenas the stable source-level standard-runtime name for legacystring_lenbyte-count behavior. - Preserve legacy
print_i32,print_string,print_bool, andstring_lenas compatibility aliases. - Require
UnsupportedStandardLibraryCalldiagnostics for unknown or unpromotedstd.*calls. - Reserve promoted
std.*names from user function/export shadowing. - Keep v1.5 names compiler-known, with no imports, packages, user-defined standard modules, or stable C ABI symbols.
- Keep
std.io.print_unit, file IO, environment variables, process args, time, vectors/collections, allocation, overloading, generic APIs, Unicode length semantics, and ABI/layout promises deferred.
Phase 14: Freeze v1.6 Memory And Unsafe Design Slice
- Keep lexical
(unsafe ...)as the only unsafe boundary. - Reserve
alloc,dealloc,load,store,ptr_add,unchecked_index,reinterpret, andffi_callas compiler-known unsafe heads. - Require
UnsafeRequiredin safe code andUnsupportedUnsafeOperationinside lexical unsafe for reserved unsafe heads. - Reject user functions, imports, exports, and parameters that shadow reserved unsafe heads.
- Keep raw-memory execution, pointer types, allocation/free, load/store, pointer arithmetic, unchecked indexing, reinterpretation, FFI, stable ABI, and stable layout deferred.
Phase 15: Freeze v1.7 Developer Experience Hardening
- Define
glagol new <project-dir> [--name <name>]as a non-overwriting v1.3-style project scaffold command. - Preserve plain
glagol fmt <file.slo>as stdout formatting. - Define
glagol fmt --check <file-or-project>as non-writing canonical formatting verification. - Define
glagol fmt --write <file-or-project>as in-place canonical formatting for one file or immediate project source modules. - Define
glagol doc <file-or-project> -o <dir>as deterministic Markdown documentation generation from source structure. - Keep documentation generation separate from semantic reflection, typed-core APIs, debug metadata, source maps, ABI/layout, and runtime reflection.
- Require a repo script or documented command entry point for the full local v1 release gate.
- Keep LSP, watch mode, daemon protocols, SARIF, debug adapters, stable debug metadata, DWARF, and stable source-map files deferred.
Phase 16: Freeze v2.0.0-beta.1 Experimental Integration Readiness
- Mark
v2.0.0-beta.1as a historical experimental release contract, released 2026-05-17, with future general-purpose beta work as the next planning horizon. - Define the release as an experimental integration/readiness release based on v1.7 rather than a new source-language release.
- Require the small-flat-project workflow through
glagol new,check,fmt --check,fmt --write,test,build,doc, artifact manifests, JSON diagnostics, and the release-gate script. - Freeze the experimental-supported language surface as the accumulated v1.1-v1.7 surface.
- Limit experimental IO to
std.io.print_i32,std.io.print_string,std.io.print_bool, andstd.string.len; keep file/env/process/time IO deferred. - Reconcile older collection roadmap text by making fixed arrays sufficient for experimental readiness and deferring vectors/growable collections until future beta work.
- Keep stable ABI/layout, FFI, raw-memory execution, LSP, stable debug metadata, stable source maps, and package registries out of the experimental release.
Phase 17: Freeze exp-1 Owned Runtime Strings
- Define exp-1 as experimental maturity and not beta.
- Promote only compiler-known
std.string.concatas the first heap-created owned runtime string operation. - Keep one source type,
string, with literal-backed and runtime-owned implementation value kinds hidden from source code. - Require existing string equality,
std.string.len,std.io.print_string, locals, parameters, returns, and calls to work over runtime-owned strings. - Define allocation-failure trap text and exit behavior.
- Keep mutable strings, string containers, indexing, slicing, user-visible allocation/deallocation, file IO, packages, generics, growable collections, FFI, raw memory, and stable ABI/layout deferred.
- Implement and gate the matching Glagol exp-1 behavior before claiming current compiler support.
Phase 18: Freeze exp-2 Collections Alpha
- Define exp-2 as experimental maturity and not beta.
- Specify only one concrete vector type,
(vec i32), as the collections alpha source type. - Specify only compiler-known
std.vec.i32.empty,std.vec.i32.append,std.vec.i32.len, andstd.vec.i32.index. - Require
std.vec.i32.appendto return a new immutable runtime-owned vector without mutating its input. - Require
(vec i32)locals, parameters, returns, calls, top-level tests, and vector equality with=. - Define allocation and index runtime trap texts.
- Keep generic vectors, other element types, vector mutation,
vector
var/set, vector literals beyond empty/append construction,push, nested vectors, vectors in arrays/structs/options/results, iterators, slices, maps, sets, user deallocation, stable ABI/layout/helper symbols, packages, and IO expansion deferred. - Implement and gate the matching Glagol exp-2 behavior before claiming current compiler support.
Phase 19: Freeze exp-3 Standard IO And Host Environment
- Define exp-3 as experimental maturity and not beta.
- Specify only six compiler-known host operations:
std.io.eprint,std.process.argc,std.process.arg,std.env.get,std.fs.read_text, andstd.fs.write_text. - Define
std.process.argout-of-range andstd.fs.read_texthost read failure as exact runtime traps for this stage. - Define missing environment variables as the empty string for this stage.
- Define
std.fs.write_textstatus as0on success and1on host failure for this stage. - Keep networking, async IO, binary file APIs, directory traversal,
terminal control, platform abstraction, general host error ADTs,
result string Error, package interaction, stdin full read/line iteration, randomness/time, and stable ABI/layout/helper symbols deferred. - Implement and gate the matching Glagol exp-3 behavior before claiming current compiler support.
Phase 20: Freeze exp-4 User Data Types And Polymorphism
- Define exp-4 as experimental maturity and not beta.
- Specify only payloadless user-defined enums:
(enum Name VariantA VariantB ...). - Require at least one variant per enum declaration.
- Require zero-argument qualified constructors such as
(Name.VariantA). - Allow enum values through immutable locals, parameters, returns, calls, same-enum equality, and top-level tests.
- Define exhaustive enum
matchwith payloadless qualified variant arms, one-or-more expression bodies, and common final result types. - Keep runtime/backend enum representation compiler-owned, with no stable
layout, discriminant value, ABI, helper-symbol, reflection, or
conversion-to-
i32promise. - Defer payload variants, tuple/record variants, generic enums, generic functions, type aliases, traits/interfaces/protocols, methods, derives, variant payload binding, wildcard/rest patterns, guards, nested patterns, enum values in arrays/options/results/vectors or nested structs beyond exp-18 direct fields, enum mutation, enum printing/ordering/hash, reflection, explicit discriminants, constructors with arguments, unqualified variant constructors, stable ABI/layout, and moving option/result to ordinary standard-library types.
- Implement and gate the matching Glagol exp-4 behavior before claiming current compiler support.
- Freeze exp-20 as F64 Numeric Primitive Alpha: promote only direct
f64value flow, decimalf64literals, same-typef64arithmetic/comparison,std.io.print_f64, byte-identical supported/formatter fixtures, and deferf32, wider/common integer types, char/bytes/decimal, casts, mixed numeric arithmetic, f64 containers, f64 enum payloads, f64 struct fields, parsing, random floats, stable ABI/layout, manifest schema changes, and beta maturity.
Deferred
These are future beta targets, not unresolved experimental release decisions.
- Package/dependency management.
- Build profiles, optimization flags, target triples, and cross-compilation.
- Stable object/library/header output and broad C FFI beyond exp-6 scalar imports alpha.
- Stdin formatting, recursive directory formatting, and dependency/package formatting.
- Project-wide test expansion beyond the existing baseline, event streams, and stable public benchmarks. exp-9 may require benchmark fixtures or documented benchmark smoke only.
- Editor integrations, LSP, SARIF, watch mode, and daemon protocols.
- Macros.
- Generics.
- Concurrency beyond the exp-8 host time/sleep alpha target.
- Advanced ownership or affine resources.
- String concatenation beyond exp-1
std.string.concat, indexing, slicing, mutable string locals, string containers, user-visible string allocation or deallocation, and stable string ABI/layout. - Package manager.
- Full standard library beyond the v1.5 standard-runtime alpha.
- Direct x86/ARM backend.
- Struct field/value mutation.
- Option/result mapping, equality, printing, payloads and extraction beyond the explicitly promoted concrete result slices, nesting, containers, generic payloads, user-defined payload ADTs, and user-catchable exceptions.
- Unit printing and broader standard-runtime printing.
- Host IO beyond exp-3 and the exp-10
*_resultslice, networking, async IO, binary file APIs, directory traversal, terminal control, platform abstraction, general host error ADTs, stdin full read/line iteration, time beyond the exp-8 host time/sleep target, randomness beyond the exp-11 target, vectors/collections beyond the current concrete(vec i32)and(vec i64)slices, user-defined standard modules, overloading, and generic standard-library APIs. - Generic vectors, vector element families beyond the current concrete
i32andi64slices, vector mutation, vector literals beyond empty/append construction, nested vectors, vectors in arrays/structs/options/results, iterators, slices, maps, sets, user deallocation, and stable vector ABI/layout/helper symbols. - User-declared or stored
unitvalues. - Pointer types, raw memory operations, unchecked indexing, and broad FFI beyond exp-6 scalar imports alpha.
- Stable ABI and stable layout promises.