# Slovo Standard Runtime Catalog

Status: standard-runtime catalog through exp-104 over the released exp-14
conformance baseline. The latest Slovo experimental alpha release is
`exp-104`, Standard Vec Bool Baseline Alpha. exp-29, exp-30, exp-32,
exp-33, and exp-35 through exp-93 add no compiler-known `std.*` names;
exp-31 adds exactly one checked numeric conversion name; exp-34 adds exactly
one strict bool parse name; exp-94 adds exactly four concrete `(vec i64)`
vector names; exp-95 through exp-98 add no compiler-known `std.*` names;
exp-99 adds exactly four concrete `(vec string)` vector names; exp-100 and
exp-101 add no new compiler-known `std.*` names; exp-103 adds exactly four
concrete `(vec f64)` vector names; and exp-104 adds exactly four concrete
`(vec bool)` vector names.

This document catalogs promoted compiler-known `std.*` operations only. It
does not add source syntax, runtime APIs, standard library functions, manifest
schema versions, ABI/layout promises, runtime headers/libraries, or beta
maturity.

`1.0.0-beta.2` adds the first runtime resource foundation calls for read-only
text file handles and narrow filesystem status/mutation operations. These calls
use the existing concrete `result` families where host failures need to be
observable. Handles are positive opaque `i32` process-local tokens, not stable
file descriptors or ABI values.

The `1.0.0-beta.6` networking foundation release adds a narrow loopback TCP
runtime family behind the `std.net` source facade. These names are blocking,
result-returning, and loopback-only; they do not define DNS, TLS, UDP, async
IO, non-loopback binding, HTTP frameworks, stable socket ABI/layout, or rich
platform error values.

The `1.0.0-beta.7` serialization/data-interchange foundation release adds
`std.json.quote_string` behind the `std.json` source facade. It provides
deterministic compact JSON string quoting before source-level string scanning,
slicing, maps, or recursive JSON values are available.

The exp-era catalog is closed to names promoted through exp-104. exp-29,
exp-30, exp-32, exp-33, and exp-35 through exp-93 add no new standard-runtime
operation names. exp-32/exp-39/exp-56/exp-57 `std/math.slo` helpers,
exp-33/exp-35 `std/result.slo` helpers, exp-36 `std/option.slo` helpers,
exp-37 `std/time.slo` wrappers, exp-38 `std/random.slo`, `std/env.slo`, and
`std/fs.slo` wrappers, exp-48 `std/string.slo` and `std/num.slo` facades,
exp-49 `std/io.slo` facades, exp-52 `std/process.slo` facades, and exp-53/55
`std/cli.slo` facades are source-authored functions, not compiler-known
`std.*` operations. exp-44 through exp-55 add explicit source-search and
discovery gates for existing source modules; exp-56 through exp-93 add
language/source-helper slices. exp-94 adds `std.vec.i64.empty`,
`std.vec.i64.append`, `std.vec.i64.len`, and `std.vec.i64.index`; exp-95
broadens option language/source-helper support only and adds no new catalog
entries; exp-99 adds `std.vec.string.empty`, `std.vec.string.append`,
`std.vec.string.len`, and `std.vec.string.index`; exp-100 broadens option
language/source-helper support only and adds no new catalog entries; exp-101
broadens vec-string source-helper support only and adds no new catalog
entries; exp-103 adds `std.vec.f64.empty`, `std.vec.f64.append`,
`std.vec.f64.len`, and `std.vec.f64.index`; and exp-104 adds
`std.vec.bool.empty`, `std.vec.bool.append`, `std.vec.bool.len`, and
`std.vec.bool.index`.
Legacy compatibility
aliases such as `print_i32`, `print_string`, `print_bool`, and `string_len`
are not `std.*` names and are therefore excluded from this catalog. Legacy
unqualified result helper names remain compatibility syntax; the preferred
source-level result helper names are the `std.result.*` names cataloged below.

## Catalog

| Operation | Signature | Release | Fixture | Behavior/trap/result note | Manifest note | Deferrals |
| --- | --- | --- | --- | --- | --- | --- |
| `std.io.print_i32` | `(i32) -> unit` | v1.5 | `examples/supported/standard-runtime.slo` | Prints the `i32` using the legacy stdout behavior and returns builtin `unit`. | Uses existing standard-runtime usage recording if present; no schema change. | Unit/composite printing, formatting controls, stable helper ABI/layout. |
| `std.io.print_string` | `(string) -> unit` | v1.5 | `examples/supported/standard-runtime.slo` | Prints the string using the legacy stdout behavior and returns builtin `unit`. | Uses existing standard-runtime usage recording if present; no schema change. | String formatting controls, Unicode policy beyond existing string bytes, stable helper ABI/layout. |
| `std.io.print_bool` | `(bool) -> unit` | v1.5 | `examples/supported/standard-runtime.slo` | Prints `true` or `false` using the legacy stdout behavior and returns builtin `unit`. | Uses existing standard-runtime usage recording if present; no schema change. | Broader value printing and formatting controls. |
| `std.io.print_f64` | `(f64) -> unit` | exp-20 | `examples/supported/f64-numeric-primitive.slo` | Prints one implementation-owned finite `f64` textual representation plus a newline and returns builtin `unit`. | Uses existing standard-runtime usage recording if present; no schema change. | Formatting controls, stable printed digits, NaN/infinity policy, stable helper ABI/layout. |
| `std.io.print_i64` | `(i64) -> unit` | exp-21 | `examples/supported/i64-numeric-primitive.slo` | Prints one signed decimal `i64` textual representation plus a newline and returns builtin `unit`. | Uses existing standard-runtime usage recording if present; no schema change. | Formatting controls, unsigned/narrower integer printing, stable helper ABI/layout. |
| `std.num.i32_to_i64` | `(i32) -> i64` | exp-22 | `examples/supported/numeric-widening-conversions.slo` | Explicitly widens a signed `i32` value to the corresponding signed `i64` value. | Uses existing standard-runtime usage recording if present; no schema change. | Implicit promotion, narrowing conversions beyond exp-23 checked i64-to-i32 result, cast syntax, stable helper ABI/layout. |
| `std.num.i32_to_f64` | `(i32) -> f64` | exp-22 | `examples/supported/numeric-widening-conversions.slo` | Explicitly converts a signed `i32` value to a finite `f64` value representing that integer. | Uses existing standard-runtime usage recording if present; no schema change. | Implicit promotion, rounding-mode controls, generic casts, stable helper ABI/layout. |
| `std.num.i64_to_f64` | `(i64) -> f64` | exp-22 | `examples/supported/numeric-widening-conversions.slo` | Explicitly converts a signed `i64` value to a finite `f64`; exact preservation is not promised for every `i64`. | Uses existing standard-runtime usage recording if present; no schema change. | Implicit promotion, checked lossy f64 conversion APIs, rounding-mode controls, stable helper ABI/layout. |
| `std.num.i64_to_i32_result` | `(i64) -> (result i32 i32)` | exp-23 | `examples/supported/checked-i64-to-i32-conversion.slo` | Returns `ok value` when the signed `i64` input is in the signed `i32` range, otherwise returns `err 1`; range failure does not trap. | Uses existing standard-runtime usage recording if present; no schema change. | Other narrowing conversions beyond exp-27 checked f64-to-i32 result, cast syntax, `std.num.cast`, checked cast generics, stable helper ABI/layout. |
| `std.num.i32_to_string` | `(i32) -> string` | exp-24 | `examples/supported/integer-to-string.slo` | Returns the decimal signed ASCII string for the input `i32`; negative values include `-`, non-negative values have no leading `+`. | Uses existing standard-runtime usage recording if present; no schema change. | f64 formatting beyond exp-26 finite decimal text, parse APIs beyond the released i32/i64/f64/bool result calls, locale/base/radix/grouping/padding controls, generic format/display, implicit conversion, stable helper ABI/layout/ownership. |
| `std.num.i64_to_string` | `(i64) -> string` | exp-24 | `examples/supported/integer-to-string.slo` | Returns the decimal signed ASCII string for the input `i64`; negative values include `-`, non-negative values have no leading `+`. | Uses existing standard-runtime usage recording if present; no schema change. | f64 formatting beyond exp-26 finite decimal text, parse APIs beyond the released i32/i64/f64/bool result calls, locale/base/radix/grouping/padding controls, generic format/display, implicit conversion, stable helper ABI/layout/ownership. |
| `std.num.f64_to_string` | `(f64) -> string` | exp-26 | `examples/supported/f64-to-string.slo` | Returns finite decimal ASCII string text for promoted finite `f64` inputs; fixture values are `0.0`, `3.5`, `-1.5`, and `10.0`. | Uses existing standard-runtime usage recording if present; no schema change. | f32, f64 parse, generic parse/format/display/interpolation, locale/base/radix/grouping/padding/precision controls, stable NaN/infinity text, implicit conversion, stable helper ABI/layout/ownership. |
| `std.num.f64_to_i32_result` | `(f64) -> (result i32 i32)` | exp-27 | `examples/supported/f64-to-i32-result.slo` | Returns `ok value` only when the `f64` input is finite, exactly integral, and in the signed `i32` range; returns `err 1` for non-finite, fractional, or out-of-range input without trapping. | Uses existing standard-runtime usage recording if present; no schema change. | Unchecked f64-to-i32, casts/cast syntax, generic `cast_checked`, f32, unsigned/narrower integer families, f64 parse, mixed numeric arithmetic, numeric containers, stable helper ABI/layout/ownership. |
| `std.num.f64_to_i64_result` | `(f64) -> (result i64 i32)` | exp-31 | `examples/supported/f64-to-i64-result.slo` | Returns `ok value` only when the `f64` input is finite, exactly integral, and in the signed `i64` range; returns `err 1` for non-finite, fractional, or out-of-range input without trapping. Conservative fixture values avoid pinning every `f64`/`i64` edge. | Uses existing standard-runtime usage recording if present; no schema change. | Unchecked casts, unchecked f64-to-i64, cast syntax, generic `cast_checked`, f32, unsigned/narrower integer families, mixed numeric arithmetic, broad math, stable helper ABI/layout/ownership. |
| `std.string.len` | `(string) -> i32` | v1.5 | `examples/supported/standard-runtime.slo` | Returns the existing decoded byte-count length used by legacy `string_len`. | Uses existing standard-runtime usage recording if present; no schema change. | Unicode scalar/grapheme length, slicing, indexing, stable string ABI/layout. |
| `std.string.concat` | `(string, string) -> string` | exp-1 | `examples/supported/owned-string-concat.slo` | Returns an immutable runtime-owned string; allocation failure traps as `slovo runtime error: string allocation failed`. | Uses existing standard-runtime usage recording if present; no concat-specific schema field. | Mutable strings, string containers, user-visible allocation/deallocation, stable string ABI/layout. |
| `std.json.quote_string` | `(string) -> string` | `1.0.0-beta.7` | `examples/projects/std-layout-local-json` | Returns a compact JSON string literal for the input text, including surrounding quotes; it escapes quote, backslash, newline, tab, carriage return, backspace, form feed, and other control bytes as JSON escapes. Allocation failure traps as `slovo runtime error: string allocation failed`. | Uses existing standard-runtime usage recording if present; no schema change. | JSON parsing, recursive JSON values, maps/sets, streaming encoders, schema validation, Unicode normalization, embedded NUL support in the current null-terminated string ABI, stable helper ABI/layout/ownership. |
| `std.vec.i32.empty` | `() -> (vec i32)` | exp-2 | `examples/supported/vec-i32.slo` | Returns an empty immutable runtime-owned `(vec i32)`. | Uses existing standard-runtime usage recording if present; no vector-specific schema field. | Generic vectors, element families beyond current concrete vector families, vector mutation, stable vector ABI/layout. |
| `std.vec.i32.append` | `((vec i32), i32) -> (vec i32)` | exp-2 | `examples/supported/vec-i32.slo` | Returns a new immutable vector containing the input elements and appended value; allocation failure traps with the exp-2 vector allocation message. | Uses existing standard-runtime usage recording if present; no vector-specific schema field. | Mutation, `push`, capacity APIs, user deallocation, stable vector ABI/layout. |
| `std.vec.i32.len` | `((vec i32)) -> i32` | exp-2 | `examples/supported/vec-i32.slo` | Returns vector length as `i32`. | Uses existing standard-runtime usage recording if present; no vector-specific schema field. | Generic length APIs and stable vector ABI/layout. |
| `std.vec.i32.index` | `((vec i32), i32) -> i32` | exp-2 | `examples/supported/vec-i32.slo` | Returns the indexed value; out-of-bounds access traps with the exp-2 vector bounds message. | Uses existing standard-runtime usage recording if present; no vector-specific schema field. | Slices/views, iterators, mutation, stable vector ABI/layout. |
| `std.vec.i64.empty` | `() -> (vec i64)` | exp-94 | `examples/supported/vec-i64.slo` | Returns an empty immutable runtime-owned `(vec i64)`. | Uses existing standard-runtime usage recording if present; no vector-specific schema field. | Generic vectors, element families beyond current concrete vector families, vector mutation, stable vector ABI/layout. |
| `std.vec.i64.append` | `((vec i64), i64) -> (vec i64)` | exp-94 | `examples/supported/vec-i64.slo` | Returns a new immutable vector containing the input elements and appended value; allocation failure traps with the existing vector allocation message. | Uses existing standard-runtime usage recording if present; no vector-specific schema field. | Mutation, `push`, capacity APIs, user deallocation, stable vector ABI/layout. |
| `std.vec.i64.len` | `((vec i64)) -> i32` | exp-94 | `examples/supported/vec-i64.slo` | Returns vector length as `i32`. | Uses existing standard-runtime usage recording if present; no vector-specific schema field. | Generic length APIs and stable vector ABI/layout. |
| `std.vec.i64.index` | `((vec i64), i32) -> i64` | exp-94 | `examples/supported/vec-i64.slo` | Returns the indexed value; out-of-bounds access traps with the existing vector bounds message. | Uses existing standard-runtime usage recording if present; no vector-specific schema field. | Slices/views, iterators, mutation, stable vector ABI/layout. |
| `std.vec.f64.empty` | `() -> (vec f64)` | exp-103 | `examples/supported/vec-f64.slo` | Returns an empty immutable runtime-owned `(vec f64)`. | Uses existing standard-runtime usage recording if present; no vector-specific schema field. | Generic vectors, element families beyond current concrete vector families, vector mutation, stable vector ABI/layout. |
| `std.vec.f64.append` | `((vec f64), f64) -> (vec f64)` | exp-103 | `examples/supported/vec-f64.slo` | Returns a new immutable vector containing the input elements and appended value; allocation failure traps with the existing vector allocation message. | Uses existing standard-runtime usage recording if present; no vector-specific schema field. | Mutation, `push`, capacity APIs, user deallocation, stable vector ABI/layout. |
| `std.vec.f64.len` | `((vec f64)) -> i32` | exp-103 | `examples/supported/vec-f64.slo` | Returns vector length as `i32`. | Uses existing standard-runtime usage recording if present; no vector-specific schema field. | Generic length APIs and stable vector ABI/layout. |
| `std.vec.f64.index` | `((vec f64), i32) -> f64` | exp-103 | `examples/supported/vec-f64.slo` | Returns the indexed value; out-of-bounds access traps with the existing vector bounds message. | Uses existing standard-runtime usage recording if present; no vector-specific schema field. | Slices/views, iterators, mutation, stable vector ABI/layout. |
| `std.vec.bool.empty` | `() -> (vec bool)` | exp-104 | `examples/supported/vec-bool.slo` | Returns an empty immutable runtime-owned `(vec bool)`. | Uses existing standard-runtime usage recording if present; no vector-specific schema field. | Generic vectors, element families beyond current concrete vector families, vector mutation, stable vector ABI/layout. |
| `std.vec.bool.append` | `((vec bool), bool) -> (vec bool)` | exp-104 | `examples/supported/vec-bool.slo` | Returns a new immutable vector containing the input elements and appended value; allocation failure traps with the existing vector allocation message. | Uses existing standard-runtime usage recording if present; no vector-specific schema field. | Mutation, `push`, capacity APIs, user deallocation, stable vector ABI/layout. |
| `std.vec.bool.len` | `((vec bool)) -> i32` | exp-104 | `examples/supported/vec-bool.slo` | Returns vector length as `i32`. | Uses existing standard-runtime usage recording if present; no vector-specific schema field. | Generic length APIs and stable vector ABI/layout. |
| `std.vec.bool.index` | `((vec bool), i32) -> bool` | exp-104 | `examples/supported/vec-bool.slo` | Returns the indexed value; out-of-bounds access traps with the existing vector bounds message. | Uses existing standard-runtime usage recording if present; no vector-specific schema field. | Slices/views, iterators, mutation, stable vector ABI/layout. |
| `std.vec.string.empty` | `() -> (vec string)` | exp-99 | `examples/supported/vec-string.slo` | Returns an empty immutable runtime-owned `(vec string)`. | Uses existing standard-runtime usage recording if present; no vector-specific schema field. | Generic vectors, element families beyond current concrete vector families, vector mutation, stable vector ABI/layout. |
| `std.vec.string.append` | `((vec string), string) -> (vec string)` | exp-99 | `examples/supported/vec-string.slo` | Returns a new immutable vector containing the input elements and appended string; allocation failure traps with the existing vector allocation message. | Uses existing standard-runtime usage recording if present; no vector-specific schema field. | Mutation, `push`, capacity APIs, user deallocation, stable vector ABI/layout. |
| `std.vec.string.len` | `((vec string)) -> i32` | exp-99 | `examples/supported/vec-string.slo` | Returns vector length as `i32`. | Uses existing standard-runtime usage recording if present; no vector-specific schema field. | Generic length APIs and stable vector ABI/layout. |
| `std.vec.string.index` | `((vec string), i32) -> string` | exp-99 | `examples/supported/vec-string.slo` | Returns the indexed value; out-of-bounds access traps with the existing vector bounds message. | Uses existing standard-runtime usage recording if present; no vector-specific schema field. | Slices/views, iterators, mutation, stable vector ABI/layout. |
| `std.io.eprint` | `(string) -> unit` | exp-3 | `examples/supported/host-io.slo` | Writes the string to stderr without appending a newline and returns builtin `unit`. | Uses existing standard-runtime usage recording if present; no host-IO schema bump. | Formatting controls, terminal APIs, async IO, stable helper ABI/layout. |
| `std.process.argc` | `() -> i32` | exp-3 | `examples/supported/host-io.slo` | Returns process argument count as `i32`. | Uses existing standard-runtime usage recording if present; no process-specific schema field. | Rich process APIs, argv encoding guarantees, stable helper ABI/layout. |
| `std.process.arg` | `(i32) -> string` | exp-3 | `examples/supported/host-io.slo` | Returns zero-based process argument; out-of-range access traps as `slovo runtime error: process argument index out of bounds`. | Uses existing standard-runtime usage recording if present; no process-specific schema field. | Result-based errors are separate exp-10 names; rich process APIs remain deferred. |
| `std.env.get` | `(string) -> string` | exp-3 | `examples/supported/host-io.slo` | Returns environment value, or the empty string when missing. | Uses existing standard-runtime usage recording if present; no env-specific schema field. | Result-based errors are separate exp-10 names; env mutation and enumeration remain deferred. |
| `std.fs.read_text` | `(string) -> string` | exp-3 | `examples/supported/host-io.slo` | Returns file text; host read failure traps with the exp-3 file read message. | Uses existing standard-runtime usage recording if present; no fs-specific schema field. | Result-based errors are separate exp-10 names; binary, directory, streaming, async APIs remain deferred. |
| `std.fs.write_text` | `(string, string) -> i32` | exp-3 | `examples/supported/host-io.slo` | Writes text, returning `0` on success and `1` on host failure. | Uses existing standard-runtime usage recording if present; no fs-specific schema field. | Result-based errors are separate exp-10 names; binary, directory, streaming, async APIs remain deferred. |
| `std.time.monotonic_ms` | `() -> i32` | exp-8 | `examples/supported/time-sleep.slo` | Returns non-negative host monotonic elapsed milliseconds with implementation-owned epoch; host unavailability may trap as `slovo runtime error: monotonic time unavailable`. | Uses existing standard-runtime usage recording if present; no time-specific schema field. | Wall-clock/calendar/timezone APIs, high-resolution timers, scheduling guarantees, stable clock ABI/layout. |
| `std.time.sleep_ms` | `(i32) -> unit` | exp-8 | `examples/supported/time-sleep.slo` | Sleeps for a non-negative millisecond duration; `0` is valid. Negative runtime values trap as `slovo runtime error: sleep_ms negative duration`; host sleep failure may trap as `slovo runtime error: sleep failed`. | Uses existing standard-runtime usage recording if present; no time-specific schema field. | Positive-duration conformance timing assertions, async timers, cancellation, scheduling guarantees. |
| `std.process.arg_result` | `(i32) -> (result string i32)` | exp-10 | `examples/supported/host-io-result.slo` | Returns `ok` with argument text when in range, or `err 1` when out of range. | Uses existing standard-runtime usage recording if present; no exp-10-specific schema field. | Rich host error ADTs, platform codes, process API breadth, stable helper ABI/layout. |
| `std.env.get_result` | `(string) -> (result string i32)` | exp-10 | `examples/supported/host-io-result.slo` | Returns `ok` with environment value when present, or `err 1` when missing. | Uses existing standard-runtime usage recording if present; no exp-10-specific schema field. | Rich host error ADTs, env mutation/enumeration, platform codes. |
| `std.fs.read_text_result` | `(string) -> (result string i32)` | exp-10 | `examples/supported/host-io-result.slo` | Returns `ok` with file contents on success, or `err 1` on ordinary host read failure. | Uses existing standard-runtime usage recording if present; no exp-10-specific schema field. | Binary, directory, streaming, async APIs, rich host error ADTs. |
| `std.fs.write_text_result` | `(string, string) -> (result i32 i32)` | exp-10 | `examples/supported/host-io-result.slo` | Returns `ok 0` on success, or `err 1` on ordinary host write failure. | Uses existing standard-runtime usage recording if present; no exp-10-specific schema field. | Binary, directory, streaming, async APIs, rich host error ADTs. |
| `std.fs.exists` | `(string) -> bool` | `1.0.0-beta.2` | `examples/projects/std-layout-local-fs` | Returns `true` when host metadata lookup succeeds for the path, otherwise `false`. | Uses existing standard-runtime usage recording if present; no schema change. | Rich host errors, symlink policy, permissions detail, stable platform metadata model. |
| `std.fs.is_file` | `(string) -> bool` | `1.0.0-beta.2` | `examples/projects/std-layout-local-fs` | Returns `true` when the path exists and host metadata classifies it as a regular file. | Uses existing standard-runtime usage recording if present; no schema change. | Rich metadata, symlink policy, stable platform file-kind model. |
| `std.fs.is_dir` | `(string) -> bool` | `1.0.0-beta.2` | `examples/projects/std-layout-local-fs` | Returns `true` when the path exists and host metadata classifies it as a directory. | Uses existing standard-runtime usage recording if present; no schema change. | Directory handles, enumeration, recursive traversal, symlink policy, stable platform file-kind model. |
| `std.fs.remove_file_result` | `(string) -> (result i32 i32)` | `1.0.0-beta.2` | `examples/projects/std-layout-local-fs` | Removes one file; success returns `ok 0`, while ordinary host failure returns `err 1`. | Uses existing standard-runtime usage recording if present; no schema change. | Recursive removal, directory removal, rich host errors, platform-specific error codes. |
| `std.fs.create_dir_result` | `(string) -> (result i32 i32)` | `1.0.0-beta.2` | `examples/projects/std-layout-local-fs` | Creates one directory; success returns `ok 0`, while existing paths or ordinary host failure return `err 1`. | Uses existing standard-runtime usage recording if present; no schema change. | Recursive creation, permissions/mode policy, directory handles, rich host errors, platform-specific error codes. |
| `std.fs.open_text_read_result` | `(string) -> (result i32 i32)` | `1.0.0-beta.2` | `examples/projects/std-layout-local-fs` | Opens a text file for read-only resource-handle flow; success returns `ok handle` where `handle` is a positive opaque process-local `i32`, and ordinary open or handle-table failure returns `err 1`. | Uses existing standard-runtime usage recording if present; no schema change. | Writable handles, binary IO, directory handles, process handles, sockets, async IO, platform-specific error codes, stable handle ABI/layout. |
| `std.fs.read_open_text_result` | `(i32) -> (result string i32)` | `1.0.0-beta.2` | `examples/projects/std-layout-local-fs` | Reads remaining text from an open read handle; success returns `ok text`, while invalid, closed, or failed reads return `err 1`. | Uses existing standard-runtime usage recording if present; no schema change. | Chunked reads, seek, buffering controls, binary IO, async IO, platform-specific error codes, stable handle ABI/layout. |
| `std.fs.close_result` | `(i32) -> (result i32 i32)` | `1.0.0-beta.2` | `examples/projects/std-layout-local-fs` | Closes an open resource handle; success returns `ok 0`, while invalid, closed, or failed close operations return `err 1`. | Uses existing standard-runtime usage recording if present; no schema change. | Finalizers, destructors, affine ownership, automatic cleanup, stable handle ABI/layout. |
| `std.net.tcp_connect_loopback_result` | `(i32) -> (result i32 i32)` | `1.0.0-beta.6` | `examples/projects/std-layout-local-net` | Connects to a loopback TCP port; success returns `ok handle` where `handle` is a positive opaque process-local `i32`, and ordinary host failure returns `err 1`. | Uses existing standard-runtime usage recording if present; no schema change. | DNS, TLS, UDP, non-loopback connect policy, async IO, timeouts, rich host errors, stable socket ABI/layout. |
| `std.net.tcp_listen_loopback_result` | `(i32) -> (result i32 i32)` | `1.0.0-beta.6` | `examples/projects/std-layout-local-net` | Opens a blocking loopback TCP listener; success returns `ok handle`, and ordinary bind/listen or handle-table failure returns `err 1`. | Uses existing standard-runtime usage recording if present; no schema change. | Non-loopback binding, socket options, backlog policy beyond the implementation minimum, async IO, rich host errors, stable socket ABI/layout. |
| `std.net.tcp_bound_port_result` | `(i32) -> (result i32 i32)` | `1.0.0-beta.6` | `examples/projects/std-layout-local-net` | Returns the bound loopback TCP port for a listener handle as `ok port`; invalid handles or host lookup failure return `err 1`. | Uses existing standard-runtime usage recording if present; no schema change. | Stable handle ABI/layout, address inspection, IPv6 policy, rich host errors. |
| `std.net.tcp_accept_result` | `(i32) -> (result i32 i32)` | `1.0.0-beta.6` | `examples/projects/std-layout-local-net` | Accepts one blocking connection from a listener handle; success returns `ok handle`, and invalid handles or host accept failure return `err 1`. | Uses existing standard-runtime usage recording if present; no schema change. | Async accept, cancellation, readiness polling, peer address APIs, rich host errors, stable socket ABI/layout. |
| `std.net.tcp_read_all_result` | `(i32) -> (result string i32)` | `1.0.0-beta.6` | `examples/projects/std-layout-local-net` | Reads remaining text from a stream handle until EOF; success returns `ok text`, and invalid handles or host read failure return `err 1`. | Uses existing standard-runtime usage recording if present; no schema change. | Chunked reads, binary IO, buffering policy, encodings, async IO, rich host errors, stable socket ABI/layout. |
| `std.net.tcp_write_text_result` | `(i32, string) -> (result i32 i32)` | `1.0.0-beta.6` | `examples/projects/std-layout-local-net` | Writes the complete text to a stream handle; success returns `ok 0`, and invalid handles or host write failure return `err 1`. | Uses existing standard-runtime usage recording if present; no schema change. | Partial-write APIs, binary IO, buffering policy, async IO, rich host errors, stable socket ABI/layout. |
| `std.net.tcp_close_result` | `(i32) -> (result i32 i32)` | `1.0.0-beta.6` | `examples/projects/std-layout-local-net` | Closes a TCP stream or listener handle; success returns `ok 0`, while invalid, already closed, or failed close operations return `err 1`. | Uses existing standard-runtime usage recording if present; no schema change. | Finalizers, destructors, affine ownership, automatic cleanup, stable socket ABI/layout. |
| `std.random.i32` | `() -> i32` | exp-11 | `examples/supported/random.slo` | Returns a non-negative implementation-owned random `i32`; unavailable randomness traps as `slovo runtime error: random i32 unavailable`. | Uses existing standard-runtime usage recording if present; no randomness-specific schema field. | Seed APIs, crypto/security promises, ranges, bytes, floats, UUIDs, stable RNG ABI/layout. |
| `std.io.read_stdin_result` | `() -> (result string i32)` | exp-12 | `examples/supported/stdin-result.slo` | Reads remaining stdin as text; success returns `ok` text, ordinary EOF with no bytes returns `ok ""`, ordinary host/input failure returns `err 1`. | Uses existing standard-runtime usage recording if present; no stdin-specific schema field. | Trap stdin, line APIs, prompts, terminal mode, binary/streaming/async stdin. |
| `std.string.parse_i32_result` | `(string) -> (result i32 i32)` | exp-13 | `examples/supported/string-parse-i32-result.slo` | Parses an entire ASCII decimal signed `i32`; success returns `ok` value, ordinary parse failure returns `err 1`. | Uses existing standard-runtime usage recording if present; no parse-specific schema field. | Trap parse, floats/bools/bytes, trimming, locale/radix/underscore/plus parsing, rich parse errors, Unicode digits, slicing/indexing. |
| `std.string.parse_i64_result` | `(string) -> (result i64 i32)` | exp-25 | `examples/supported/string-parse-i64-result.slo` | Parses an entire non-empty ASCII decimal signed `i64` with optional leading `-`; success returns `ok` value, parse failure or out-of-range returns `err 1` without trapping. | Uses existing standard-runtime usage recording if present; no parse-specific schema field. | Generic parse, leading plus, trimming, locale/radix/base-prefix/underscore parsing, rich parse errors, Unicode digits, stable helper ABI/layout/ownership. |
| `std.string.parse_f64_result` | `(string) -> (result f64 i32)` | exp-28 | `examples/supported/string-parse-f64-result.slo` | Parses complete finite ASCII decimal `f64` text in the narrow `-?digits.digits` shape; success returns `ok` value, ordinary parse failure, non-finite text, unsupported leading/trailing characters, or out-of-domain input returns `err 1` without trapping. | Uses existing standard-runtime usage recording if present; no parse-specific schema field. | Generic parse, trap-based f64 parse, leading `+`, exponent notation, `.5`, `5.`, bool parse beyond exp-34 exact lowercase true/false, string/bytes parse, locale parsing, Unicode digits, underscores, rich parse errors, stable helper ABI/layout/ownership, result genericity, f64 containers. |
| `std.string.parse_bool_result` | `(string) -> (result bool i32)` | exp-34 | `examples/supported/string-parse-bool-result.slo` | Parses exactly complete ASCII lowercase `true` or `false`; success returns `ok true` or `ok false`, and ordinary parse failure returns `err 1` without trapping. | Uses existing standard-runtime usage recording if present; no parse-specific schema field. | Generic parse, trap-based bool parse, bool parsing beyond exact lowercase true/false, string/bytes parse, trimming, case-insensitive parsing, locale/Unicode parsing, numeric boolean parsing, rich parse errors, stable helper ABI/layout/ownership. |
| `std.result.is_ok` | `((result i32 i32)) -> bool`; `((result i64 i32)) -> bool`; `((result string i32)) -> bool`; `((result f64 i32)) -> bool`; `((result bool i32)) -> bool` | exp-15, extended exp-25, exp-28, and exp-34 | `examples/supported/result-helpers.slo`; `examples/supported/string-parse-i64-result.slo`; `examples/supported/string-parse-f64-result.slo`; `examples/supported/string-parse-bool-result.slo` | Preferred source-level ok-tag observer for the supported concrete result families. | No result-helper-specific manifest field; schema version remains `1`. | Generic results, result payload families beyond the listed concrete families, option helpers, mapping/chaining, stable helper ABI/layout. |
| `std.result.is_err` | `((result i32 i32)) -> bool`; `((result i64 i32)) -> bool`; `((result string i32)) -> bool`; `((result f64 i32)) -> bool`; `((result bool i32)) -> bool` | exp-15, extended exp-25, exp-28, and exp-34 | `examples/supported/result-helpers.slo`; `examples/supported/string-parse-i64-result.slo`; `examples/supported/string-parse-f64-result.slo`; `examples/supported/string-parse-bool-result.slo` | Preferred source-level err-tag observer for the supported concrete result families. | No result-helper-specific manifest field; schema version remains `1`. | Generic results, result payload families beyond the listed concrete families, option helpers, mapping/chaining, stable helper ABI/layout. |
| `std.result.unwrap_ok` | `((result i32 i32)) -> i32`; `((result i64 i32)) -> i64`; `((result string i32)) -> string`; `((result f64 i32)) -> f64`; `((result bool i32)) -> bool` | exp-15, extended exp-25, exp-28, and exp-34 | `examples/supported/result-helpers.slo`; `examples/supported/string-parse-i64-result.slo`; `examples/supported/string-parse-f64-result.slo`; `examples/supported/string-parse-bool-result.slo` | Preferred source-level ok-payload extraction; traps with the existing `unwrap_ok on err` behavior when applied to `err`. | No result-helper-specific manifest field; schema version remains `1`. | Generic results, result payload families beyond the listed concrete families, generic `std.result.unwrap_or`, mapping/chaining, stable helper ABI/layout. |
| `std.result.unwrap_err` | `((result i32 i32)) -> i32`; `((result i64 i32)) -> i32`; `((result string i32)) -> i32`; `((result f64 i32)) -> i32`; `((result bool i32)) -> i32` | exp-15, extended exp-25, exp-28, and exp-34 | `examples/supported/result-helpers.slo`; `examples/supported/string-parse-i64-result.slo`; `examples/supported/string-parse-f64-result.slo`; `examples/supported/string-parse-bool-result.slo` | Preferred source-level err-payload extraction; traps with the existing `unwrap_err on ok` behavior when applied to `ok`. | No result-helper-specific manifest field; schema version remains `1`. | Generic results, result payload families beyond the listed concrete families, generic `std.result.unwrap_or`, mapping/chaining, stable helper ABI/layout. |

## Manifest Rule

The artifact manifest remains `slovo.artifact-manifest` schema version `1`.
If the existing implementation records standard-runtime usage, it records the
names above through the same additive structure. If it does not, this catalog
does not introduce one-off metadata for any operation or release.

## Deferrals

This catalog does not define broad standard-library modules, importable
standard packages, stable runtime helper names, C ABI symbols, headers,
libraries, semantic versioning, deprecation policy, or beta compatibility.
Those remain future beta work unless a later explicit contract promotes them.

For the current exp-37 language baseline, it also does not define automatic
standard-library imports, compiler-loaded `std/` source, source replacement of
cataloged compiler-known calls, `f32`, generic parse or format APIs,
`f64` formatting beyond
`std.num.f64_to_string : (f64) -> string` finite decimal text, locale/base/
radix/grouping/padding/precision controls, generic format/display/
interpolation traits, implicit conversions, stable NaN/infinity text, mixed
numeric arithmetic/comparison, unchecked f64-to-i32, unchecked f64-to-i64,
unchecked casts, casts/cast syntax, generic `cast_checked`, narrowing or
checked numeric conversions beyond `std.num.i64_to_i32_result`,
`std.num.f64_to_i32_result`, and `std.num.f64_to_i64_result`, unsigned or
narrower integer families, broad math beyond the source-authored exp-32
`std/math.slo` helper slice, trigonometry, `sqrt`, `pow`,
generic result helpers beyond the source-authored exp-35 `std/result.slo`
concrete helper slice, source constructors or general source `match` support
for `(result bool i32)` beyond compiler-supported fixture flow,
generic `std.result.unwrap_or`, `std.result.map`,
`std.result.and_then`, generic option helpers beyond the source-authored
exp-36/exp-75/exp-95/exp-100 `std/option.slo` concrete helper slices, option
payload families beyond `i32`, `i64`, and `string`, broad time APIs beyond
the exp-37 `std/time.slo` wrappers,
wall-clock/calendar/timezone APIs, high-resolution timers, async timers,
cancellation, scheduling guarantees, new result payload families,
numeric parse/format APIs beyond the two exp-24
integer-to-string calls, the exp-26 f64-to-string call, and the released
`std.string.parse_i32_result` /
`std.string.parse_i64_result` /
`std.string.parse_f64_result` /
`std.string.parse_bool_result` result calls, bool parsing beyond exact
lowercase `true`/`false`, string/bytes parse,
underscores, rich parse errors, Unicode digit parsing, f64 containers,
writable resource handles, binary IO, directory handles, directory
enumeration, recursive filesystem operations, process handles, sockets, async
resource handling, platform-specific host error codes, rich host-error ADTs,
automatic cleanup/finalizers/destructors, stable standard-library APIs or
implementation replacement, stable ABI/layout/ownership, manifest schema
changes, or beta maturity.
