# 1.0.0-beta.20 String Search And ASCII Trim Foundation ## Scope `1.0.0-beta.20` is a standard-library and compiler-gate slice. It does not change source-language syntax, runtime C, compiler-known runtime names, or ABI/layout policy. The release adds source-authored `std.string` helpers: - `contains ((value string) (needle string)) -> bool` - `index_of_option ((value string) (needle string)) -> (option i32)` - `last_index_of_option ((value string) (needle string)) -> (option i32)` - `trim_ascii_start ((value string)) -> string` - `trim_ascii_end ((value string)) -> string` - `trim_ascii ((value string)) -> string` ## Contract Search is byte-oriented over the current runtime string representation. `index_of_option` returns the first zero-based byte offset for a matching needle, `last_index_of_option` returns the last zero-based byte offset, and `contains` is true when `index_of_option` returns `some`. Empty needles are valid: - `index_of_option value ""` returns `some 0` - `last_index_of_option value ""` returns `some (len value)` - `contains value ""` returns `true` Missing needles return `none`. ASCII trim removes only these byte values from the requested edges: - `9` horizontal tab - `10` line feed - `11` vertical tab - `12` form feed - `13` carriage return - `32` space The helpers compose over already-promoted string primitives: - `std.string.len` - `std.string.byte_at_result` - `std.string.slice_result` - `std.string.starts_with` - `std.string.ends_with` ## Non-Scope This scope does not add: - compiler-known `std.string.*` runtime names for the new helpers - runtime C helper implementations - source-language syntax - Unicode scalar, grapheme, display-width, or normalization semantics - case folding or locale-sensitive search - regular expressions - tokenizer/parser APIs - mutable strings - language slice/view syntax - stable string ABI/layout - stable allocation ownership rules - stable standard-library compatibility - performance claims ## Acceptance Criteria - `lib/std/string.slo` exports all six helpers. - Explicit `std.string` import examples exercise contains, first/last search, missing needles, empty needles, leading trim, trailing trim, full trim, all-whitespace trim, and no-trim cases. - Local `std-layout-local-string` examples mirror the public helper surface. - Focused compiler coverage verifies the helpers are source-authored and that direct compiler-known runtime calls for the new names remain unsupported. - `scripts/release-gate.sh` runs the focused beta20 test. - Generated standard-library API documentation includes the new signatures. ## Gates ```bash cargo fmt --check cargo test --test standard_string_search_trim_beta20 cargo test --test standard_string_source_fallback_helpers_alpha cargo test --test standard_string_scanning_beta16 cargo test ./scripts/release-gate.sh ```