Release 1.0.0-beta.12 concrete vector query and prefix parity
This commit is contained in:
parent
87f90ba264
commit
dd5302507d
59
.llm/BETA_12_CONCRETE_VECTOR_QUERY_AND_PREFIX_PARITY.md
Normal file
59
.llm/BETA_12_CONCRETE_VECTOR_QUERY_AND_PREFIX_PARITY.md
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
# 1.0.0-beta.12 Concrete Vector Query And Prefix Parity
|
||||||
|
|
||||||
|
Status: release scope for `1.0.0-beta.12`.
|
||||||
|
|
||||||
|
`1.0.0-beta.12` is a source-authored standard-library/helper parity release for
|
||||||
|
current concrete vectors. It keeps the `1.0.0-beta` source language, typed core,
|
||||||
|
runtime, ABI/layout, and compiler-known `std.vec.*` runtime names unchanged.
|
||||||
|
|
||||||
|
## Scope
|
||||||
|
|
||||||
|
- Add `count_of`, `starts_with`, `without_prefix`, `ends_with`, and
|
||||||
|
`without_suffix` to `std.vec_i64`.
|
||||||
|
- Add `count_of` to `std.vec_f64`.
|
||||||
|
- Keep helpers ordinary Slovo source over the existing concrete vector runtime
|
||||||
|
names, equality, `len`, `at`, and already staged recursive helpers.
|
||||||
|
- Extend explicit source-helper project coverage for repeated `count_of`
|
||||||
|
results and prefix/suffix empty, mismatch, exact, and longer-than-input
|
||||||
|
cases where applicable.
|
||||||
|
- Bump the Glagol package version to `1.0.0-beta.12`.
|
||||||
|
- Update README, language docs, compiler docs, and the post-beta roadmap.
|
||||||
|
|
||||||
|
## Public Contract
|
||||||
|
|
||||||
|
The helper additions are concrete-family helpers:
|
||||||
|
|
||||||
|
- `std.vec_i64.count_of(values,target)` counts `i64` elements equal to
|
||||||
|
`target`.
|
||||||
|
- `std.vec_i64.starts_with(values,prefix)` and
|
||||||
|
`std.vec_i64.ends_with(values,suffix)` treat empty prefixes/suffixes and
|
||||||
|
exact full-vector matches as true, reject mismatches, and reject longer
|
||||||
|
prefix/suffix inputs.
|
||||||
|
- `std.vec_i64.without_prefix(values,prefix)` and
|
||||||
|
`std.vec_i64.without_suffix(values,suffix)` return the unmatched original
|
||||||
|
vector or the remaining vector after a match.
|
||||||
|
- `std.vec_f64.count_of(values,target)` counts `f64` elements equal to
|
||||||
|
`target`.
|
||||||
|
|
||||||
|
## Explicit Non-Scope
|
||||||
|
|
||||||
|
- no source-language syntax change
|
||||||
|
- no typed-core or lowering change
|
||||||
|
- no runtime implementation change
|
||||||
|
- no new compiler-known stdlib or runtime names
|
||||||
|
- no executable generics or generic stdlib dispatch
|
||||||
|
- no maps or sets
|
||||||
|
- no iterators
|
||||||
|
- no mutable vector operations
|
||||||
|
- no slice/view APIs
|
||||||
|
- no ABI/layout stability promise
|
||||||
|
- no performance claim
|
||||||
|
- no stable stdlib/API freeze
|
||||||
|
|
||||||
|
## Checks
|
||||||
|
|
||||||
|
Focused checks for this slice:
|
||||||
|
|
||||||
|
- `cargo test --manifest-path compiler/Cargo.toml --test standard_vec_i64_source_helpers_alpha --test standard_vec_f64_source_helpers_alpha`
|
||||||
|
- `cargo fmt --manifest-path compiler/Cargo.toml --check`
|
||||||
|
- `git diff --check -- compiler/tests/standard_vec_i64_source_helpers_alpha.rs compiler/tests/standard_vec_f64_source_helpers_alpha.rs compiler/Cargo.toml compiler/Cargo.lock README.md docs/POST_BETA_ROADMAP.md docs/language/ROADMAP.md docs/language/RELEASE_NOTES.md docs/language/SPEC-v1.md docs/compiler/ROADMAP.md docs/compiler/RELEASE_NOTES.md .llm/BETA_12_CONCRETE_VECTOR_QUERY_AND_PREFIX_PARITY.md`
|
||||||
54
.llm/reviews/BETA_12_RELEASE_REVIEW.md
Normal file
54
.llm/reviews/BETA_12_RELEASE_REVIEW.md
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
# 1.0.0-beta.12 Release Review
|
||||||
|
|
||||||
|
Status: ready for publication after controller release gate.
|
||||||
|
|
||||||
|
## Verdict
|
||||||
|
|
||||||
|
No blocking issues found in the current beta12 worktree. The slice is correctly
|
||||||
|
framed as concrete vector source-helper parity and can proceed to the final
|
||||||
|
publication gate.
|
||||||
|
|
||||||
|
## Scope Checked
|
||||||
|
|
||||||
|
- `lib/std/vec_i64.slo` exports and implements `count_of`, `starts_with`,
|
||||||
|
`without_prefix`, `ends_with`, and `without_suffix` as ordinary source
|
||||||
|
helpers over the existing `std.vec.i64` runtime wrappers and staged helper
|
||||||
|
surface.
|
||||||
|
- `lib/std/vec_f64.slo` exports and implements `count_of` as an ordinary
|
||||||
|
source helper; the existing f64 prefix/suffix helpers remain aligned.
|
||||||
|
- Local fixture copies, explicit `std.vec_i64` and `std.vec_f64` examples, and
|
||||||
|
mirrored language-doc examples import and exercise the new helpers.
|
||||||
|
- Focused helper tests, source-search tests, and promotion-gate inventories now
|
||||||
|
require the new exports and expected `20 test(s) passed` fixture output.
|
||||||
|
- README, roadmaps, release notes, SPEC-v1, regenerated `STDLIB_API.md`, the
|
||||||
|
beta12 `.llm` scope note, and the compiler package version bump align on the
|
||||||
|
`1.0.0-beta.12` concrete vector query and prefix parity scope.
|
||||||
|
|
||||||
|
## Findings
|
||||||
|
|
||||||
|
No blockers.
|
||||||
|
|
||||||
|
- Helper semantics match the existing concrete lanes: exact equality counts,
|
||||||
|
empty prefix/suffix success, longer input rejection, mismatch rejection, exact
|
||||||
|
removal to empty, and unmatched removal returning the original vector.
|
||||||
|
- Release-facing text keeps the scope narrow: no source-language, runtime,
|
||||||
|
typed-core, compiler-known stdlib/runtime-name, generic dispatch, map/set,
|
||||||
|
iterator, mutable-vector, slice/view, ABI/layout, performance, or stable
|
||||||
|
stdlib/API-freeze claim.
|
||||||
|
- `STDLIB_API.md` is consistent with the current `lib/std` sources: 578
|
||||||
|
exported helper signatures total, with 36 each for `std.vec_i64` and
|
||||||
|
`std.vec_f64`.
|
||||||
|
- Publication hygiene review found no beta12 private local path leakage in the
|
||||||
|
touched release-facing text.
|
||||||
|
|
||||||
|
## Verification
|
||||||
|
|
||||||
|
- `cargo test --manifest-path compiler/Cargo.toml --test standard_vec_i64_source_helpers_alpha --test standard_vec_f64_source_helpers_alpha --test standard_vec_i64_source_search_alpha --test standard_vec_f64_source_search_alpha`: passed.
|
||||||
|
- `cargo fmt --manifest-path compiler/Cargo.toml --check`: passed.
|
||||||
|
- `git diff --check`: passed.
|
||||||
|
- `STDLIB_API.md` was regenerated in an isolated copy and compared against the
|
||||||
|
worktree copy: no diff.
|
||||||
|
|
||||||
|
- `./scripts/release-gate.sh`: passed after the beta12 release commit, including
|
||||||
|
docs/API freshness, `cargo fmt --check`, full `cargo test`, ignored promotion
|
||||||
|
gates, binary smoke, and LLVM smoke.
|
||||||
30
README.md
30
README.md
@ -6,7 +6,7 @@ This repository is the canonical public monorepo for the language design,
|
|||||||
standard library source, compiler, runtime, examples, benchmarks, and technical
|
standard library source, compiler, runtime, examples, benchmarks, and technical
|
||||||
documents.
|
documents.
|
||||||
|
|
||||||
Current release: `1.0.0-beta.11`.
|
Current release: `1.0.0-beta.12`.
|
||||||
|
|
||||||
## Repository Layout
|
## Repository Layout
|
||||||
|
|
||||||
@ -24,7 +24,7 @@ scripts/ local release and document tooling
|
|||||||
|
|
||||||
## Beta Scope
|
## Beta Scope
|
||||||
|
|
||||||
`1.0.0-beta.11` keeps the `1.0.0-beta` language baseline, includes the
|
`1.0.0-beta.12` keeps the `1.0.0-beta` language baseline, includes the
|
||||||
`1.0.0-beta.1` tooling/install hardening slice, the `1.0.0-beta.2`
|
`1.0.0-beta.1` tooling/install hardening slice, the `1.0.0-beta.2`
|
||||||
runtime/resource foundation bundle, the `1.0.0-beta.3` standard-library
|
runtime/resource foundation bundle, the `1.0.0-beta.3` standard-library
|
||||||
stabilization bundle, the `1.0.0-beta.4` language-usability diagnostics
|
stabilization bundle, the `1.0.0-beta.4` language-usability diagnostics
|
||||||
@ -34,6 +34,7 @@ serialization/data-interchange foundation and the `1.0.0-beta.8` concrete type
|
|||||||
alias foundation, the `1.0.0-beta.9` collection alias unification and
|
alias foundation, the `1.0.0-beta.9` collection alias unification and
|
||||||
generic reservation slice, the `1.0.0-beta.10` developer-experience API
|
generic reservation slice, the `1.0.0-beta.10` developer-experience API
|
||||||
discovery slice, and the `1.0.0-beta.11` local package API documentation
|
discovery slice, and the `1.0.0-beta.11` local package API documentation
|
||||||
|
slice, plus the `1.0.0-beta.12` concrete vector query and prefix parity
|
||||||
slice. The language baseline supports practical local
|
slice. The language baseline supports practical local
|
||||||
command-line, file, and loopback-network programs with:
|
command-line, file, and loopback-network programs with:
|
||||||
|
|
||||||
@ -61,19 +62,25 @@ structs, enums, functions, tests, source spans, and workspace package names.
|
|||||||
API sections for local package and module documentation: exact exported
|
API sections for local package and module documentation: exact exported
|
||||||
function signatures, exported struct fields, exported enum variants and payload
|
function signatures, exported struct fields, exported enum variants and payload
|
||||||
types, non-export filtering, and module-local alias normalization.
|
types, non-export filtering, and module-local alias normalization.
|
||||||
|
The `1.0.0-beta.12` vector parity slice adds source-authored helper coverage
|
||||||
|
only: `std.vec_i64` gains `count_of`, `starts_with`, `without_prefix`,
|
||||||
|
`ends_with`, and `without_suffix`, while `std.vec_f64` gains `count_of`.
|
||||||
|
|
||||||
Still deferred before stable: executable generics, maps/sets, broad package
|
Still deferred before stable: executable generics, maps/sets, broad package
|
||||||
registry semantics, stable Markdown schema, stable stdlib/API compatibility
|
registry semantics, stable Markdown schema, stable stdlib/API compatibility
|
||||||
freeze, DNS/TLS/async networking, LSP/watch guarantees, SARIF and daemon
|
freeze, DNS/TLS/async networking, LSP/watch guarantees, SARIF and daemon
|
||||||
protocols, diagnostics schema policy, re-exports/globs/hierarchical modules,
|
protocols, diagnostics schema policy, re-exports/globs/hierarchical modules,
|
||||||
stable ABI and layout, and runtime changes for generic collections.
|
mutable vectors, slice/view APIs, iterators, new compiler-known runtime names,
|
||||||
|
stable ABI and layout, performance claims, and runtime changes for generic
|
||||||
|
collections.
|
||||||
|
|
||||||
The next likely language slice after `1.0.0-beta.11` should continue from the
|
The next likely language slice after `1.0.0-beta.12` should continue from the
|
||||||
developer-experience, diagnostics, and reserved generic/collection lanes
|
developer-experience, diagnostics, and reserved generic/collection lanes
|
||||||
without claiming executable generics, maps, sets, traits, inference,
|
without claiming executable generics, maps, sets, traits, inference,
|
||||||
monomorphization, iterators, ABI stability, runtime changes, LSP/watch
|
monomorphization, iterators, ABI stability, runtime changes, LSP/watch
|
||||||
protocols, registry semantics, stable Markdown schema, or a
|
protocols, registry semantics, stable Markdown schema, or a
|
||||||
standard-library/API compatibility freeze until the contract and gates are
|
standard-library/API compatibility freeze, mutable vectors, slice/view APIs,
|
||||||
|
new runtime names, or performance claims until the contract and gates are
|
||||||
explicit.
|
explicit.
|
||||||
|
|
||||||
## Build And Test
|
## Build And Test
|
||||||
@ -287,6 +294,19 @@ SARIF or daemon protocols, set diagnostics schema policy, implement executable
|
|||||||
generics, maps, or sets, add re-exports, globs, or hierarchical modules, or
|
generics, maps, or sets, add re-exports, globs, or hierarchical modules, or
|
||||||
define package registry semantics.
|
define package registry semantics.
|
||||||
|
|
||||||
|
## 1.0.0-beta.12 Concrete Vector Query And Prefix Parity
|
||||||
|
|
||||||
|
The `1.0.0-beta.12` release is a source-authored stdlib/helper parity update
|
||||||
|
for concrete vectors. It adds `count_of`, `starts_with`, `without_prefix`,
|
||||||
|
`ends_with`, and `without_suffix` to `std.vec_i64`, and adds `count_of` to
|
||||||
|
`std.vec_f64`, matching the already staged concrete helper style.
|
||||||
|
|
||||||
|
This release does not change the source language, runtime, compiler-known
|
||||||
|
`std.vec.*` names, ABI/layout contract, or performance contract. Generics,
|
||||||
|
maps/sets, iterators, mutable vectors, slice/view APIs, new runtime helper
|
||||||
|
names, stable stdlib API freeze, and broader collection abstractions remain
|
||||||
|
deferred.
|
||||||
|
|
||||||
## Documentation
|
## Documentation
|
||||||
|
|
||||||
- [Language Manifest](docs/language/MANIFEST.md)
|
- [Language Manifest](docs/language/MANIFEST.md)
|
||||||
|
|||||||
2
compiler/Cargo.lock
generated
2
compiler/Cargo.lock
generated
@ -4,4 +4,4 @@ version = 3
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "glagol"
|
name = "glagol"
|
||||||
version = "1.0.0-beta.11"
|
version = "1.0.0-beta.12"
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "glagol"
|
name = "glagol"
|
||||||
version = "1.0.0-beta.11"
|
version = "1.0.0-beta.12"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
description = "Glagol, the first compiler for the Slovo language"
|
description = "Glagol, the first compiler for the Slovo language"
|
||||||
license = "MIT OR Apache-2.0"
|
license = "MIT OR Apache-2.0"
|
||||||
|
|||||||
@ -1468,9 +1468,14 @@ const STANDARD_VEC_I64_SOURCE_FACADE_ALPHA: &[&str] = &[
|
|||||||
"index_of_option",
|
"index_of_option",
|
||||||
"last_index_of_option",
|
"last_index_of_option",
|
||||||
"contains",
|
"contains",
|
||||||
|
"count_of",
|
||||||
"sum",
|
"sum",
|
||||||
"concat",
|
"concat",
|
||||||
"take",
|
"take",
|
||||||
|
"starts_with",
|
||||||
|
"without_prefix",
|
||||||
|
"ends_with",
|
||||||
|
"without_suffix",
|
||||||
"drop",
|
"drop",
|
||||||
"reverse",
|
"reverse",
|
||||||
"subvec",
|
"subvec",
|
||||||
@ -1502,9 +1507,14 @@ const STANDARD_VEC_F64_SOURCE_FACADE_ALPHA: &[&str] = &[
|
|||||||
"index_of_option",
|
"index_of_option",
|
||||||
"last_index_of_option",
|
"last_index_of_option",
|
||||||
"contains",
|
"contains",
|
||||||
|
"count_of",
|
||||||
"sum",
|
"sum",
|
||||||
"concat",
|
"concat",
|
||||||
"take",
|
"take",
|
||||||
|
"starts_with",
|
||||||
|
"without_prefix",
|
||||||
|
"ends_with",
|
||||||
|
"without_suffix",
|
||||||
"drop",
|
"drop",
|
||||||
"reverse",
|
"reverse",
|
||||||
"subvec",
|
"subvec",
|
||||||
@ -7582,6 +7592,11 @@ fn assert_project_std_import_vec_i64_tooling_matches_fixture(project: &Path) {
|
|||||||
"test \"explicit std vec_i64 builder helpers\" ... ok\n",
|
"test \"explicit std vec_i64 builder helpers\" ... ok\n",
|
||||||
"test \"explicit std vec_i64 query helpers\" ... ok\n",
|
"test \"explicit std vec_i64 query helpers\" ... ok\n",
|
||||||
"test \"explicit std vec_i64 option query helpers\" ... ok\n",
|
"test \"explicit std vec_i64 option query helpers\" ... ok\n",
|
||||||
|
"test \"explicit std vec_i64 count_of helper\" ... ok\n",
|
||||||
|
"test \"explicit std vec_i64 starts_with helper\" ... ok\n",
|
||||||
|
"test \"explicit std vec_i64 ends_with helper\" ... ok\n",
|
||||||
|
"test \"explicit std vec_i64 without_suffix helper\" ... ok\n",
|
||||||
|
"test \"explicit std vec_i64 without_prefix helper\" ... ok\n",
|
||||||
"test \"explicit std vec_i64 transform helpers\" ... ok\n",
|
"test \"explicit std vec_i64 transform helpers\" ... ok\n",
|
||||||
"test \"explicit std vec_i64 subvec helper\" ... ok\n",
|
"test \"explicit std vec_i64 subvec helper\" ... ok\n",
|
||||||
"test \"explicit std vec_i64 insert helper\" ... ok\n",
|
"test \"explicit std vec_i64 insert helper\" ... ok\n",
|
||||||
@ -7592,7 +7607,7 @@ fn assert_project_std_import_vec_i64_tooling_matches_fixture(project: &Path) {
|
|||||||
"test \"explicit std vec_i64 remove range helper\" ... ok\n",
|
"test \"explicit std vec_i64 remove range helper\" ... ok\n",
|
||||||
"test \"explicit std vec_i64 real program helpers\" ... ok\n",
|
"test \"explicit std vec_i64 real program helpers\" ... ok\n",
|
||||||
"test \"explicit std vec_i64 helpers all\" ... ok\n",
|
"test \"explicit std vec_i64 helpers all\" ... ok\n",
|
||||||
"15 test(s) passed\n",
|
"20 test(s) passed\n",
|
||||||
),
|
),
|
||||||
"std import vec_i64 project test",
|
"std import vec_i64 project test",
|
||||||
);
|
);
|
||||||
@ -7676,6 +7691,7 @@ fn assert_project_std_import_vec_f64_tooling_matches_fixture(project: &Path) {
|
|||||||
"test \"explicit std vec_f64 builder helpers\" ... ok\n",
|
"test \"explicit std vec_f64 builder helpers\" ... ok\n",
|
||||||
"test \"explicit std vec_f64 query helpers\" ... ok\n",
|
"test \"explicit std vec_f64 query helpers\" ... ok\n",
|
||||||
"test \"explicit std vec_f64 option query helpers\" ... ok\n",
|
"test \"explicit std vec_f64 option query helpers\" ... ok\n",
|
||||||
|
"test \"explicit std vec_f64 count_of helper\" ... ok\n",
|
||||||
"test \"explicit std vec_f64 starts_with helper\" ... ok\n",
|
"test \"explicit std vec_f64 starts_with helper\" ... ok\n",
|
||||||
"test \"explicit std vec_f64 ends_with helper\" ... ok\n",
|
"test \"explicit std vec_f64 ends_with helper\" ... ok\n",
|
||||||
"test \"explicit std vec_f64 without_suffix helper\" ... ok\n",
|
"test \"explicit std vec_f64 without_suffix helper\" ... ok\n",
|
||||||
@ -7690,7 +7706,7 @@ fn assert_project_std_import_vec_f64_tooling_matches_fixture(project: &Path) {
|
|||||||
"test \"explicit std vec_f64 remove range helper\" ... ok\n",
|
"test \"explicit std vec_f64 remove range helper\" ... ok\n",
|
||||||
"test \"explicit std vec_f64 real program helpers\" ... ok\n",
|
"test \"explicit std vec_f64 real program helpers\" ... ok\n",
|
||||||
"test \"explicit std vec_f64 helpers all\" ... ok\n",
|
"test \"explicit std vec_f64 helpers all\" ... ok\n",
|
||||||
"19 test(s) passed\n",
|
"20 test(s) passed\n",
|
||||||
),
|
),
|
||||||
"std import vec_f64 project test",
|
"std import vec_f64 project test",
|
||||||
);
|
);
|
||||||
@ -9784,6 +9800,11 @@ fn assert_project_std_layout_local_vec_i64_tooling_matches_fixture(project: &Pat
|
|||||||
"test \"explicit local vec_i64 builder helpers\" ... ok\n",
|
"test \"explicit local vec_i64 builder helpers\" ... ok\n",
|
||||||
"test \"explicit local vec_i64 query helpers\" ... ok\n",
|
"test \"explicit local vec_i64 query helpers\" ... ok\n",
|
||||||
"test \"explicit local vec_i64 option query helpers\" ... ok\n",
|
"test \"explicit local vec_i64 option query helpers\" ... ok\n",
|
||||||
|
"test \"explicit local vec_i64 count_of helper\" ... ok\n",
|
||||||
|
"test \"explicit local vec_i64 starts_with helper\" ... ok\n",
|
||||||
|
"test \"explicit local vec_i64 ends_with helper\" ... ok\n",
|
||||||
|
"test \"explicit local vec_i64 without_suffix helper\" ... ok\n",
|
||||||
|
"test \"explicit local vec_i64 without_prefix helper\" ... ok\n",
|
||||||
"test \"explicit local vec_i64 transform helpers\" ... ok\n",
|
"test \"explicit local vec_i64 transform helpers\" ... ok\n",
|
||||||
"test \"explicit local vec_i64 subvec helper\" ... ok\n",
|
"test \"explicit local vec_i64 subvec helper\" ... ok\n",
|
||||||
"test \"explicit local vec_i64 insert helper\" ... ok\n",
|
"test \"explicit local vec_i64 insert helper\" ... ok\n",
|
||||||
@ -9794,7 +9815,7 @@ fn assert_project_std_layout_local_vec_i64_tooling_matches_fixture(project: &Pat
|
|||||||
"test \"explicit local vec_i64 remove range helper\" ... ok\n",
|
"test \"explicit local vec_i64 remove range helper\" ... ok\n",
|
||||||
"test \"explicit local vec_i64 real program helpers\" ... ok\n",
|
"test \"explicit local vec_i64 real program helpers\" ... ok\n",
|
||||||
"test \"explicit local vec_i64 helpers all\" ... ok\n",
|
"test \"explicit local vec_i64 helpers all\" ... ok\n",
|
||||||
"15 test(s) passed\n",
|
"20 test(s) passed\n",
|
||||||
),
|
),
|
||||||
"std layout local vec_i64 project test",
|
"std layout local vec_i64 project test",
|
||||||
);
|
);
|
||||||
@ -9818,6 +9839,7 @@ fn assert_project_std_layout_local_vec_f64_tooling_matches_fixture(project: &Pat
|
|||||||
"test \"explicit local vec_f64 builder helpers\" ... ok\n",
|
"test \"explicit local vec_f64 builder helpers\" ... ok\n",
|
||||||
"test \"explicit local vec_f64 query helpers\" ... ok\n",
|
"test \"explicit local vec_f64 query helpers\" ... ok\n",
|
||||||
"test \"explicit local vec_f64 option query helpers\" ... ok\n",
|
"test \"explicit local vec_f64 option query helpers\" ... ok\n",
|
||||||
|
"test \"explicit local vec_f64 count_of helper\" ... ok\n",
|
||||||
"test \"explicit local vec_f64 starts_with helper\" ... ok\n",
|
"test \"explicit local vec_f64 starts_with helper\" ... ok\n",
|
||||||
"test \"explicit local vec_f64 ends_with helper\" ... ok\n",
|
"test \"explicit local vec_f64 ends_with helper\" ... ok\n",
|
||||||
"test \"explicit local vec_f64 without_suffix helper\" ... ok\n",
|
"test \"explicit local vec_f64 without_suffix helper\" ... ok\n",
|
||||||
@ -9832,7 +9854,7 @@ fn assert_project_std_layout_local_vec_f64_tooling_matches_fixture(project: &Pat
|
|||||||
"test \"explicit local vec_f64 remove range helper\" ... ok\n",
|
"test \"explicit local vec_f64 remove range helper\" ... ok\n",
|
||||||
"test \"explicit local vec_f64 real program helpers\" ... ok\n",
|
"test \"explicit local vec_f64 real program helpers\" ... ok\n",
|
||||||
"test \"explicit local vec_f64 helpers all\" ... ok\n",
|
"test \"explicit local vec_f64 helpers all\" ... ok\n",
|
||||||
"19 test(s) passed\n",
|
"20 test(s) passed\n",
|
||||||
),
|
),
|
||||||
"std layout local vec_f64 project test",
|
"std layout local vec_f64 project test",
|
||||||
);
|
);
|
||||||
|
|||||||
@ -11,6 +11,7 @@ const EXPECTED_TEST_OUTPUT: &str = concat!(
|
|||||||
"test \"explicit local vec_f64 builder helpers\" ... ok\n",
|
"test \"explicit local vec_f64 builder helpers\" ... ok\n",
|
||||||
"test \"explicit local vec_f64 query helpers\" ... ok\n",
|
"test \"explicit local vec_f64 query helpers\" ... ok\n",
|
||||||
"test \"explicit local vec_f64 option query helpers\" ... ok\n",
|
"test \"explicit local vec_f64 option query helpers\" ... ok\n",
|
||||||
|
"test \"explicit local vec_f64 count_of helper\" ... ok\n",
|
||||||
"test \"explicit local vec_f64 starts_with helper\" ... ok\n",
|
"test \"explicit local vec_f64 starts_with helper\" ... ok\n",
|
||||||
"test \"explicit local vec_f64 ends_with helper\" ... ok\n",
|
"test \"explicit local vec_f64 ends_with helper\" ... ok\n",
|
||||||
"test \"explicit local vec_f64 without_suffix helper\" ... ok\n",
|
"test \"explicit local vec_f64 without_suffix helper\" ... ok\n",
|
||||||
@ -25,7 +26,7 @@ const EXPECTED_TEST_OUTPUT: &str = concat!(
|
|||||||
"test \"explicit local vec_f64 remove range helper\" ... ok\n",
|
"test \"explicit local vec_f64 remove range helper\" ... ok\n",
|
||||||
"test \"explicit local vec_f64 real program helpers\" ... ok\n",
|
"test \"explicit local vec_f64 real program helpers\" ... ok\n",
|
||||||
"test \"explicit local vec_f64 helpers all\" ... ok\n",
|
"test \"explicit local vec_f64 helpers all\" ... ok\n",
|
||||||
"19 test(s) passed\n",
|
"20 test(s) passed\n",
|
||||||
);
|
);
|
||||||
|
|
||||||
const STANDARD_VEC_F64_SOURCE_FACADE_ALPHA: &[&str] = &[
|
const STANDARD_VEC_F64_SOURCE_FACADE_ALPHA: &[&str] = &[
|
||||||
@ -48,6 +49,7 @@ const STANDARD_VEC_F64_SOURCE_FACADE_ALPHA: &[&str] = &[
|
|||||||
"index_of_option",
|
"index_of_option",
|
||||||
"last_index_of_option",
|
"last_index_of_option",
|
||||||
"contains",
|
"contains",
|
||||||
|
"count_of",
|
||||||
"sum",
|
"sum",
|
||||||
"concat",
|
"concat",
|
||||||
"take",
|
"take",
|
||||||
@ -184,6 +186,7 @@ fn assert_local_vec_f64_fixture_is_source_authored(project: &Path) {
|
|||||||
"index_of_option_loop",
|
"index_of_option_loop",
|
||||||
"last_index_of_option_loop",
|
"last_index_of_option_loop",
|
||||||
"contains_loop",
|
"contains_loop",
|
||||||
|
"count_of_loop",
|
||||||
"sum_loop",
|
"sum_loop",
|
||||||
"concat_loop",
|
"concat_loop",
|
||||||
"take_loop",
|
"take_loop",
|
||||||
@ -196,6 +199,43 @@ fn assert_local_vec_f64_fixture_is_source_authored(project: &Path) {
|
|||||||
helper
|
helper
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
assert_count_of_cases_are_exercised(&main);
|
||||||
|
assert_prefix_suffix_cases_are_exercised(&main);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn assert_count_of_cases_are_exercised(main: &str) {
|
||||||
|
assert!(
|
||||||
|
main.contains("(count_of (empty)"),
|
||||||
|
"main.slo must exercise count_of on an empty vec_f64"
|
||||||
|
);
|
||||||
|
assert!(
|
||||||
|
main.matches("(count_of").count() >= 4,
|
||||||
|
"main.slo must exercise repeated, singleton, and absent count_of cases"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn assert_prefix_suffix_cases_are_exercised(main: &str) {
|
||||||
|
for case in [
|
||||||
|
"(starts_with values (empty))",
|
||||||
|
"(starts_with values values)",
|
||||||
|
"(ends_with values (empty))",
|
||||||
|
"(ends_with values values)",
|
||||||
|
"(without_prefix values (empty))",
|
||||||
|
"(without_prefix values values)",
|
||||||
|
"(without_suffix values (empty))",
|
||||||
|
"(without_suffix values values)",
|
||||||
|
"mismatched_prefix",
|
||||||
|
"mismatched_suffix",
|
||||||
|
"longer_prefix",
|
||||||
|
"longer_suffix",
|
||||||
|
] {
|
||||||
|
assert!(
|
||||||
|
main.contains(case),
|
||||||
|
"main.slo must exercise vec_f64 prefix/suffix case `{}`",
|
||||||
|
case
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn run_glagol<I, S>(args: I) -> Output
|
fn run_glagol<I, S>(args: I) -> Output
|
||||||
|
|||||||
@ -11,6 +11,7 @@ const EXPECTED_STD_VEC_F64_OUTPUT: &str = concat!(
|
|||||||
"test \"explicit std vec_f64 builder helpers\" ... ok\n",
|
"test \"explicit std vec_f64 builder helpers\" ... ok\n",
|
||||||
"test \"explicit std vec_f64 query helpers\" ... ok\n",
|
"test \"explicit std vec_f64 query helpers\" ... ok\n",
|
||||||
"test \"explicit std vec_f64 option query helpers\" ... ok\n",
|
"test \"explicit std vec_f64 option query helpers\" ... ok\n",
|
||||||
|
"test \"explicit std vec_f64 count_of helper\" ... ok\n",
|
||||||
"test \"explicit std vec_f64 starts_with helper\" ... ok\n",
|
"test \"explicit std vec_f64 starts_with helper\" ... ok\n",
|
||||||
"test \"explicit std vec_f64 ends_with helper\" ... ok\n",
|
"test \"explicit std vec_f64 ends_with helper\" ... ok\n",
|
||||||
"test \"explicit std vec_f64 without_suffix helper\" ... ok\n",
|
"test \"explicit std vec_f64 without_suffix helper\" ... ok\n",
|
||||||
@ -25,7 +26,7 @@ const EXPECTED_STD_VEC_F64_OUTPUT: &str = concat!(
|
|||||||
"test \"explicit std vec_f64 remove range helper\" ... ok\n",
|
"test \"explicit std vec_f64 remove range helper\" ... ok\n",
|
||||||
"test \"explicit std vec_f64 real program helpers\" ... ok\n",
|
"test \"explicit std vec_f64 real program helpers\" ... ok\n",
|
||||||
"test \"explicit std vec_f64 helpers all\" ... ok\n",
|
"test \"explicit std vec_f64 helpers all\" ... ok\n",
|
||||||
"19 test(s) passed\n",
|
"20 test(s) passed\n",
|
||||||
);
|
);
|
||||||
|
|
||||||
const STANDARD_VEC_F64_SOURCE_FACADE_ALPHA: &[&str] = &[
|
const STANDARD_VEC_F64_SOURCE_FACADE_ALPHA: &[&str] = &[
|
||||||
@ -48,6 +49,7 @@ const STANDARD_VEC_F64_SOURCE_FACADE_ALPHA: &[&str] = &[
|
|||||||
"index_of_option",
|
"index_of_option",
|
||||||
"last_index_of_option",
|
"last_index_of_option",
|
||||||
"contains",
|
"contains",
|
||||||
|
"count_of",
|
||||||
"sum",
|
"sum",
|
||||||
"concat",
|
"concat",
|
||||||
"take",
|
"take",
|
||||||
|
|||||||
@ -11,6 +11,11 @@ const EXPECTED_TEST_OUTPUT: &str = concat!(
|
|||||||
"test \"explicit local vec_i64 builder helpers\" ... ok\n",
|
"test \"explicit local vec_i64 builder helpers\" ... ok\n",
|
||||||
"test \"explicit local vec_i64 query helpers\" ... ok\n",
|
"test \"explicit local vec_i64 query helpers\" ... ok\n",
|
||||||
"test \"explicit local vec_i64 option query helpers\" ... ok\n",
|
"test \"explicit local vec_i64 option query helpers\" ... ok\n",
|
||||||
|
"test \"explicit local vec_i64 count_of helper\" ... ok\n",
|
||||||
|
"test \"explicit local vec_i64 starts_with helper\" ... ok\n",
|
||||||
|
"test \"explicit local vec_i64 ends_with helper\" ... ok\n",
|
||||||
|
"test \"explicit local vec_i64 without_suffix helper\" ... ok\n",
|
||||||
|
"test \"explicit local vec_i64 without_prefix helper\" ... ok\n",
|
||||||
"test \"explicit local vec_i64 transform helpers\" ... ok\n",
|
"test \"explicit local vec_i64 transform helpers\" ... ok\n",
|
||||||
"test \"explicit local vec_i64 subvec helper\" ... ok\n",
|
"test \"explicit local vec_i64 subvec helper\" ... ok\n",
|
||||||
"test \"explicit local vec_i64 insert helper\" ... ok\n",
|
"test \"explicit local vec_i64 insert helper\" ... ok\n",
|
||||||
@ -21,7 +26,7 @@ const EXPECTED_TEST_OUTPUT: &str = concat!(
|
|||||||
"test \"explicit local vec_i64 remove range helper\" ... ok\n",
|
"test \"explicit local vec_i64 remove range helper\" ... ok\n",
|
||||||
"test \"explicit local vec_i64 real program helpers\" ... ok\n",
|
"test \"explicit local vec_i64 real program helpers\" ... ok\n",
|
||||||
"test \"explicit local vec_i64 helpers all\" ... ok\n",
|
"test \"explicit local vec_i64 helpers all\" ... ok\n",
|
||||||
"15 test(s) passed\n",
|
"20 test(s) passed\n",
|
||||||
);
|
);
|
||||||
|
|
||||||
const STANDARD_VEC_I64_SOURCE_FACADE_ALPHA: &[&str] = &[
|
const STANDARD_VEC_I64_SOURCE_FACADE_ALPHA: &[&str] = &[
|
||||||
@ -44,9 +49,14 @@ const STANDARD_VEC_I64_SOURCE_FACADE_ALPHA: &[&str] = &[
|
|||||||
"index_of_option",
|
"index_of_option",
|
||||||
"last_index_of_option",
|
"last_index_of_option",
|
||||||
"contains",
|
"contains",
|
||||||
|
"count_of",
|
||||||
"sum",
|
"sum",
|
||||||
"concat",
|
"concat",
|
||||||
"take",
|
"take",
|
||||||
|
"starts_with",
|
||||||
|
"without_prefix",
|
||||||
|
"ends_with",
|
||||||
|
"without_suffix",
|
||||||
"drop",
|
"drop",
|
||||||
"reverse",
|
"reverse",
|
||||||
"subvec",
|
"subvec",
|
||||||
@ -176,6 +186,7 @@ fn assert_local_vec_i64_fixture_is_source_authored(project: &Path) {
|
|||||||
"index_of_option_loop",
|
"index_of_option_loop",
|
||||||
"last_index_of_option_loop",
|
"last_index_of_option_loop",
|
||||||
"contains_loop",
|
"contains_loop",
|
||||||
|
"count_of_loop",
|
||||||
"sum_loop",
|
"sum_loop",
|
||||||
"concat_loop",
|
"concat_loop",
|
||||||
"take_loop",
|
"take_loop",
|
||||||
@ -188,6 +199,43 @@ fn assert_local_vec_i64_fixture_is_source_authored(project: &Path) {
|
|||||||
helper
|
helper
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
assert_count_of_cases_are_exercised(&main);
|
||||||
|
assert_prefix_suffix_cases_are_exercised(&main);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn assert_count_of_cases_are_exercised(main: &str) {
|
||||||
|
assert!(
|
||||||
|
main.contains("(count_of (empty)"),
|
||||||
|
"main.slo must exercise count_of on an empty vec_i64"
|
||||||
|
);
|
||||||
|
assert!(
|
||||||
|
main.matches("(count_of").count() >= 4,
|
||||||
|
"main.slo must exercise repeated, singleton, and absent count_of cases"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn assert_prefix_suffix_cases_are_exercised(main: &str) {
|
||||||
|
for case in [
|
||||||
|
"(starts_with values (empty))",
|
||||||
|
"(starts_with values values)",
|
||||||
|
"(ends_with values (empty))",
|
||||||
|
"(ends_with values values)",
|
||||||
|
"(without_prefix values (empty))",
|
||||||
|
"(without_prefix values values)",
|
||||||
|
"(without_suffix values (empty))",
|
||||||
|
"(without_suffix values values)",
|
||||||
|
"mismatched_prefix",
|
||||||
|
"mismatched_suffix",
|
||||||
|
"longer_prefix",
|
||||||
|
"longer_suffix",
|
||||||
|
] {
|
||||||
|
assert!(
|
||||||
|
main.contains(case),
|
||||||
|
"main.slo must exercise vec_i64 prefix/suffix case `{}`",
|
||||||
|
case
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn run_glagol<I, S>(args: I) -> Output
|
fn run_glagol<I, S>(args: I) -> Output
|
||||||
|
|||||||
@ -11,6 +11,11 @@ const EXPECTED_STD_VEC_I64_OUTPUT: &str = concat!(
|
|||||||
"test \"explicit std vec_i64 builder helpers\" ... ok\n",
|
"test \"explicit std vec_i64 builder helpers\" ... ok\n",
|
||||||
"test \"explicit std vec_i64 query helpers\" ... ok\n",
|
"test \"explicit std vec_i64 query helpers\" ... ok\n",
|
||||||
"test \"explicit std vec_i64 option query helpers\" ... ok\n",
|
"test \"explicit std vec_i64 option query helpers\" ... ok\n",
|
||||||
|
"test \"explicit std vec_i64 count_of helper\" ... ok\n",
|
||||||
|
"test \"explicit std vec_i64 starts_with helper\" ... ok\n",
|
||||||
|
"test \"explicit std vec_i64 ends_with helper\" ... ok\n",
|
||||||
|
"test \"explicit std vec_i64 without_suffix helper\" ... ok\n",
|
||||||
|
"test \"explicit std vec_i64 without_prefix helper\" ... ok\n",
|
||||||
"test \"explicit std vec_i64 transform helpers\" ... ok\n",
|
"test \"explicit std vec_i64 transform helpers\" ... ok\n",
|
||||||
"test \"explicit std vec_i64 subvec helper\" ... ok\n",
|
"test \"explicit std vec_i64 subvec helper\" ... ok\n",
|
||||||
"test \"explicit std vec_i64 insert helper\" ... ok\n",
|
"test \"explicit std vec_i64 insert helper\" ... ok\n",
|
||||||
@ -21,7 +26,7 @@ const EXPECTED_STD_VEC_I64_OUTPUT: &str = concat!(
|
|||||||
"test \"explicit std vec_i64 remove range helper\" ... ok\n",
|
"test \"explicit std vec_i64 remove range helper\" ... ok\n",
|
||||||
"test \"explicit std vec_i64 real program helpers\" ... ok\n",
|
"test \"explicit std vec_i64 real program helpers\" ... ok\n",
|
||||||
"test \"explicit std vec_i64 helpers all\" ... ok\n",
|
"test \"explicit std vec_i64 helpers all\" ... ok\n",
|
||||||
"15 test(s) passed\n",
|
"20 test(s) passed\n",
|
||||||
);
|
);
|
||||||
|
|
||||||
const STANDARD_VEC_I64_SOURCE_FACADE_ALPHA: &[&str] = &[
|
const STANDARD_VEC_I64_SOURCE_FACADE_ALPHA: &[&str] = &[
|
||||||
@ -44,9 +49,14 @@ const STANDARD_VEC_I64_SOURCE_FACADE_ALPHA: &[&str] = &[
|
|||||||
"index_of_option",
|
"index_of_option",
|
||||||
"last_index_of_option",
|
"last_index_of_option",
|
||||||
"contains",
|
"contains",
|
||||||
|
"count_of",
|
||||||
"sum",
|
"sum",
|
||||||
"concat",
|
"concat",
|
||||||
"take",
|
"take",
|
||||||
|
"starts_with",
|
||||||
|
"without_prefix",
|
||||||
|
"ends_with",
|
||||||
|
"without_suffix",
|
||||||
"drop",
|
"drop",
|
||||||
"reverse",
|
"reverse",
|
||||||
"subvec",
|
"subvec",
|
||||||
|
|||||||
@ -319,6 +319,35 @@ Why eleventh: local packages are useful only if their public surface can be
|
|||||||
reviewed without reading every source file, but the documentation format
|
reviewed without reading every source file, but the documentation format
|
||||||
should remain flexible until the package and editor stories are stronger.
|
should remain flexible until the package and editor stories are stronger.
|
||||||
|
|
||||||
|
### 12. Concrete Vector Query And Prefix Parity
|
||||||
|
|
||||||
|
Goal: close small source-authored helper gaps in the current concrete vector
|
||||||
|
facades before returning to larger language and tooling slices.
|
||||||
|
|
||||||
|
Work:
|
||||||
|
|
||||||
|
- add `count_of`, `starts_with`, `without_prefix`, `ends_with`, and
|
||||||
|
`without_suffix` to `std.vec_i64`
|
||||||
|
- add `count_of` to `std.vec_f64`
|
||||||
|
- keep all helpers source-authored over the already promoted concrete vector
|
||||||
|
runtime names, equality, `len`, `at`, `take`, `drop`, and recursive helper
|
||||||
|
style
|
||||||
|
- add explicit local helper project coverage for repeated count results and
|
||||||
|
prefix/suffix empty, mismatch, exact, and longer-than-input cases where
|
||||||
|
applicable
|
||||||
|
- document the slice as helper parity only, not a language/runtime change
|
||||||
|
|
||||||
|
Released in `1.0.0-beta.12`: `std.vec_i64` gains `count_of`, `starts_with`,
|
||||||
|
`without_prefix`, `ends_with`, and `without_suffix`; `std.vec_f64` gains
|
||||||
|
`count_of`; and focused Glagol fixture tests require the corresponding explicit
|
||||||
|
source-helper coverage. The release does not add generics, maps/sets,
|
||||||
|
iterators, mutable vectors, slice/view APIs, new runtime names, ABI/layout
|
||||||
|
stability, performance claims, or a stable stdlib/API freeze.
|
||||||
|
|
||||||
|
Why twelfth: concrete vectors are already broad enough that parity gaps create
|
||||||
|
surprising differences, and source-authored helpers can close those gaps
|
||||||
|
without committing to generic collection design.
|
||||||
|
|
||||||
## Stable `1.0.0` Gate
|
## Stable `1.0.0` Gate
|
||||||
|
|
||||||
Slovo should not become stable until all of these are true:
|
Slovo should not become stable until all of these are true:
|
||||||
@ -344,5 +373,9 @@ complete first:
|
|||||||
- macro system
|
- macro system
|
||||||
- stable C ABI/layout guarantees
|
- stable C ABI/layout guarantees
|
||||||
- optimizing compiler claims
|
- optimizing compiler claims
|
||||||
|
- mutable vectors, slice/view APIs, iterators, maps, sets, and executable
|
||||||
|
generics
|
||||||
|
- new runtime helper names or generic stdlib dispatch before an explicit
|
||||||
|
runtime/language slice
|
||||||
- web framework or HTTP server framework
|
- web framework or HTTP server framework
|
||||||
- broad Unicode/string normalization policy
|
- broad Unicode/string normalization policy
|
||||||
|
|||||||
@ -10,11 +10,43 @@ integration/readiness release, not the first real beta.
|
|||||||
|
|
||||||
## Unreleased
|
## Unreleased
|
||||||
|
|
||||||
Next scoped Glagol work is expected to continue after the `1.0.0-beta.11`
|
Next scoped Glagol work is expected to continue after the `1.0.0-beta.12`
|
||||||
local package API documentation update.
|
concrete vector query and prefix parity update.
|
||||||
|
|
||||||
No unreleased compiler scope is committed here yet.
|
No unreleased compiler scope is committed here yet.
|
||||||
|
|
||||||
|
## 1.0.0-beta.12
|
||||||
|
|
||||||
|
Release label: `1.0.0-beta.12`
|
||||||
|
|
||||||
|
Release date: 2026-05-22
|
||||||
|
|
||||||
|
Release state: source-authored concrete vector helper parity update
|
||||||
|
|
||||||
|
### Summary
|
||||||
|
|
||||||
|
The beta.12 compiler-side contract is test and package metadata support for a
|
||||||
|
stdlib/helper parity release. It keeps Glagol language execution, runtime
|
||||||
|
lowering, and compiler-known `std.vec.*` names unchanged.
|
||||||
|
|
||||||
|
- Bump the `glagol` compiler package version to `1.0.0-beta.12`.
|
||||||
|
- Extend explicit local `std.vec_i64` source-helper fixture tests to require
|
||||||
|
`count_of`, `starts_with`, `without_prefix`, `ends_with`, and
|
||||||
|
`without_suffix`.
|
||||||
|
- Extend explicit local `std.vec_f64` source-helper fixture tests to require
|
||||||
|
`count_of`.
|
||||||
|
- Require focused fixture coverage for repeated count results and
|
||||||
|
prefix/suffix empty, mismatch, exact, and longer-than-input cases where
|
||||||
|
applicable.
|
||||||
|
|
||||||
|
### Explicit Deferrals
|
||||||
|
|
||||||
|
This release does not implement source-language runtime changes, executable
|
||||||
|
generics, generic vectors, maps, sets, iterators, mutable vectors, slice/view
|
||||||
|
APIs, generic stdlib dispatch, new compiler-known stdlib or runtime names,
|
||||||
|
stable collection ABI/layout, performance claims, or a stable stdlib/API
|
||||||
|
compatibility freeze.
|
||||||
|
|
||||||
## 1.0.0-beta.11
|
## 1.0.0-beta.11
|
||||||
|
|
||||||
Release label: `1.0.0-beta.11`
|
Release label: `1.0.0-beta.11`
|
||||||
|
|||||||
@ -22,8 +22,8 @@ general-purpose beta release.
|
|||||||
|
|
||||||
A Glagol feature is done only when it has parser/lowerer support, checker behavior, diagnostics for invalid forms, backend behavior or explicit unsupported diagnostics, and tests.
|
A Glagol feature is done only when it has parser/lowerer support, checker behavior, diagnostics for invalid forms, backend behavior or explicit unsupported diagnostics, and tests.
|
||||||
|
|
||||||
Current stage: `1.0.0-beta.11`, released on 2026-05-22 as a local package API
|
Current stage: `1.0.0-beta.12`, released on 2026-05-22 as a concrete vector
|
||||||
documentation update. It keeps the `1.0.0-beta`
|
query and prefix parity update. It keeps the `1.0.0-beta`
|
||||||
language/compiler support baseline and includes the
|
language/compiler support baseline and includes the
|
||||||
`1.0.0-beta.1` tooling hardening release, the `1.0.0-beta.2` runtime/resource
|
`1.0.0-beta.1` tooling hardening release, the `1.0.0-beta.2` runtime/resource
|
||||||
foundation release, the `1.0.0-beta.3` standard-library stabilization release,
|
foundation release, the `1.0.0-beta.3` standard-library stabilization release,
|
||||||
@ -47,15 +47,21 @@ The beta.11 documentation slice extends
|
|||||||
exported/public API sections for local packages and modules, including exact
|
exported/public API sections for local packages and modules, including exact
|
||||||
exported function signatures, exported struct fields, exported enum
|
exported function signatures, exported struct fields, exported enum
|
||||||
variants/payload types, non-export filtering, and module-local alias
|
variants/payload types, non-export filtering, and module-local alias
|
||||||
normalization. It adds no source-language runtime behavior.
|
normalization. The beta.12 stdlib/helper parity slice adds source-authored
|
||||||
|
coverage for `std.vec_i64.count_of`, `std.vec_i64.starts_with`,
|
||||||
|
`std.vec_i64.without_prefix`, `std.vec_i64.ends_with`,
|
||||||
|
`std.vec_i64.without_suffix`, and `std.vec_f64.count_of` without changing
|
||||||
|
source-language runtime behavior.
|
||||||
|
|
||||||
Next stage target: post-`1.0.0-beta.11` developer-experience,
|
Next stage target: post-`1.0.0-beta.12` developer-experience,
|
||||||
diagnostics-schema, package, and collection/generic planning. Generic vectors,
|
diagnostics-schema, package, and collection/generic planning. Generic vectors,
|
||||||
maps, sets, generic stdlib dispatch, runtime collection changes, collection
|
maps, sets, generic stdlib dispatch, runtime collection changes, collection
|
||||||
unification, stable Markdown schema, LSP/watch protocols, SARIF/daemon
|
unification, stable Markdown schema, LSP/watch protocols, SARIF/daemon
|
||||||
protocols, re-exports/globs/hierarchical modules, diagnostics schema policy,
|
protocols, re-exports/globs/hierarchical modules, diagnostics schema policy,
|
||||||
registry semantics, and a stable stdlib/API compatibility freeze remain
|
registry semantics, mutable vectors, slice/view APIs, new runtime names,
|
||||||
unimplemented until a later scoped contract promotes them explicitly.
|
iterators, performance claims, ABI/layout stability, and a stable stdlib/API
|
||||||
|
compatibility freeze remain unimplemented until a later scoped contract
|
||||||
|
promotes them explicitly.
|
||||||
|
|
||||||
The final experimental precursor scope is `exp-125`. Its unsigned direct-value
|
The final experimental precursor scope is `exp-125`. Its unsigned direct-value
|
||||||
flow, parse/format runtime lanes, and matching staged stdlib helper breadth
|
flow, parse/format runtime lanes, and matching staged stdlib helper breadth
|
||||||
|
|||||||
@ -8,7 +8,7 @@ Historical `exp-*` releases listed here are experimental maturity milestones.
|
|||||||
The pushed tag `v2.0.0-beta.1` is historical. It is now documented as an
|
The pushed tag `v2.0.0-beta.1` is historical. It is now documented as an
|
||||||
experimental integration/readiness release, not as a beta maturity claim.
|
experimental integration/readiness release, not as a beta maturity claim.
|
||||||
|
|
||||||
The current release is `1.0.0-beta.11`, published on 2026-05-22. It keeps the
|
The current release is `1.0.0-beta.12`, published on 2026-05-22. It keeps the
|
||||||
`1.0.0-beta` language surface, includes the first post-beta tooling/install
|
`1.0.0-beta` language surface, includes the first post-beta tooling/install
|
||||||
hardening bundle from `1.0.0-beta.1`, and adds the first runtime/resource
|
hardening bundle from `1.0.0-beta.1`, and adds the first runtime/resource
|
||||||
foundation bundle from `1.0.0-beta.2` plus the first standard-library
|
foundation bundle from `1.0.0-beta.2` plus the first standard-library
|
||||||
@ -21,12 +21,44 @@ first concrete type alias foundation from `1.0.0-beta.8`, plus the first
|
|||||||
collection alias unification and generic reservation slice from
|
collection alias unification and generic reservation slice from
|
||||||
`1.0.0-beta.9`, the first developer-experience API discovery slice from
|
`1.0.0-beta.9`, the first developer-experience API discovery slice from
|
||||||
`1.0.0-beta.10`, and the local package API documentation extension from
|
`1.0.0-beta.10`, and the local package API documentation extension from
|
||||||
`1.0.0-beta.11`.
|
`1.0.0-beta.11`, plus the concrete vector query and prefix parity slice from
|
||||||
|
`1.0.0-beta.12`.
|
||||||
|
|
||||||
## Unreleased
|
## Unreleased
|
||||||
|
|
||||||
No unreleased language scope is committed here yet.
|
No unreleased language scope is committed here yet.
|
||||||
|
|
||||||
|
## 1.0.0-beta.12
|
||||||
|
|
||||||
|
Release label: `1.0.0-beta.12`
|
||||||
|
|
||||||
|
Release name: Concrete Vector Query And Prefix Parity
|
||||||
|
|
||||||
|
Release date: 2026-05-22
|
||||||
|
|
||||||
|
Status: released beta stdlib/helper parity update on the `1.0.0-beta`
|
||||||
|
language baseline.
|
||||||
|
|
||||||
|
`1.0.0-beta.12` is a source-authored concrete vector helper release. It closes
|
||||||
|
small parity gaps in the current concrete vector facades without changing the
|
||||||
|
language, typed core, runtime, ABI, or compiler-known `std.vec.*` runtime
|
||||||
|
names:
|
||||||
|
|
||||||
|
- `std.vec_i64` gains `count_of`, `starts_with`, `without_prefix`,
|
||||||
|
`ends_with`, and `without_suffix`.
|
||||||
|
- `std.vec_f64` gains `count_of`.
|
||||||
|
- The helper behavior stays source-authored over the existing concrete vector
|
||||||
|
runtime names, current equality, `len`, `at`, `take`, `drop`, and recursive
|
||||||
|
helper style.
|
||||||
|
- Focused Glagol fixture coverage exercises repeated `count_of` results and
|
||||||
|
prefix/suffix empty, mismatch, exact, and longer-than-input cases where the
|
||||||
|
helper family applies.
|
||||||
|
|
||||||
|
This release does not add executable generics, maps, sets, iterators, mutable
|
||||||
|
vectors, slice/view APIs, new runtime names, new compiler-known stdlib names,
|
||||||
|
ABI/layout stability, performance claims, stable stdlib API freeze, generic
|
||||||
|
stdlib dispatch, or broad collection abstractions.
|
||||||
|
|
||||||
## 1.0.0-beta.11
|
## 1.0.0-beta.11
|
||||||
|
|
||||||
Release label: `1.0.0-beta.11`
|
Release label: `1.0.0-beta.11`
|
||||||
|
|||||||
@ -10,8 +10,9 @@ Long-horizon planning lives in
|
|||||||
release train from the historical `v2.0.0-beta.1` tag toward and beyond the
|
release train from the historical `v2.0.0-beta.1` tag toward and beyond the
|
||||||
first real general-purpose beta Slovo contract.
|
first real general-purpose beta Slovo contract.
|
||||||
|
|
||||||
Current stage: `1.0.0-beta.11`, released on 2026-05-22 as a post-beta local
|
Current stage: `1.0.0-beta.12`, released on 2026-05-22 as a post-beta concrete
|
||||||
package API documentation update. It keeps the `1.0.0-beta` language contract and
|
vector query and prefix parity update. It keeps the `1.0.0-beta` language
|
||||||
|
contract and
|
||||||
includes the `1.0.0-beta.1` tooling hardening release, the `1.0.0-beta.2`
|
includes the `1.0.0-beta.1` tooling hardening release, the `1.0.0-beta.2`
|
||||||
runtime/resource foundation release, the `1.0.0-beta.3` standard-library
|
runtime/resource foundation release, the `1.0.0-beta.3` standard-library
|
||||||
stabilization release, the `1.0.0-beta.4` language-usability diagnostics
|
stabilization release, the `1.0.0-beta.4` language-usability diagnostics
|
||||||
@ -27,21 +28,26 @@ signatures with module-local aliases normalized to concrete public types, plus
|
|||||||
workspaces, plus `glagol doc <file|project|workspace> -o <dir>` public API
|
workspaces, plus `glagol doc <file|project|workspace> -o <dir>` public API
|
||||||
sections for local packages/modules with exact exported function signatures,
|
sections for local packages/modules with exact exported function signatures,
|
||||||
exported struct fields, exported enum variants/payload types, non-export
|
exported struct fields, exported enum variants/payload types, non-export
|
||||||
filtering, and module-local alias normalization. JSON parsing, recursive JSON
|
filtering, and module-local alias normalization, plus source-authored concrete
|
||||||
values, executable generics, generic aliases,
|
vector helper parity: `std.vec_i64` gains `count_of`, `starts_with`,
|
||||||
|
`without_prefix`, `ends_with`, and `without_suffix`, and `std.vec_f64` gains
|
||||||
|
`count_of`. JSON parsing, recursive JSON values, executable generics, generic
|
||||||
|
aliases,
|
||||||
parameterized aliases, cross-module alias visibility, maps/sets, traits,
|
parameterized aliases, cross-module alias visibility, maps/sets, traits,
|
||||||
inference, monomorphization, iterators, runtime changes for generic
|
inference, monomorphization, iterators, runtime changes for generic
|
||||||
collections, DNS, TLS, UDP, async IO, non-loopback binding, HTTP frameworks,
|
collections, DNS, TLS, UDP, async IO, non-loopback binding, HTTP frameworks,
|
||||||
rich host-error ADTs, stable ABI/layout, stable Markdown schema, stable
|
rich host-error ADTs, stable ABI/layout, stable Markdown schema, stable
|
||||||
stdlib/API compatibility freeze, LSP/watch, SARIF/daemon protocols,
|
stdlib/API compatibility freeze, LSP/watch, SARIF/daemon protocols,
|
||||||
diagnostics schema policy, re-exports/globs/hierarchical modules, and package
|
diagnostics schema policy, re-exports/globs/hierarchical modules, mutable
|
||||||
|
vectors, slice/view APIs, new runtime names, performance claims, and package
|
||||||
registry semantics remain deferred.
|
registry semantics remain deferred.
|
||||||
|
|
||||||
Next stage target: continue from developer-experience, diagnostics, package,
|
Next stage target: continue after `1.0.0-beta.12` from developer-experience,
|
||||||
and reserved generic/map/set planning without claiming executable generics, an
|
diagnostics, package, and reserved generic/map/set planning without claiming
|
||||||
LSP/watch protocol, stable Markdown schema, registry semantics, or
|
executable generics, an LSP/watch protocol, stable Markdown schema, registry
|
||||||
stable standard-library/API compatibility freeze until the exact scope is
|
semantics, or stable standard-library/API compatibility freeze, mutable
|
||||||
frozen from the manifest and roadmap.
|
vectors, slice/view APIs, new runtime names, performance claims, maps/sets, or
|
||||||
|
iterators until the exact scope is frozen from the manifest and roadmap.
|
||||||
|
|
||||||
The final experimental precursor scope is `exp-125`, defined in
|
The final experimental precursor scope is `exp-125`, defined in
|
||||||
`.llm/EXP_125_UNSIGNED_U32_U64_NUMERIC_AND_STDLIB_BREADTH_ALPHA.md`. Its
|
`.llm/EXP_125_UNSIGNED_U32_U64_NUMERIC_AND_STDLIB_BREADTH_ALPHA.md`. Its
|
||||||
|
|||||||
@ -3,7 +3,8 @@
|
|||||||
Status: living beta contract for `1.0.0-beta`, with the post-beta
|
Status: living beta contract for `1.0.0-beta`, with the post-beta
|
||||||
`1.0.0-beta.1` tooling/install update, `1.0.0-beta.2` runtime/resource
|
`1.0.0-beta.1` tooling/install update, `1.0.0-beta.2` runtime/resource
|
||||||
foundation update, `1.0.0-beta.10` developer-experience API discovery update,
|
foundation update, `1.0.0-beta.10` developer-experience API discovery update,
|
||||||
and `1.0.0-beta.11` local package API documentation update. The language contract integrates
|
`1.0.0-beta.11` local package API documentation update, and `1.0.0-beta.12`
|
||||||
|
concrete vector query and prefix parity update. The language contract integrates
|
||||||
promoted language slices through `exp-125` and the historical publication
|
promoted language slices through `exp-125` and the historical publication
|
||||||
baseline through `exp-123`. `1.0.0-beta` is the first real general-purpose
|
baseline through `exp-123`. `1.0.0-beta` is the first real general-purpose
|
||||||
beta release. `exp-125` completed the unsigned numeric and stdlib breadth
|
beta release. `exp-125` completed the unsigned numeric and stdlib breadth
|
||||||
@ -139,6 +140,14 @@ Current v1 release surface and explicit experimental targets:
|
|||||||
compatibility freeze, LSP/watch contract, SARIF/daemon protocol, diagnostics
|
compatibility freeze, LSP/watch contract, SARIF/daemon protocol, diagnostics
|
||||||
schema policy, executable generics, maps/sets, re-exports, globs,
|
schema policy, executable generics, maps/sets, re-exports, globs,
|
||||||
hierarchical modules, or registry semantics
|
hierarchical modules, or registry semantics
|
||||||
|
- `1.0.0-beta.12` concrete vector query and prefix parity target:
|
||||||
|
source-authored `std.vec_i64` gains `count_of`, `starts_with`,
|
||||||
|
`without_prefix`, `ends_with`, and `without_suffix`; source-authored
|
||||||
|
`std.vec_f64` gains `count_of`; this is helper parity over the current
|
||||||
|
concrete vector runtime names only, not a source-language/runtime change,
|
||||||
|
executable generics, maps/sets, iterators, mutable vectors, slice/view APIs,
|
||||||
|
new runtime names, ABI/layout stability, performance claims, or a stable
|
||||||
|
stdlib API freeze
|
||||||
- `exp-1` owned runtime strings: compiler-known `std.string.concat` accepts two
|
- `exp-1` owned runtime strings: compiler-known `std.string.concat` accepts two
|
||||||
`string` values and returns an immutable runtime-owned `string`; existing
|
`string` values and returns an immutable runtime-owned `string`; existing
|
||||||
string equality, length, printing, locals, parameters, returns, and calls work
|
string equality, length, printing, locals, parameters, returns, and calls work
|
||||||
@ -1307,6 +1316,35 @@ diagnostics schema policy, executable generics, maps/sets, re-exports, glob
|
|||||||
imports, hierarchical modules, registry semantics, runtime behavior, package
|
imports, hierarchical modules, registry semantics, runtime behavior, package
|
||||||
ABI, or layout.
|
ABI, or layout.
|
||||||
|
|
||||||
|
### 4.4.9 Post-Beta Concrete Vector Query And Prefix Parity
|
||||||
|
|
||||||
|
Status: released in `1.0.0-beta.12` as a source-authored stdlib/helper parity
|
||||||
|
update on the existing concrete vector surface.
|
||||||
|
|
||||||
|
`1.0.0-beta.12` closes narrow helper gaps in the concrete vector facades:
|
||||||
|
|
||||||
|
- `std.vec_i64` exports `count_of`, `starts_with`, `without_prefix`,
|
||||||
|
`ends_with`, and `without_suffix`.
|
||||||
|
- `std.vec_f64` exports `count_of`.
|
||||||
|
|
||||||
|
The helpers are ordinary Slovo source helpers. They build on the existing
|
||||||
|
compiler-known concrete vector runtime names, equality, `len`, `at`, and
|
||||||
|
already staged source helpers such as `take` and `drop`. They do not add new
|
||||||
|
source-language syntax, typed-core forms, runtime calls, compiler-known stdlib
|
||||||
|
names, ABI/layout commitments, or performance guarantees.
|
||||||
|
|
||||||
|
The helper semantics follow the existing concrete vector family conventions:
|
||||||
|
`count_of(values,target)` returns the number of elements equal to `target`;
|
||||||
|
`starts_with(values,prefix)` and `ends_with(values,suffix)` accept empty,
|
||||||
|
exact, and shorter matching vectors and reject longer or mismatched vectors;
|
||||||
|
`without_prefix` and `without_suffix` return the original vector when the
|
||||||
|
prefix/suffix does not match and return the remaining vector when it does.
|
||||||
|
|
||||||
|
This target explicitly does not add executable generics, generic vector
|
||||||
|
dispatch, maps, sets, iterators, mutable vectors, slice/view APIs, new runtime
|
||||||
|
names, stable ABI/layout promises, performance claims, or a stable stdlib API
|
||||||
|
freeze.
|
||||||
|
|
||||||
## 4.5 v2.0.0-beta.1 Experimental Integration Readiness
|
## 4.5 v2.0.0-beta.1 Experimental Integration Readiness
|
||||||
|
|
||||||
Status: current experimental Slovo-side release contract, released 2026-05-17.
|
Status: current experimental Slovo-side release contract, released 2026-05-17.
|
||||||
@ -1502,22 +1540,23 @@ ABI symbols or stable runtime helper symbols. The exact promoted names are
|
|||||||
reserved from user function, export, import, local, and parameter
|
reserved from user function, export, import, local, and parameter
|
||||||
shadowing.
|
shadowing.
|
||||||
|
|
||||||
The latest released Slovo-side collection target after exp-107 is `exp-108`,
|
The latest released Slovo-side concrete collection helper target is
|
||||||
Standard Vec String, F64, And Bool Prefix And Suffix Helpers Alpha. It
|
`1.0.0-beta.12`, Concrete Vector Query And Prefix Parity. It broadens
|
||||||
broadens `std/vec_string.slo`, `std/vec_f64.slo`, and `std/vec_bool.slo`
|
`std/vec_i64.slo` with `count_of`, `starts_with`, `without_prefix`,
|
||||||
with exactly `starts_with`, `without_prefix`, `ends_with`, and
|
`ends_with`, and `without_suffix`, and broadens `std/vec_f64.slo` with
|
||||||
`without_suffix` over the already released concrete vec-string, vec-f64, and
|
`count_of`. The helper lanes stay source-authored, recursive, immutable, and
|
||||||
vec-bool helper surfaces. The helper lanes stay source-authored,
|
limited to the already promoted concrete vector runtime names. They do not
|
||||||
recursive, and immutable and do not widen the promoted collection runtime
|
widen the promoted collection runtime surface or add new compiler-known names.
|
||||||
surface beyond those connected prefix/suffix helpers.
|
|
||||||
|
|
||||||
The collections alpha slice explicitly defers generic vectors, vector element
|
The collections alpha slice explicitly defers generic vectors, vector element
|
||||||
types other than `i32`, `i64`, `f64`, `bool`, and `string`, vector mutation, vector
|
types other than `i32`, `i64`, `f64`, `bool`, and `string`, vector mutation,
|
||||||
`var`, vector `set`, vector literals besides empty/append construction, a `push`
|
mutable vector operations beyond whole-value `var`/`set` already promoted for
|
||||||
alias, nested vectors, vectors in arrays, vectors in structs, vectors in
|
current concrete vectors, vector literals besides empty/append construction, a
|
||||||
options, vectors in results, iterators, slices, maps, sets, user-visible
|
`push` alias, nested vectors, vectors in arrays, vectors in structs, vectors in
|
||||||
deallocation, stable ABI/layout/helper-symbol promises, package expansion,
|
options, vectors in results, iterators, slices/views, maps, sets, user-visible
|
||||||
and IO expansion.
|
deallocation, new runtime names, stable ABI/layout/helper-symbol promises,
|
||||||
|
performance claims, package expansion, stable stdlib API freeze, and IO
|
||||||
|
expansion.
|
||||||
|
|
||||||
The collection fixture targets are:
|
The collection fixture targets are:
|
||||||
|
|
||||||
@ -5856,8 +5895,9 @@ promises remain deferred until a future spec explicitly promotes them.
|
|||||||
concrete option source helpers,
|
concrete option source helpers,
|
||||||
randomness beyond the exp-11 target, time beyond
|
randomness beyond the exp-11 target, time beyond
|
||||||
the exp-8 host time/sleep target, vectors/collections beyond the exp-2
|
the exp-8 host time/sleep target, vectors/collections beyond the exp-2
|
||||||
`(vec i32)`, exp-94 `(vec i64)`, exp-99 `(vec string)`, and exp-103
|
`(vec i32)`, exp-94 `(vec i64)`, exp-99 `(vec string)`, exp-103
|
||||||
`(vec f64)` targets,
|
`(vec f64)`, exp-104 `(vec bool)`, and beta.12 source-helper parity
|
||||||
|
targets,
|
||||||
user-defined standard modules, overloading, and generic standard-library APIs
|
user-defined standard modules, overloading, and generic standard-library APIs
|
||||||
- numeric primitives and conversions beyond exp-20 direct `f64`, exp-21
|
- numeric primitives and conversions beyond exp-20 direct `f64`, exp-21
|
||||||
direct `i64`, exp-22 explicit `std.num.i32_to_i64`,
|
direct `i64`, exp-22 explicit `std.num.i32_to_i64`,
|
||||||
@ -5902,10 +5942,14 @@ promises remain deferred until a future spec explicitly promotes them.
|
|||||||
facade wrappers, including wall-clock/calendar/timezone APIs,
|
facade wrappers, including wall-clock/calendar/timezone APIs,
|
||||||
high-resolution timers, async timers, cancellation, and scheduling
|
high-resolution timers, async timers, cancellation, and scheduling
|
||||||
guarantees
|
guarantees
|
||||||
- generic vectors, vector element types other than `i32`, vector mutation,
|
- generic vectors, vector element types other than `i32`, `i64`, `f64`,
|
||||||
vector literals beyond empty/append construction, `push`, nested vectors,
|
`bool`, and `string`, element-level mutable vectors and mutable vector
|
||||||
vectors in arrays/structs/options/results, iterators, slices, maps, sets,
|
operations beyond whole-value local reassignment, vector literals beyond
|
||||||
user-visible vector deallocation, and stable vector ABI/layout/helper symbols
|
empty/append construction, `push`, nested vectors, vectors in
|
||||||
|
arrays/structs/options/results, iterators, slices/views, maps, sets, new
|
||||||
|
runtime vector helper names, performance claims, user-visible vector
|
||||||
|
deallocation, stable stdlib API freeze, and stable vector ABI/layout/helper
|
||||||
|
symbols
|
||||||
- string concatenation beyond exp-1 `std.string.concat`, parsing beyond
|
- string concatenation beyond exp-1 `std.string.concat`, parsing beyond
|
||||||
exp-13 `std.string.parse_i32_result`, exp-25
|
exp-13 `std.string.parse_i32_result`, exp-25
|
||||||
`std.string.parse_i64_result`, and exp-28
|
`std.string.parse_i64_result`, and exp-28
|
||||||
|
|||||||
@ -6,7 +6,7 @@ Do not edit this file by hand.
|
|||||||
## Stability Tiers
|
## Stability Tiers
|
||||||
|
|
||||||
- `beta-supported`: exported from `lib/std` and covered by source-search, promotion, or facade gates in the current beta line.
|
- `beta-supported`: exported from `lib/std` and covered by source-search, promotion, or facade gates in the current beta line.
|
||||||
- `experimental`: not used for exported `lib/std` helpers in `1.0.0-beta.11`; future releases may mark new helpers this way before they graduate.
|
- `experimental`: not used for exported `lib/std` helpers in `1.0.0-beta.12`; future releases may mark new helpers this way before they graduate.
|
||||||
- `internal`: helper names that are not exported from their module; they are intentionally omitted from this catalog.
|
- `internal`: helper names that are not exported from their module; they are intentionally omitted from this catalog.
|
||||||
|
|
||||||
The catalog is a beta API discovery aid, not a stable `1.0.0` standard-library freeze.
|
The catalog is a beta API discovery aid, not a stable `1.0.0` standard-library freeze.
|
||||||
@ -16,7 +16,7 @@ Only exported `(fn ...)` helpers are listed; `(type ...)` aliases and non-export
|
|||||||
## Summary
|
## Summary
|
||||||
|
|
||||||
- Modules: 19
|
- Modules: 19
|
||||||
- Exported helper signatures: 572
|
- Exported helper signatures: 578
|
||||||
- Exported type aliases omitted: 0
|
- Exported type aliases omitted: 0
|
||||||
- Default tier: `beta-supported`
|
- Default tier: `beta-supported`
|
||||||
|
|
||||||
@ -563,7 +563,7 @@ Only exported `(fn ...)` helpers are listed; `(type ...)` aliases and non-export
|
|||||||
|
|
||||||
- Path: `lib/std/vec_f64.slo`
|
- Path: `lib/std/vec_f64.slo`
|
||||||
- Tier: `beta-supported`
|
- Tier: `beta-supported`
|
||||||
- Exported helper signatures: 35
|
- Exported helper signatures: 36
|
||||||
|
|
||||||
- `empty () -> (vec f64)`
|
- `empty () -> (vec f64)`
|
||||||
- `append ((values (vec f64)) (value f64)) -> (vec f64)`
|
- `append ((values (vec f64)) (value f64)) -> (vec f64)`
|
||||||
@ -584,6 +584,7 @@ Only exported `(fn ...)` helpers are listed; `(type ...)` aliases and non-export
|
|||||||
- `index_of_option ((values (vec f64)) (target f64)) -> (option i32)`
|
- `index_of_option ((values (vec f64)) (target f64)) -> (option i32)`
|
||||||
- `last_index_of_option ((values (vec f64)) (target f64)) -> (option i32)`
|
- `last_index_of_option ((values (vec f64)) (target f64)) -> (option i32)`
|
||||||
- `contains ((values (vec f64)) (target f64)) -> bool`
|
- `contains ((values (vec f64)) (target f64)) -> bool`
|
||||||
|
- `count_of ((values (vec f64)) (target f64)) -> i32`
|
||||||
- `sum ((values (vec f64))) -> f64`
|
- `sum ((values (vec f64))) -> f64`
|
||||||
- `concat ((left (vec f64)) (right (vec f64))) -> (vec f64)`
|
- `concat ((left (vec f64)) (right (vec f64))) -> (vec f64)`
|
||||||
- `take ((values (vec f64)) (count i32)) -> (vec f64)`
|
- `take ((values (vec f64)) (count i32)) -> (vec f64)`
|
||||||
@ -651,7 +652,7 @@ Only exported `(fn ...)` helpers are listed; `(type ...)` aliases and non-export
|
|||||||
|
|
||||||
- Path: `lib/std/vec_i64.slo`
|
- Path: `lib/std/vec_i64.slo`
|
||||||
- Tier: `beta-supported`
|
- Tier: `beta-supported`
|
||||||
- Exported helper signatures: 31
|
- Exported helper signatures: 36
|
||||||
|
|
||||||
- `empty () -> (vec i64)`
|
- `empty () -> (vec i64)`
|
||||||
- `append ((values (vec i64)) (value i64)) -> (vec i64)`
|
- `append ((values (vec i64)) (value i64)) -> (vec i64)`
|
||||||
@ -672,9 +673,14 @@ Only exported `(fn ...)` helpers are listed; `(type ...)` aliases and non-export
|
|||||||
- `index_of_option ((values (vec i64)) (target i64)) -> (option i32)`
|
- `index_of_option ((values (vec i64)) (target i64)) -> (option i32)`
|
||||||
- `last_index_of_option ((values (vec i64)) (target i64)) -> (option i32)`
|
- `last_index_of_option ((values (vec i64)) (target i64)) -> (option i32)`
|
||||||
- `contains ((values (vec i64)) (target i64)) -> bool`
|
- `contains ((values (vec i64)) (target i64)) -> bool`
|
||||||
|
- `count_of ((values (vec i64)) (target i64)) -> i32`
|
||||||
- `sum ((values (vec i64))) -> i64`
|
- `sum ((values (vec i64))) -> i64`
|
||||||
- `concat ((left (vec i64)) (right (vec i64))) -> (vec i64)`
|
- `concat ((left (vec i64)) (right (vec i64))) -> (vec i64)`
|
||||||
- `take ((values (vec i64)) (count i32)) -> (vec i64)`
|
- `take ((values (vec i64)) (count i32)) -> (vec i64)`
|
||||||
|
- `starts_with ((values (vec i64)) (prefix (vec i64))) -> bool`
|
||||||
|
- `without_prefix ((values (vec i64)) (prefix (vec i64))) -> (vec i64)`
|
||||||
|
- `ends_with ((values (vec i64)) (suffix (vec i64))) -> bool`
|
||||||
|
- `without_suffix ((values (vec i64)) (suffix (vec i64))) -> (vec i64)`
|
||||||
- `drop ((values (vec i64)) (count i32)) -> (vec i64)`
|
- `drop ((values (vec i64)) (count i32)) -> (vec i64)`
|
||||||
- `reverse ((values (vec i64))) -> (vec i64)`
|
- `reverse ((values (vec i64))) -> (vec i64)`
|
||||||
- `subvec ((values (vec i64)) (start i32) (end_exclusive i32)) -> (vec i64)`
|
- `subvec ((values (vec i64)) (start i32) (end_exclusive i32)) -> (vec i64)`
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
(module main)
|
(module main)
|
||||||
|
|
||||||
(import std.vec_f64 (empty append len at singleton append2 append3 pair triple is_empty index_or first_or last_or index_option first_option last_option index_of_option last_index_of_option contains sum concat take starts_with without_prefix ends_with without_suffix drop reverse subvec insert_at insert_range replace_at replace_range remove_at remove_range))
|
(import std.vec_f64 (empty append len at singleton append2 append3 pair triple is_empty index_or first_or last_or index_option first_option last_option index_of_option last_index_of_option contains count_of sum concat take starts_with without_prefix ends_with without_suffix drop reverse subvec insert_at insert_range replace_at replace_range remove_at remove_range))
|
||||||
|
|
||||||
(fn imported_empty_length () -> i32
|
(fn imported_empty_length () -> i32
|
||||||
(len (empty)))
|
(len (empty)))
|
||||||
@ -72,6 +72,16 @@
|
|||||||
false)
|
false)
|
||||||
false))
|
false))
|
||||||
|
|
||||||
|
(fn imported_count_of_helper_ok () -> bool
|
||||||
|
(let values (vec f64) (append3 (pair 10.0 20.0) 30.0 20.0 10.0))
|
||||||
|
(if (= (count_of (empty) 20.0) 0)
|
||||||
|
(if (= (count_of values 99.0) 0)
|
||||||
|
(if (= (count_of values 20.0) 2)
|
||||||
|
(= (count_of values 10.0) 2)
|
||||||
|
false)
|
||||||
|
false)
|
||||||
|
false))
|
||||||
|
|
||||||
(fn imported_starts_with_helper_ok () -> bool
|
(fn imported_starts_with_helper_ok () -> bool
|
||||||
(let values (vec f64) (append2 (triple 10.0 20.0 30.0) 40.0 50.0))
|
(let values (vec f64) (append2 (triple 10.0 20.0 30.0) 40.0 50.0))
|
||||||
(let prefix (vec f64) (pair 10.0 20.0))
|
(let prefix (vec f64) (pair 10.0 20.0))
|
||||||
@ -285,6 +295,7 @@
|
|||||||
(if (imported_builder_helpers_ok)
|
(if (imported_builder_helpers_ok)
|
||||||
(if (imported_query_helpers_ok)
|
(if (imported_query_helpers_ok)
|
||||||
(if (imported_option_query_helpers_ok)
|
(if (imported_option_query_helpers_ok)
|
||||||
|
(if (imported_count_of_helper_ok)
|
||||||
(if (imported_starts_with_helper_ok)
|
(if (imported_starts_with_helper_ok)
|
||||||
(if (imported_ends_with_helper_ok)
|
(if (imported_ends_with_helper_ok)
|
||||||
(if (imported_without_suffix_helper_ok)
|
(if (imported_without_suffix_helper_ok)
|
||||||
@ -314,6 +325,7 @@
|
|||||||
false)
|
false)
|
||||||
false)
|
false)
|
||||||
false)
|
false)
|
||||||
|
false)
|
||||||
false))
|
false))
|
||||||
|
|
||||||
(test "explicit std vec_f64 empty len facade"
|
(test "explicit std vec_f64 empty len facade"
|
||||||
@ -331,6 +343,9 @@
|
|||||||
(test "explicit std vec_f64 option query helpers"
|
(test "explicit std vec_f64 option query helpers"
|
||||||
(imported_option_query_helpers_ok))
|
(imported_option_query_helpers_ok))
|
||||||
|
|
||||||
|
(test "explicit std vec_f64 count_of helper"
|
||||||
|
(imported_count_of_helper_ok))
|
||||||
|
|
||||||
(test "explicit std vec_f64 starts_with helper"
|
(test "explicit std vec_f64 starts_with helper"
|
||||||
(imported_starts_with_helper_ok))
|
(imported_starts_with_helper_ok))
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
(module main)
|
(module main)
|
||||||
|
|
||||||
(import std.vec_i64 (empty append len at singleton append2 append3 pair triple is_empty index_or first_or last_or index_option first_option last_option index_of_option last_index_of_option contains sum concat take drop reverse subvec insert_at insert_range replace_at replace_range remove_at remove_range))
|
(import std.vec_i64 (empty append len at singleton append2 append3 pair triple is_empty index_or first_or last_or index_option first_option last_option index_of_option last_index_of_option contains count_of sum concat take starts_with without_prefix ends_with without_suffix drop reverse subvec insert_at insert_range replace_at replace_range remove_at remove_range))
|
||||||
|
|
||||||
(fn imported_empty_length () -> i32
|
(fn imported_empty_length () -> i32
|
||||||
(len (empty)))
|
(len (empty)))
|
||||||
@ -72,6 +72,92 @@
|
|||||||
false)
|
false)
|
||||||
false))
|
false))
|
||||||
|
|
||||||
|
(fn imported_count_of_helper_ok () -> bool
|
||||||
|
(let values (vec i64) (append3 (pair 10i64 20i64) 30i64 20i64 10i64))
|
||||||
|
(if (= (count_of (empty) 20i64) 0)
|
||||||
|
(if (= (count_of values 99i64) 0)
|
||||||
|
(if (= (count_of values 20i64) 2)
|
||||||
|
(= (count_of values 10i64) 2)
|
||||||
|
false)
|
||||||
|
false)
|
||||||
|
false))
|
||||||
|
|
||||||
|
(fn imported_starts_with_helper_ok () -> bool
|
||||||
|
(let values (vec i64) (append2 (triple 10i64 20i64 30i64) 40i64 50i64))
|
||||||
|
(let prefix (vec i64) (pair 10i64 20i64))
|
||||||
|
(let longer_prefix (vec i64) (append2 values 60i64 70i64))
|
||||||
|
(let mismatched_prefix (vec i64) (pair 20i64 30i64))
|
||||||
|
(if (starts_with values (empty))
|
||||||
|
(if (starts_with values prefix)
|
||||||
|
(if (starts_with values values)
|
||||||
|
(if (starts_with values longer_prefix)
|
||||||
|
false
|
||||||
|
(if (starts_with values mismatched_prefix)
|
||||||
|
false
|
||||||
|
(if (= values (append2 (triple 10i64 20i64 30i64) 40i64 50i64))
|
||||||
|
(= prefix (pair 10i64 20i64))
|
||||||
|
false)))
|
||||||
|
false)
|
||||||
|
false)
|
||||||
|
false))
|
||||||
|
|
||||||
|
(fn imported_ends_with_helper_ok () -> bool
|
||||||
|
(let values (vec i64) (append2 (triple 10i64 20i64 30i64) 40i64 50i64))
|
||||||
|
(let suffix (vec i64) (pair 40i64 50i64))
|
||||||
|
(let longer_suffix (vec i64) (append2 values 60i64 70i64))
|
||||||
|
(let mismatched_suffix (vec i64) (pair 40i64 51i64))
|
||||||
|
(if (ends_with values (empty))
|
||||||
|
(if (ends_with values suffix)
|
||||||
|
(if (ends_with values values)
|
||||||
|
(if (ends_with values longer_suffix)
|
||||||
|
false
|
||||||
|
(if (ends_with values mismatched_suffix)
|
||||||
|
false
|
||||||
|
(if (= values (append2 (triple 10i64 20i64 30i64) 40i64 50i64))
|
||||||
|
(= suffix (pair 40i64 50i64))
|
||||||
|
false)))
|
||||||
|
false)
|
||||||
|
false)
|
||||||
|
false))
|
||||||
|
|
||||||
|
(fn imported_without_suffix_helper_ok () -> bool
|
||||||
|
(let values (vec i64) (append2 (triple 10i64 20i64 30i64) 40i64 50i64))
|
||||||
|
(let suffix (vec i64) (pair 40i64 50i64))
|
||||||
|
(let longer_suffix (vec i64) (append2 values 60i64 70i64))
|
||||||
|
(let mismatched_suffix (vec i64) (pair 40i64 51i64))
|
||||||
|
(if (= (without_suffix values (empty)) values)
|
||||||
|
(if (= (without_suffix values values) (empty))
|
||||||
|
(if (= (without_suffix values suffix) (triple 10i64 20i64 30i64))
|
||||||
|
(if (= (without_suffix values longer_suffix) values)
|
||||||
|
(if (= (without_suffix values mismatched_suffix) values)
|
||||||
|
(if (= values (append2 (triple 10i64 20i64 30i64) 40i64 50i64))
|
||||||
|
(= suffix (pair 40i64 50i64))
|
||||||
|
false)
|
||||||
|
false)
|
||||||
|
false)
|
||||||
|
false)
|
||||||
|
false)
|
||||||
|
false))
|
||||||
|
|
||||||
|
(fn imported_without_prefix_helper_ok () -> bool
|
||||||
|
(let values (vec i64) (append2 (triple 10i64 20i64 30i64) 40i64 50i64))
|
||||||
|
(let prefix (vec i64) (pair 10i64 20i64))
|
||||||
|
(let longer_prefix (vec i64) (append2 values 60i64 70i64))
|
||||||
|
(let mismatched_prefix (vec i64) (pair 10i64 21i64))
|
||||||
|
(if (= (without_prefix values (empty)) values)
|
||||||
|
(if (= (without_prefix values values) (empty))
|
||||||
|
(if (= (without_prefix values prefix) (triple 30i64 40i64 50i64))
|
||||||
|
(if (= (without_prefix values longer_prefix) values)
|
||||||
|
(if (= (without_prefix values mismatched_prefix) values)
|
||||||
|
(if (= values (append2 (triple 10i64 20i64 30i64) 40i64 50i64))
|
||||||
|
(= prefix (pair 10i64 20i64))
|
||||||
|
false)
|
||||||
|
false)
|
||||||
|
false)
|
||||||
|
false)
|
||||||
|
false)
|
||||||
|
false))
|
||||||
|
|
||||||
(fn imported_transform_helpers_ok () -> bool
|
(fn imported_transform_helpers_ok () -> bool
|
||||||
(if (= (concat (empty) (pair 7i64 8i64)) (pair 7i64 8i64))
|
(if (= (concat (empty) (pair 7i64 8i64)) (pair 7i64 8i64))
|
||||||
(if (= (concat (pair 1i64 2i64) (triple 3i64 4i64 5i64)) (append3 (pair 1i64 2i64) 3i64 4i64 5i64))
|
(if (= (concat (pair 1i64 2i64) (triple 3i64 4i64 5i64)) (append3 (pair 1i64 2i64) 3i64 4i64 5i64))
|
||||||
@ -209,6 +295,11 @@
|
|||||||
(if (imported_builder_helpers_ok)
|
(if (imported_builder_helpers_ok)
|
||||||
(if (imported_query_helpers_ok)
|
(if (imported_query_helpers_ok)
|
||||||
(if (imported_option_query_helpers_ok)
|
(if (imported_option_query_helpers_ok)
|
||||||
|
(if (imported_count_of_helper_ok)
|
||||||
|
(if (imported_starts_with_helper_ok)
|
||||||
|
(if (imported_ends_with_helper_ok)
|
||||||
|
(if (imported_without_suffix_helper_ok)
|
||||||
|
(if (imported_without_prefix_helper_ok)
|
||||||
(if (imported_transform_helpers_ok)
|
(if (imported_transform_helpers_ok)
|
||||||
(if (imported_subvec_helper_ok)
|
(if (imported_subvec_helper_ok)
|
||||||
(if (imported_insert_helper_ok)
|
(if (imported_insert_helper_ok)
|
||||||
@ -230,6 +321,11 @@
|
|||||||
false)
|
false)
|
||||||
false)
|
false)
|
||||||
false)
|
false)
|
||||||
|
false)
|
||||||
|
false)
|
||||||
|
false)
|
||||||
|
false)
|
||||||
|
false)
|
||||||
false))
|
false))
|
||||||
|
|
||||||
(test "explicit std vec_i64 empty len facade"
|
(test "explicit std vec_i64 empty len facade"
|
||||||
@ -247,6 +343,21 @@
|
|||||||
(test "explicit std vec_i64 option query helpers"
|
(test "explicit std vec_i64 option query helpers"
|
||||||
(imported_option_query_helpers_ok))
|
(imported_option_query_helpers_ok))
|
||||||
|
|
||||||
|
(test "explicit std vec_i64 count_of helper"
|
||||||
|
(imported_count_of_helper_ok))
|
||||||
|
|
||||||
|
(test "explicit std vec_i64 starts_with helper"
|
||||||
|
(imported_starts_with_helper_ok))
|
||||||
|
|
||||||
|
(test "explicit std vec_i64 ends_with helper"
|
||||||
|
(imported_ends_with_helper_ok))
|
||||||
|
|
||||||
|
(test "explicit std vec_i64 without_suffix helper"
|
||||||
|
(imported_without_suffix_helper_ok))
|
||||||
|
|
||||||
|
(test "explicit std vec_i64 without_prefix helper"
|
||||||
|
(imported_without_prefix_helper_ok))
|
||||||
|
|
||||||
(test "explicit std vec_i64 transform helpers"
|
(test "explicit std vec_i64 transform helpers"
|
||||||
(imported_transform_helpers_ok))
|
(imported_transform_helpers_ok))
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
(module main)
|
(module main)
|
||||||
|
|
||||||
(import std.vec_f64 (empty append len at singleton append2 append3 pair triple is_empty index_or first_or last_or index_option first_option last_option index_of_option last_index_of_option contains sum concat take starts_with without_prefix ends_with without_suffix drop reverse subvec insert_at insert_range replace_at replace_range remove_at remove_range))
|
(import std.vec_f64 (empty append len at singleton append2 append3 pair triple is_empty index_or first_or last_or index_option first_option last_option index_of_option last_index_of_option contains count_of sum concat take starts_with without_prefix ends_with without_suffix drop reverse subvec insert_at insert_range replace_at replace_range remove_at remove_range))
|
||||||
|
|
||||||
(fn imported_empty_length () -> i32
|
(fn imported_empty_length () -> i32
|
||||||
(len (empty)))
|
(len (empty)))
|
||||||
@ -72,6 +72,16 @@
|
|||||||
false)
|
false)
|
||||||
false))
|
false))
|
||||||
|
|
||||||
|
(fn imported_count_of_helper_ok () -> bool
|
||||||
|
(let values (vec f64) (append3 (pair 10.0 20.0) 30.0 20.0 10.0))
|
||||||
|
(if (= (count_of (empty) 20.0) 0)
|
||||||
|
(if (= (count_of values 99.0) 0)
|
||||||
|
(if (= (count_of values 20.0) 2)
|
||||||
|
(= (count_of values 10.0) 2)
|
||||||
|
false)
|
||||||
|
false)
|
||||||
|
false))
|
||||||
|
|
||||||
(fn imported_starts_with_helper_ok () -> bool
|
(fn imported_starts_with_helper_ok () -> bool
|
||||||
(let values (vec f64) (append2 (triple 10.0 20.0 30.0) 40.0 50.0))
|
(let values (vec f64) (append2 (triple 10.0 20.0 30.0) 40.0 50.0))
|
||||||
(let prefix (vec f64) (pair 10.0 20.0))
|
(let prefix (vec f64) (pair 10.0 20.0))
|
||||||
@ -285,6 +295,7 @@
|
|||||||
(if (imported_builder_helpers_ok)
|
(if (imported_builder_helpers_ok)
|
||||||
(if (imported_query_helpers_ok)
|
(if (imported_query_helpers_ok)
|
||||||
(if (imported_option_query_helpers_ok)
|
(if (imported_option_query_helpers_ok)
|
||||||
|
(if (imported_count_of_helper_ok)
|
||||||
(if (imported_starts_with_helper_ok)
|
(if (imported_starts_with_helper_ok)
|
||||||
(if (imported_ends_with_helper_ok)
|
(if (imported_ends_with_helper_ok)
|
||||||
(if (imported_without_suffix_helper_ok)
|
(if (imported_without_suffix_helper_ok)
|
||||||
@ -314,6 +325,7 @@
|
|||||||
false)
|
false)
|
||||||
false)
|
false)
|
||||||
false)
|
false)
|
||||||
|
false)
|
||||||
false))
|
false))
|
||||||
|
|
||||||
(test "explicit std vec_f64 empty len facade"
|
(test "explicit std vec_f64 empty len facade"
|
||||||
@ -331,6 +343,9 @@
|
|||||||
(test "explicit std vec_f64 option query helpers"
|
(test "explicit std vec_f64 option query helpers"
|
||||||
(imported_option_query_helpers_ok))
|
(imported_option_query_helpers_ok))
|
||||||
|
|
||||||
|
(test "explicit std vec_f64 count_of helper"
|
||||||
|
(imported_count_of_helper_ok))
|
||||||
|
|
||||||
(test "explicit std vec_f64 starts_with helper"
|
(test "explicit std vec_f64 starts_with helper"
|
||||||
(imported_starts_with_helper_ok))
|
(imported_starts_with_helper_ok))
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
(module main)
|
(module main)
|
||||||
|
|
||||||
(import std.vec_i64 (empty append len at singleton append2 append3 pair triple is_empty index_or first_or last_or index_option first_option last_option index_of_option last_index_of_option contains sum concat take drop reverse subvec insert_at insert_range replace_at replace_range remove_at remove_range))
|
(import std.vec_i64 (empty append len at singleton append2 append3 pair triple is_empty index_or first_or last_or index_option first_option last_option index_of_option last_index_of_option contains count_of sum concat take starts_with without_prefix ends_with without_suffix drop reverse subvec insert_at insert_range replace_at replace_range remove_at remove_range))
|
||||||
|
|
||||||
(fn imported_empty_length () -> i32
|
(fn imported_empty_length () -> i32
|
||||||
(len (empty)))
|
(len (empty)))
|
||||||
@ -72,6 +72,92 @@
|
|||||||
false)
|
false)
|
||||||
false))
|
false))
|
||||||
|
|
||||||
|
(fn imported_count_of_helper_ok () -> bool
|
||||||
|
(let values (vec i64) (append3 (pair 10i64 20i64) 30i64 20i64 10i64))
|
||||||
|
(if (= (count_of (empty) 20i64) 0)
|
||||||
|
(if (= (count_of values 99i64) 0)
|
||||||
|
(if (= (count_of values 20i64) 2)
|
||||||
|
(= (count_of values 10i64) 2)
|
||||||
|
false)
|
||||||
|
false)
|
||||||
|
false))
|
||||||
|
|
||||||
|
(fn imported_starts_with_helper_ok () -> bool
|
||||||
|
(let values (vec i64) (append2 (triple 10i64 20i64 30i64) 40i64 50i64))
|
||||||
|
(let prefix (vec i64) (pair 10i64 20i64))
|
||||||
|
(let longer_prefix (vec i64) (append2 values 60i64 70i64))
|
||||||
|
(let mismatched_prefix (vec i64) (pair 20i64 30i64))
|
||||||
|
(if (starts_with values (empty))
|
||||||
|
(if (starts_with values prefix)
|
||||||
|
(if (starts_with values values)
|
||||||
|
(if (starts_with values longer_prefix)
|
||||||
|
false
|
||||||
|
(if (starts_with values mismatched_prefix)
|
||||||
|
false
|
||||||
|
(if (= values (append2 (triple 10i64 20i64 30i64) 40i64 50i64))
|
||||||
|
(= prefix (pair 10i64 20i64))
|
||||||
|
false)))
|
||||||
|
false)
|
||||||
|
false)
|
||||||
|
false))
|
||||||
|
|
||||||
|
(fn imported_ends_with_helper_ok () -> bool
|
||||||
|
(let values (vec i64) (append2 (triple 10i64 20i64 30i64) 40i64 50i64))
|
||||||
|
(let suffix (vec i64) (pair 40i64 50i64))
|
||||||
|
(let longer_suffix (vec i64) (append2 values 60i64 70i64))
|
||||||
|
(let mismatched_suffix (vec i64) (pair 40i64 51i64))
|
||||||
|
(if (ends_with values (empty))
|
||||||
|
(if (ends_with values suffix)
|
||||||
|
(if (ends_with values values)
|
||||||
|
(if (ends_with values longer_suffix)
|
||||||
|
false
|
||||||
|
(if (ends_with values mismatched_suffix)
|
||||||
|
false
|
||||||
|
(if (= values (append2 (triple 10i64 20i64 30i64) 40i64 50i64))
|
||||||
|
(= suffix (pair 40i64 50i64))
|
||||||
|
false)))
|
||||||
|
false)
|
||||||
|
false)
|
||||||
|
false))
|
||||||
|
|
||||||
|
(fn imported_without_suffix_helper_ok () -> bool
|
||||||
|
(let values (vec i64) (append2 (triple 10i64 20i64 30i64) 40i64 50i64))
|
||||||
|
(let suffix (vec i64) (pair 40i64 50i64))
|
||||||
|
(let longer_suffix (vec i64) (append2 values 60i64 70i64))
|
||||||
|
(let mismatched_suffix (vec i64) (pair 40i64 51i64))
|
||||||
|
(if (= (without_suffix values (empty)) values)
|
||||||
|
(if (= (without_suffix values values) (empty))
|
||||||
|
(if (= (without_suffix values suffix) (triple 10i64 20i64 30i64))
|
||||||
|
(if (= (without_suffix values longer_suffix) values)
|
||||||
|
(if (= (without_suffix values mismatched_suffix) values)
|
||||||
|
(if (= values (append2 (triple 10i64 20i64 30i64) 40i64 50i64))
|
||||||
|
(= suffix (pair 40i64 50i64))
|
||||||
|
false)
|
||||||
|
false)
|
||||||
|
false)
|
||||||
|
false)
|
||||||
|
false)
|
||||||
|
false))
|
||||||
|
|
||||||
|
(fn imported_without_prefix_helper_ok () -> bool
|
||||||
|
(let values (vec i64) (append2 (triple 10i64 20i64 30i64) 40i64 50i64))
|
||||||
|
(let prefix (vec i64) (pair 10i64 20i64))
|
||||||
|
(let longer_prefix (vec i64) (append2 values 60i64 70i64))
|
||||||
|
(let mismatched_prefix (vec i64) (pair 10i64 21i64))
|
||||||
|
(if (= (without_prefix values (empty)) values)
|
||||||
|
(if (= (without_prefix values values) (empty))
|
||||||
|
(if (= (without_prefix values prefix) (triple 30i64 40i64 50i64))
|
||||||
|
(if (= (without_prefix values longer_prefix) values)
|
||||||
|
(if (= (without_prefix values mismatched_prefix) values)
|
||||||
|
(if (= values (append2 (triple 10i64 20i64 30i64) 40i64 50i64))
|
||||||
|
(= prefix (pair 10i64 20i64))
|
||||||
|
false)
|
||||||
|
false)
|
||||||
|
false)
|
||||||
|
false)
|
||||||
|
false)
|
||||||
|
false))
|
||||||
|
|
||||||
(fn imported_transform_helpers_ok () -> bool
|
(fn imported_transform_helpers_ok () -> bool
|
||||||
(if (= (concat (empty) (pair 7i64 8i64)) (pair 7i64 8i64))
|
(if (= (concat (empty) (pair 7i64 8i64)) (pair 7i64 8i64))
|
||||||
(if (= (concat (pair 1i64 2i64) (triple 3i64 4i64 5i64)) (append3 (pair 1i64 2i64) 3i64 4i64 5i64))
|
(if (= (concat (pair 1i64 2i64) (triple 3i64 4i64 5i64)) (append3 (pair 1i64 2i64) 3i64 4i64 5i64))
|
||||||
@ -209,6 +295,11 @@
|
|||||||
(if (imported_builder_helpers_ok)
|
(if (imported_builder_helpers_ok)
|
||||||
(if (imported_query_helpers_ok)
|
(if (imported_query_helpers_ok)
|
||||||
(if (imported_option_query_helpers_ok)
|
(if (imported_option_query_helpers_ok)
|
||||||
|
(if (imported_count_of_helper_ok)
|
||||||
|
(if (imported_starts_with_helper_ok)
|
||||||
|
(if (imported_ends_with_helper_ok)
|
||||||
|
(if (imported_without_suffix_helper_ok)
|
||||||
|
(if (imported_without_prefix_helper_ok)
|
||||||
(if (imported_transform_helpers_ok)
|
(if (imported_transform_helpers_ok)
|
||||||
(if (imported_subvec_helper_ok)
|
(if (imported_subvec_helper_ok)
|
||||||
(if (imported_insert_helper_ok)
|
(if (imported_insert_helper_ok)
|
||||||
@ -230,6 +321,11 @@
|
|||||||
false)
|
false)
|
||||||
false)
|
false)
|
||||||
false)
|
false)
|
||||||
|
false)
|
||||||
|
false)
|
||||||
|
false)
|
||||||
|
false)
|
||||||
|
false)
|
||||||
false))
|
false))
|
||||||
|
|
||||||
(test "explicit std vec_i64 empty len facade"
|
(test "explicit std vec_i64 empty len facade"
|
||||||
@ -247,6 +343,21 @@
|
|||||||
(test "explicit std vec_i64 option query helpers"
|
(test "explicit std vec_i64 option query helpers"
|
||||||
(imported_option_query_helpers_ok))
|
(imported_option_query_helpers_ok))
|
||||||
|
|
||||||
|
(test "explicit std vec_i64 count_of helper"
|
||||||
|
(imported_count_of_helper_ok))
|
||||||
|
|
||||||
|
(test "explicit std vec_i64 starts_with helper"
|
||||||
|
(imported_starts_with_helper_ok))
|
||||||
|
|
||||||
|
(test "explicit std vec_i64 ends_with helper"
|
||||||
|
(imported_ends_with_helper_ok))
|
||||||
|
|
||||||
|
(test "explicit std vec_i64 without_suffix helper"
|
||||||
|
(imported_without_suffix_helper_ok))
|
||||||
|
|
||||||
|
(test "explicit std vec_i64 without_prefix helper"
|
||||||
|
(imported_without_prefix_helper_ok))
|
||||||
|
|
||||||
(test "explicit std vec_i64 transform helpers"
|
(test "explicit std vec_i64 transform helpers"
|
||||||
(imported_transform_helpers_ok))
|
(imported_transform_helpers_ok))
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
(module main)
|
(module main)
|
||||||
|
|
||||||
(import vec_f64 (empty append len at singleton append2 append3 pair triple is_empty index_or first_or last_or index_option first_option last_option index_of_option last_index_of_option contains sum concat take starts_with without_prefix ends_with without_suffix drop reverse subvec insert_at insert_range replace_at replace_range remove_at remove_range))
|
(import vec_f64 (empty append len at singleton append2 append3 pair triple is_empty index_or first_or last_or index_option first_option last_option index_of_option last_index_of_option contains count_of sum concat take starts_with without_prefix ends_with without_suffix drop reverse subvec insert_at insert_range replace_at replace_range remove_at remove_range))
|
||||||
|
|
||||||
(fn imported_empty_length () -> i32
|
(fn imported_empty_length () -> i32
|
||||||
(len (empty)))
|
(len (empty)))
|
||||||
@ -72,6 +72,16 @@
|
|||||||
false)
|
false)
|
||||||
false))
|
false))
|
||||||
|
|
||||||
|
(fn imported_count_of_helper_ok () -> bool
|
||||||
|
(let values (vec f64) (append3 (pair 10.0 20.0) 30.0 20.0 10.0))
|
||||||
|
(if (= (count_of (empty) 20.0) 0)
|
||||||
|
(if (= (count_of values 99.0) 0)
|
||||||
|
(if (= (count_of values 20.0) 2)
|
||||||
|
(= (count_of values 10.0) 2)
|
||||||
|
false)
|
||||||
|
false)
|
||||||
|
false))
|
||||||
|
|
||||||
(fn imported_starts_with_helper_ok () -> bool
|
(fn imported_starts_with_helper_ok () -> bool
|
||||||
(let values (vec f64) (append2 (triple 10.0 20.0 30.0) 40.0 50.0))
|
(let values (vec f64) (append2 (triple 10.0 20.0 30.0) 40.0 50.0))
|
||||||
(let prefix (vec f64) (pair 10.0 20.0))
|
(let prefix (vec f64) (pair 10.0 20.0))
|
||||||
@ -285,6 +295,7 @@
|
|||||||
(if (imported_builder_helpers_ok)
|
(if (imported_builder_helpers_ok)
|
||||||
(if (imported_query_helpers_ok)
|
(if (imported_query_helpers_ok)
|
||||||
(if (imported_option_query_helpers_ok)
|
(if (imported_option_query_helpers_ok)
|
||||||
|
(if (imported_count_of_helper_ok)
|
||||||
(if (imported_starts_with_helper_ok)
|
(if (imported_starts_with_helper_ok)
|
||||||
(if (imported_ends_with_helper_ok)
|
(if (imported_ends_with_helper_ok)
|
||||||
(if (imported_without_suffix_helper_ok)
|
(if (imported_without_suffix_helper_ok)
|
||||||
@ -314,6 +325,7 @@
|
|||||||
false)
|
false)
|
||||||
false)
|
false)
|
||||||
false)
|
false)
|
||||||
|
false)
|
||||||
false))
|
false))
|
||||||
|
|
||||||
(test "explicit local vec_f64 empty len facade"
|
(test "explicit local vec_f64 empty len facade"
|
||||||
@ -331,6 +343,9 @@
|
|||||||
(test "explicit local vec_f64 option query helpers"
|
(test "explicit local vec_f64 option query helpers"
|
||||||
(imported_option_query_helpers_ok))
|
(imported_option_query_helpers_ok))
|
||||||
|
|
||||||
|
(test "explicit local vec_f64 count_of helper"
|
||||||
|
(imported_count_of_helper_ok))
|
||||||
|
|
||||||
(test "explicit local vec_f64 starts_with helper"
|
(test "explicit local vec_f64 starts_with helper"
|
||||||
(imported_starts_with_helper_ok))
|
(imported_starts_with_helper_ok))
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
(module vec_f64 (export empty append len at singleton append2 append3 pair triple is_empty index_or first_or last_or index_option first_option last_option index_of_option last_index_of_option contains sum concat take starts_with without_prefix ends_with without_suffix drop reverse subvec insert_at insert_range replace_at replace_range remove_at remove_range))
|
(module vec_f64 (export empty append len at singleton append2 append3 pair triple is_empty index_or first_or last_or index_option first_option last_option index_of_option last_index_of_option contains count_of sum concat take starts_with without_prefix ends_with without_suffix drop reverse subvec insert_at insert_range replace_at replace_range remove_at remove_range))
|
||||||
|
|
||||||
(type VecF64 (vec f64))
|
(type VecF64 (vec f64))
|
||||||
|
|
||||||
@ -92,6 +92,16 @@
|
|||||||
(fn contains ((values VecF64) (target f64)) -> bool
|
(fn contains ((values VecF64) (target f64)) -> bool
|
||||||
(contains_loop values target 0 (len values)))
|
(contains_loop values target 0 (len values)))
|
||||||
|
|
||||||
|
(fn count_of_loop ((values VecF64) (target f64) (position i32) (values_len i32) (hits i32)) -> i32
|
||||||
|
(if (< position values_len)
|
||||||
|
(count_of_loop values target (+ position 1) values_len (+ hits (if (= (at values position) target)
|
||||||
|
1
|
||||||
|
0)))
|
||||||
|
hits))
|
||||||
|
|
||||||
|
(fn count_of ((values VecF64) (target f64)) -> i32
|
||||||
|
(count_of_loop values target 0 (len values) 0))
|
||||||
|
|
||||||
(fn sum_loop ((values VecF64) (position i32) (values_len i32) (total f64)) -> f64
|
(fn sum_loop ((values VecF64) (position i32) (values_len i32) (total f64)) -> f64
|
||||||
(if (< position values_len)
|
(if (< position values_len)
|
||||||
(sum_loop values (+ position 1) values_len (+ total (at values position)))
|
(sum_loop values (+ position 1) values_len (+ total (at values position)))
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
(module main)
|
(module main)
|
||||||
|
|
||||||
(import vec_i64 (empty append len at singleton append2 append3 pair triple is_empty index_or first_or last_or index_option first_option last_option index_of_option last_index_of_option contains sum concat take drop reverse subvec insert_at insert_range replace_at replace_range remove_at remove_range))
|
(import vec_i64 (empty append len at singleton append2 append3 pair triple is_empty index_or first_or last_or index_option first_option last_option index_of_option last_index_of_option contains count_of sum concat take starts_with without_prefix ends_with without_suffix drop reverse subvec insert_at insert_range replace_at replace_range remove_at remove_range))
|
||||||
|
|
||||||
(fn imported_empty_length () -> i32
|
(fn imported_empty_length () -> i32
|
||||||
(len (empty)))
|
(len (empty)))
|
||||||
@ -72,6 +72,92 @@
|
|||||||
false)
|
false)
|
||||||
false))
|
false))
|
||||||
|
|
||||||
|
(fn imported_count_of_helper_ok () -> bool
|
||||||
|
(let values (vec i64) (append3 (pair 10i64 20i64) 30i64 20i64 10i64))
|
||||||
|
(if (= (count_of (empty) 20i64) 0)
|
||||||
|
(if (= (count_of values 99i64) 0)
|
||||||
|
(if (= (count_of values 20i64) 2)
|
||||||
|
(= (count_of values 10i64) 2)
|
||||||
|
false)
|
||||||
|
false)
|
||||||
|
false))
|
||||||
|
|
||||||
|
(fn imported_starts_with_helper_ok () -> bool
|
||||||
|
(let values (vec i64) (append2 (triple 10i64 20i64 30i64) 40i64 50i64))
|
||||||
|
(let prefix (vec i64) (pair 10i64 20i64))
|
||||||
|
(let longer_prefix (vec i64) (append2 values 60i64 70i64))
|
||||||
|
(let mismatched_prefix (vec i64) (pair 20i64 30i64))
|
||||||
|
(if (starts_with values (empty))
|
||||||
|
(if (starts_with values prefix)
|
||||||
|
(if (starts_with values values)
|
||||||
|
(if (starts_with values longer_prefix)
|
||||||
|
false
|
||||||
|
(if (starts_with values mismatched_prefix)
|
||||||
|
false
|
||||||
|
(if (= values (append2 (triple 10i64 20i64 30i64) 40i64 50i64))
|
||||||
|
(= prefix (pair 10i64 20i64))
|
||||||
|
false)))
|
||||||
|
false)
|
||||||
|
false)
|
||||||
|
false))
|
||||||
|
|
||||||
|
(fn imported_ends_with_helper_ok () -> bool
|
||||||
|
(let values (vec i64) (append2 (triple 10i64 20i64 30i64) 40i64 50i64))
|
||||||
|
(let suffix (vec i64) (pair 40i64 50i64))
|
||||||
|
(let longer_suffix (vec i64) (append2 values 60i64 70i64))
|
||||||
|
(let mismatched_suffix (vec i64) (pair 40i64 51i64))
|
||||||
|
(if (ends_with values (empty))
|
||||||
|
(if (ends_with values suffix)
|
||||||
|
(if (ends_with values values)
|
||||||
|
(if (ends_with values longer_suffix)
|
||||||
|
false
|
||||||
|
(if (ends_with values mismatched_suffix)
|
||||||
|
false
|
||||||
|
(if (= values (append2 (triple 10i64 20i64 30i64) 40i64 50i64))
|
||||||
|
(= suffix (pair 40i64 50i64))
|
||||||
|
false)))
|
||||||
|
false)
|
||||||
|
false)
|
||||||
|
false))
|
||||||
|
|
||||||
|
(fn imported_without_suffix_helper_ok () -> bool
|
||||||
|
(let values (vec i64) (append2 (triple 10i64 20i64 30i64) 40i64 50i64))
|
||||||
|
(let suffix (vec i64) (pair 40i64 50i64))
|
||||||
|
(let longer_suffix (vec i64) (append2 values 60i64 70i64))
|
||||||
|
(let mismatched_suffix (vec i64) (pair 40i64 51i64))
|
||||||
|
(if (= (without_suffix values (empty)) values)
|
||||||
|
(if (= (without_suffix values values) (empty))
|
||||||
|
(if (= (without_suffix values suffix) (triple 10i64 20i64 30i64))
|
||||||
|
(if (= (without_suffix values longer_suffix) values)
|
||||||
|
(if (= (without_suffix values mismatched_suffix) values)
|
||||||
|
(if (= values (append2 (triple 10i64 20i64 30i64) 40i64 50i64))
|
||||||
|
(= suffix (pair 40i64 50i64))
|
||||||
|
false)
|
||||||
|
false)
|
||||||
|
false)
|
||||||
|
false)
|
||||||
|
false)
|
||||||
|
false))
|
||||||
|
|
||||||
|
(fn imported_without_prefix_helper_ok () -> bool
|
||||||
|
(let values (vec i64) (append2 (triple 10i64 20i64 30i64) 40i64 50i64))
|
||||||
|
(let prefix (vec i64) (pair 10i64 20i64))
|
||||||
|
(let longer_prefix (vec i64) (append2 values 60i64 70i64))
|
||||||
|
(let mismatched_prefix (vec i64) (pair 10i64 21i64))
|
||||||
|
(if (= (without_prefix values (empty)) values)
|
||||||
|
(if (= (without_prefix values values) (empty))
|
||||||
|
(if (= (without_prefix values prefix) (triple 30i64 40i64 50i64))
|
||||||
|
(if (= (without_prefix values longer_prefix) values)
|
||||||
|
(if (= (without_prefix values mismatched_prefix) values)
|
||||||
|
(if (= values (append2 (triple 10i64 20i64 30i64) 40i64 50i64))
|
||||||
|
(= prefix (pair 10i64 20i64))
|
||||||
|
false)
|
||||||
|
false)
|
||||||
|
false)
|
||||||
|
false)
|
||||||
|
false)
|
||||||
|
false))
|
||||||
|
|
||||||
(fn imported_transform_helpers_ok () -> bool
|
(fn imported_transform_helpers_ok () -> bool
|
||||||
(if (= (concat (empty) (pair 7i64 8i64)) (pair 7i64 8i64))
|
(if (= (concat (empty) (pair 7i64 8i64)) (pair 7i64 8i64))
|
||||||
(if (= (concat (pair 1i64 2i64) (triple 3i64 4i64 5i64)) (append3 (pair 1i64 2i64) 3i64 4i64 5i64))
|
(if (= (concat (pair 1i64 2i64) (triple 3i64 4i64 5i64)) (append3 (pair 1i64 2i64) 3i64 4i64 5i64))
|
||||||
@ -209,6 +295,11 @@
|
|||||||
(if (imported_builder_helpers_ok)
|
(if (imported_builder_helpers_ok)
|
||||||
(if (imported_query_helpers_ok)
|
(if (imported_query_helpers_ok)
|
||||||
(if (imported_option_query_helpers_ok)
|
(if (imported_option_query_helpers_ok)
|
||||||
|
(if (imported_count_of_helper_ok)
|
||||||
|
(if (imported_starts_with_helper_ok)
|
||||||
|
(if (imported_ends_with_helper_ok)
|
||||||
|
(if (imported_without_suffix_helper_ok)
|
||||||
|
(if (imported_without_prefix_helper_ok)
|
||||||
(if (imported_transform_helpers_ok)
|
(if (imported_transform_helpers_ok)
|
||||||
(if (imported_subvec_helper_ok)
|
(if (imported_subvec_helper_ok)
|
||||||
(if (imported_insert_helper_ok)
|
(if (imported_insert_helper_ok)
|
||||||
@ -230,6 +321,11 @@
|
|||||||
false)
|
false)
|
||||||
false)
|
false)
|
||||||
false)
|
false)
|
||||||
|
false)
|
||||||
|
false)
|
||||||
|
false)
|
||||||
|
false)
|
||||||
|
false)
|
||||||
false))
|
false))
|
||||||
|
|
||||||
(test "explicit local vec_i64 empty len facade"
|
(test "explicit local vec_i64 empty len facade"
|
||||||
@ -247,6 +343,21 @@
|
|||||||
(test "explicit local vec_i64 option query helpers"
|
(test "explicit local vec_i64 option query helpers"
|
||||||
(imported_option_query_helpers_ok))
|
(imported_option_query_helpers_ok))
|
||||||
|
|
||||||
|
(test "explicit local vec_i64 count_of helper"
|
||||||
|
(imported_count_of_helper_ok))
|
||||||
|
|
||||||
|
(test "explicit local vec_i64 starts_with helper"
|
||||||
|
(imported_starts_with_helper_ok))
|
||||||
|
|
||||||
|
(test "explicit local vec_i64 ends_with helper"
|
||||||
|
(imported_ends_with_helper_ok))
|
||||||
|
|
||||||
|
(test "explicit local vec_i64 without_suffix helper"
|
||||||
|
(imported_without_suffix_helper_ok))
|
||||||
|
|
||||||
|
(test "explicit local vec_i64 without_prefix helper"
|
||||||
|
(imported_without_prefix_helper_ok))
|
||||||
|
|
||||||
(test "explicit local vec_i64 transform helpers"
|
(test "explicit local vec_i64 transform helpers"
|
||||||
(imported_transform_helpers_ok))
|
(imported_transform_helpers_ok))
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
(module vec_i64 (export empty append len at singleton append2 append3 pair triple is_empty index_or first_or last_or index_option first_option last_option index_of_option last_index_of_option contains sum concat take drop reverse subvec insert_at insert_range replace_at replace_range remove_at remove_range))
|
(module vec_i64 (export empty append len at singleton append2 append3 pair triple is_empty index_or first_or last_or index_option first_option last_option index_of_option last_index_of_option contains count_of sum concat take starts_with without_prefix ends_with without_suffix drop reverse subvec insert_at insert_range replace_at replace_range remove_at remove_range))
|
||||||
|
|
||||||
(type VecI64 (vec i64))
|
(type VecI64 (vec i64))
|
||||||
|
|
||||||
@ -92,6 +92,16 @@
|
|||||||
(fn contains ((values VecI64) (target i64)) -> bool
|
(fn contains ((values VecI64) (target i64)) -> bool
|
||||||
(contains_loop values target 0 (len values)))
|
(contains_loop values target 0 (len values)))
|
||||||
|
|
||||||
|
(fn count_of_loop ((values VecI64) (target i64) (position i32) (values_len i32) (hits i32)) -> i32
|
||||||
|
(if (< position values_len)
|
||||||
|
(count_of_loop values target (+ position 1) values_len (+ hits (if (= (at values position) target)
|
||||||
|
1
|
||||||
|
0)))
|
||||||
|
hits))
|
||||||
|
|
||||||
|
(fn count_of ((values VecI64) (target i64)) -> i32
|
||||||
|
(count_of_loop values target 0 (len values) 0))
|
||||||
|
|
||||||
(fn sum_loop ((values VecI64) (position i32) (values_len i32) (total i64)) -> i64
|
(fn sum_loop ((values VecI64) (position i32) (values_len i32) (total i64)) -> i64
|
||||||
(if (< position values_len)
|
(if (< position values_len)
|
||||||
(sum_loop values (+ position 1) values_len (+ total (at values position)))
|
(sum_loop values (+ position 1) values_len (+ total (at values position)))
|
||||||
@ -122,6 +132,29 @@
|
|||||||
(take_loop values 0 count (empty))
|
(take_loop values 0 count (empty))
|
||||||
values)))
|
values)))
|
||||||
|
|
||||||
|
(fn starts_with ((values VecI64) (prefix VecI64)) -> bool
|
||||||
|
(let prefix_len i32 (len prefix))
|
||||||
|
(if (< (len values) prefix_len)
|
||||||
|
false
|
||||||
|
(= (take values prefix_len) prefix)))
|
||||||
|
|
||||||
|
(fn without_prefix ((values VecI64) (prefix VecI64)) -> VecI64
|
||||||
|
(if (starts_with values prefix)
|
||||||
|
(drop values (len prefix))
|
||||||
|
values))
|
||||||
|
|
||||||
|
(fn ends_with ((values VecI64) (suffix VecI64)) -> bool
|
||||||
|
(let values_len i32 (len values))
|
||||||
|
(let suffix_len i32 (len suffix))
|
||||||
|
(if (< values_len suffix_len)
|
||||||
|
false
|
||||||
|
(= (drop values (- values_len suffix_len)) suffix)))
|
||||||
|
|
||||||
|
(fn without_suffix ((values VecI64) (suffix VecI64)) -> VecI64
|
||||||
|
(if (ends_with values suffix)
|
||||||
|
(take values (- (len values) (len suffix)))
|
||||||
|
values))
|
||||||
|
|
||||||
(fn drop_loop ((values VecI64) (position i32) (values_len i32) (result VecI64)) -> VecI64
|
(fn drop_loop ((values VecI64) (position i32) (values_len i32) (result VecI64)) -> VecI64
|
||||||
(if (< position values_len)
|
(if (< position values_len)
|
||||||
(drop_loop values (+ position 1) values_len (append result (at values position)))
|
(drop_loop values (+ position 1) values_len (append result (at values position)))
|
||||||
|
|||||||
@ -29,9 +29,10 @@ updated through `exp-65`; env option helpers updated through `exp-110`; fs
|
|||||||
fallback helpers updated through `exp-63` and `exp-70`; fs typed read helpers
|
fallback helpers updated through `exp-63` and `exp-70`; fs typed read helpers
|
||||||
updated through `exp-66`; fs option helpers updated through `exp-110`; num
|
updated through `exp-66`; fs option helpers updated through `exp-110`; num
|
||||||
fallback helpers updated through `exp-64`; concrete vec helpers updated
|
fallback helpers updated through `exp-64`; concrete vec helpers updated
|
||||||
through released `exp-108`, including the current concrete
|
through `1.0.0-beta.12`, including the current concrete
|
||||||
`std/vec_string.slo`, `std/vec_f64.slo`, and `std/vec_bool.slo`
|
`std/vec_string.slo`, `std/vec_f64.slo`, and `std/vec_bool.slo`
|
||||||
prefix/suffix helper scopes; `1.0.0-beta.6` networking foundation work releases
|
prefix/suffix helper scopes, `std/vec_i64.slo` query and prefix/suffix parity,
|
||||||
|
and `std/vec_f64.slo` query parity; `1.0.0-beta.6` networking foundation work releases
|
||||||
`std/net.slo` as an experimental loopback TCP facade over matching
|
`std/net.slo` as an experimental loopback TCP facade over matching
|
||||||
compiler-known runtime calls; `1.0.0-beta.7` serialization work releases
|
compiler-known runtime calls; `1.0.0-beta.7` serialization work releases
|
||||||
`std/json.slo` as an experimental JSON text-construction facade over
|
`std/json.slo` as an experimental JSON text-construction facade over
|
||||||
@ -139,8 +140,12 @@ family; exp-103 stages `std/vec_f64.slo` as a concrete source-authored
|
|||||||
`(vec f64)` baseline facade over the sibling `std.vec.f64` runtime family;
|
`(vec f64)` baseline facade over the sibling `std.vec.f64` runtime family;
|
||||||
exp-104 stages `std/vec_bool.slo` as a concrete source-authored
|
exp-104 stages `std/vec_bool.slo` as a concrete source-authored
|
||||||
`(vec bool)` baseline facade over the sibling `std.vec.bool` runtime family;
|
`(vec bool)` baseline facade over the sibling `std.vec.bool` runtime family;
|
||||||
and exp-108 broadens all three non-i32 concrete collection lanes with one
|
exp-108 broadens all three non-i32 concrete collection lanes with one
|
||||||
connected prefix/suffix helper package.
|
connected prefix/suffix helper package; and `1.0.0-beta.12` fills concrete
|
||||||
|
vector source parity by adding `count_of`, `starts_with`, `without_prefix`,
|
||||||
|
`ends_with`, and `without_suffix` to `std/vec_i64.slo`, plus `count_of` to
|
||||||
|
`std/vec_f64.slo`, matching the existing concrete lane behavior for empty
|
||||||
|
prefixes/suffixes, mismatches, exact removals, and repeated exact counts.
|
||||||
It does not
|
It does not
|
||||||
make the standard library fully self-hosted, does not add automatic
|
make the standard library fully self-hosted, does not add automatic
|
||||||
standard-library imports, and does not replace the compiler-known `std.*`
|
standard-library imports, and does not replace the compiler-known `std.*`
|
||||||
@ -148,8 +153,8 @@ standard-runtime calls cataloged in `../STANDARD_RUNTIME.md`.
|
|||||||
|
|
||||||
The current `.slo` files use flat module declarations such as `(module math)`.
|
The current `.slo` files use flat module declarations such as `(module math)`.
|
||||||
For exp-44, exp-45, exp-47, exp-48, exp-49, exp-52, exp-53, exp-76, exp-94,
|
For exp-44, exp-45, exp-47, exp-48, exp-49, exp-52, exp-53, exp-76, exp-94,
|
||||||
exp-96, exp-97, exp-98, exp-99, exp-103, exp-104, exp-105, exp-107, and
|
exp-96, exp-97, exp-98, exp-99, exp-103, exp-104, exp-105, exp-107, exp-108,
|
||||||
exp-108, `std/math.slo`, `std/result.slo`,
|
and `1.0.0-beta.12`, `std/math.slo`, `std/result.slo`,
|
||||||
`std/option.slo`, `std/time.slo`, `std/random.slo`, `std/env.slo`,
|
`std/option.slo`, `std/time.slo`, `std/random.slo`, `std/env.slo`,
|
||||||
`std/fs.slo`, `std/net.slo`, `std/json.slo`, `std/string.slo`, `std/num.slo`,
|
`std/fs.slo`, `std/net.slo`, `std/json.slo`, `std/string.slo`, `std/num.slo`,
|
||||||
`std/io.slo`, `std/process.slo`, `std/cli.slo`, `std/vec_i32.slo`,
|
`std/io.slo`, `std/process.slo`, `std/cli.slo`, `std/vec_i32.slo`,
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
(module vec_f64 (export empty append len at singleton append2 append3 pair triple is_empty index_or first_or last_or index_option first_option last_option index_of_option last_index_of_option contains sum concat take starts_with without_prefix ends_with without_suffix drop reverse subvec insert_at insert_range replace_at replace_range remove_at remove_range))
|
(module vec_f64 (export empty append len at singleton append2 append3 pair triple is_empty index_or first_or last_or index_option first_option last_option index_of_option last_index_of_option contains count_of sum concat take starts_with without_prefix ends_with without_suffix drop reverse subvec insert_at insert_range replace_at replace_range remove_at remove_range))
|
||||||
|
|
||||||
(type VecF64 (vec f64))
|
(type VecF64 (vec f64))
|
||||||
|
|
||||||
@ -92,6 +92,16 @@
|
|||||||
(fn contains ((values VecF64) (target f64)) -> bool
|
(fn contains ((values VecF64) (target f64)) -> bool
|
||||||
(contains_loop values target 0 (len values)))
|
(contains_loop values target 0 (len values)))
|
||||||
|
|
||||||
|
(fn count_of_loop ((values VecF64) (target f64) (position i32) (values_len i32) (hits i32)) -> i32
|
||||||
|
(if (< position values_len)
|
||||||
|
(count_of_loop values target (+ position 1) values_len (+ hits (if (= (at values position) target)
|
||||||
|
1
|
||||||
|
0)))
|
||||||
|
hits))
|
||||||
|
|
||||||
|
(fn count_of ((values VecF64) (target f64)) -> i32
|
||||||
|
(count_of_loop values target 0 (len values) 0))
|
||||||
|
|
||||||
(fn sum_loop ((values VecF64) (position i32) (values_len i32) (total f64)) -> f64
|
(fn sum_loop ((values VecF64) (position i32) (values_len i32) (total f64)) -> f64
|
||||||
(if (< position values_len)
|
(if (< position values_len)
|
||||||
(sum_loop values (+ position 1) values_len (+ total (at values position)))
|
(sum_loop values (+ position 1) values_len (+ total (at values position)))
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
(module vec_i64 (export empty append len at singleton append2 append3 pair triple is_empty index_or first_or last_or index_option first_option last_option index_of_option last_index_of_option contains sum concat take drop reverse subvec insert_at insert_range replace_at replace_range remove_at remove_range))
|
(module vec_i64 (export empty append len at singleton append2 append3 pair triple is_empty index_or first_or last_or index_option first_option last_option index_of_option last_index_of_option contains count_of sum concat take starts_with without_prefix ends_with without_suffix drop reverse subvec insert_at insert_range replace_at replace_range remove_at remove_range))
|
||||||
|
|
||||||
(type VecI64 (vec i64))
|
(type VecI64 (vec i64))
|
||||||
|
|
||||||
@ -92,6 +92,16 @@
|
|||||||
(fn contains ((values VecI64) (target i64)) -> bool
|
(fn contains ((values VecI64) (target i64)) -> bool
|
||||||
(contains_loop values target 0 (len values)))
|
(contains_loop values target 0 (len values)))
|
||||||
|
|
||||||
|
(fn count_of_loop ((values VecI64) (target i64) (position i32) (values_len i32) (hits i32)) -> i32
|
||||||
|
(if (< position values_len)
|
||||||
|
(count_of_loop values target (+ position 1) values_len (+ hits (if (= (at values position) target)
|
||||||
|
1
|
||||||
|
0)))
|
||||||
|
hits))
|
||||||
|
|
||||||
|
(fn count_of ((values VecI64) (target i64)) -> i32
|
||||||
|
(count_of_loop values target 0 (len values) 0))
|
||||||
|
|
||||||
(fn sum_loop ((values VecI64) (position i32) (values_len i32) (total i64)) -> i64
|
(fn sum_loop ((values VecI64) (position i32) (values_len i32) (total i64)) -> i64
|
||||||
(if (< position values_len)
|
(if (< position values_len)
|
||||||
(sum_loop values (+ position 1) values_len (+ total (at values position)))
|
(sum_loop values (+ position 1) values_len (+ total (at values position)))
|
||||||
@ -122,6 +132,29 @@
|
|||||||
(take_loop values 0 count (empty))
|
(take_loop values 0 count (empty))
|
||||||
values)))
|
values)))
|
||||||
|
|
||||||
|
(fn starts_with ((values VecI64) (prefix VecI64)) -> bool
|
||||||
|
(let prefix_len i32 (len prefix))
|
||||||
|
(if (< (len values) prefix_len)
|
||||||
|
false
|
||||||
|
(= (take values prefix_len) prefix)))
|
||||||
|
|
||||||
|
(fn without_prefix ((values VecI64) (prefix VecI64)) -> VecI64
|
||||||
|
(if (starts_with values prefix)
|
||||||
|
(drop values (len prefix))
|
||||||
|
values))
|
||||||
|
|
||||||
|
(fn ends_with ((values VecI64) (suffix VecI64)) -> bool
|
||||||
|
(let values_len i32 (len values))
|
||||||
|
(let suffix_len i32 (len suffix))
|
||||||
|
(if (< values_len suffix_len)
|
||||||
|
false
|
||||||
|
(= (drop values (- values_len suffix_len)) suffix)))
|
||||||
|
|
||||||
|
(fn without_suffix ((values VecI64) (suffix VecI64)) -> VecI64
|
||||||
|
(if (ends_with values suffix)
|
||||||
|
(take values (- (len values) (len suffix)))
|
||||||
|
values))
|
||||||
|
|
||||||
(fn drop_loop ((values VecI64) (position i32) (values_len i32) (result VecI64)) -> VecI64
|
(fn drop_loop ((values VecI64) (position i32) (values_len i32) (result VecI64)) -> VecI64
|
||||||
(if (< position values_len)
|
(if (< position values_len)
|
||||||
(drop_loop values (+ position 1) values_len (append result (at values position)))
|
(drop_loop values (+ position 1) values_len (append result (at values position)))
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user