The prelude predates the allocator; a second tier waits on macros
This commit is contained in:
parent
f61bda2bef
commit
2f140ae54a
23
NEXT.md
23
NEXT.md
@ -490,6 +490,29 @@ hand-written backend is needed at all.
|
|||||||
|
|
||||||
It is research first, not building. The batch below stays valid and none of it is blocked by the question.
|
It is research first, not building. The batch below stays valid and none of it is blocked by the question.
|
||||||
|
|
||||||
|
## Queued: a second tier of the standard library, after macros
|
||||||
|
|
||||||
|
Blocked only on `lib/prelude.ml`, which the macro lane holds. Start it when that merges.
|
||||||
|
|
||||||
|
**The gap, stated plainly: the whole prelude predates the allocator.** All 44 functions are slice-based and
|
||||||
|
allocation-free, because when they were written there was nothing to allocate from. `Vec` and `Map` now exist, so a
|
||||||
|
second tier is possible — functions that *return new things* rather than writing into a buffer the caller supplies.
|
||||||
|
|
||||||
|
Wanted, in rough order of how often it will be missed:
|
||||||
|
|
||||||
|
- **String building.** A `Vec u8` builder, `join`, and a `split` that returns a `Vec` instead of the
|
||||||
|
`split-next!`/`split-on-byte` iterator dance the current one requires.
|
||||||
|
- **`Vec` algorithms** — `map`, `filter`, `reduce`, and a `sort` that is not integers-only. `sort-i32!` is the only
|
||||||
|
sort there is.
|
||||||
|
- **`Map` helpers** — keys, values.
|
||||||
|
- **Maths gaps**: `atan2`, `pow`, `clamp`. `sin-f32`/`cos-f32` exist with the caveat that IEEE-754 does not make them
|
||||||
|
correctly rounded, so native and wasm32 may differ bit for bit; anything added here inherits that and should say so.
|
||||||
|
- **Number formatting with a precision.** Note the sharp edge that constrains this: `flan_i64_to_bytes` and friends
|
||||||
|
share one `static char scratch[64]`, so two formatted numbers cannot be held at once. A `Vec`-returning formatter
|
||||||
|
would not have that problem, which is an argument for building it.
|
||||||
|
|
||||||
|
Already present and easy to miss: an **EDN parser**, at `vendor/edn/edn.flan`.
|
||||||
|
|
||||||
## The next batch, in order
|
## The next batch, in order
|
||||||
|
|
||||||
Agreed at the end of 2026-09-12. Ordered by priority, not by size. Items 1-3 and 5-6 want the compiler core and should
|
Agreed at the end of 2026-09-12. Ordered by priority, not by size. Items 1-3 and 5-6 want the compiler core and should
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user