-
Notifications
You must be signed in to change notification settings - Fork 40
Open
Labels
largeWeeksWeeksp1We can live without it but it's very importantWe can live without it but it's very importanttaskMake it workMake it work
Description
Goal
Create a single P0 tracking issue for all stdlib tasks required to make Neva consistently usable before broader adoption.
Why this tracker exists
These tasks are highly coupled (API shape, naming, stream semantics, sync/flow ergonomics, package boundaries). Progress should be tracked in one place to avoid context loss across separate implementation windows and autonomous-agent runs.
Baseline decisions already made (current context)
During the latest stdlib cleanup pass (see #1031), we fixed part of the naming/API inconsistencies and synced docs.
- Port naming baseline:
resis the primary output,erris failure output,datais input-only generic placeholder (do not usedataas outport name). - Stream iteration baseline: keep
streams.ForEachas the canonical side-effect iterator; duplicate builtin stream-loop API was removed. - Documentation baseline:
docs/style_guide.mdanddocs/qna.mdwere updated and should be treated as current source of truth for naming/idiomatic usage.
These decisions are considered accepted unless explicitly superseded in a dedicated issue/PR.
Recommended start context for autonomous work
Do not duplicate long context from repository docs. Start by reading:
AGENTS.mdCONTRIBUTING.mdARCHITECTURE.mddocs/style_guide.mddocs/qna.md
Then inspect relevant code in:
std/internal/runtime/funcs/examples/ande2e/
Sub-issues (linked scope)
- Revisit stdlib port naming conventions to maximize chaining/unnamed-port ergonomics #983 (closed; baseline naming cleanup already landed in Cleanup streams API and standardize stdlib port naming #1031)
- Proposal: model error as union (Result-like) instead of struct-style payload #1044 (closed, out of scope)
- Internal error representation: tagged union model (keep res/err contract) #1045
- Figure out best stdlib structure for compiler and user #684
- Move Lock to sync #657
-
syncpackage API #864 - Component Output Design: Minimal Outputs vs. Context-Preserving Outputs #987
- Reducer interface ports naming #986
- Re-think the need for overloaded
strings.Join#1014 - String <-> Stream conversion policy (bytes vs runes vs graphemes) #1037
- Stream / Collection Converters: Design & Placement #583
- Consider adding
byte(orbytes) data type #28 - More number/numeric types #904
- Type casting as a language feature #755
- Redesign of
stream#908 - Brainstorm
Resulttype as alternative toerroutport #911 - All stream processors must have
erroutport #861 - No way to interrupt stream producing (iterator protocol/interface, "early return" for stream processing) #666
- Proposal:
State<T>#989 - Proposal:
While<T>Higher-Order Component for Iterative State Transitions #990 -
streams.Find#647 -
streams.Has#648 -
Collatecomponent #650 - Buffer Component API #671
- IO API - Neva vs Go (descriptions and explicit opening/closing) #790
- Implement
ospackage for stdlib #586 - Package with mutable APIs |
mutpackage #664
Exit criteria for this tracker
- stdlib package taxonomy is explicit and documented (core/prelude/domain or approved alternative);
- stream/sync/flow APIs are coherent and documented;
- major naming/API inconsistencies resolved;
- examples/e2e/docs aligned with final API decisions.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
largeWeeksWeeksp1We can live without it but it's very importantWe can live without it but it's very importanttaskMake it workMake it work