enlightware / enlightware/ferlium
Move `std` toward qualified modules and shrink prelude
- Dominant language
- Rust
- Stars
- 14
- Forks
- 2
- PR merge metrics
- No merged PRs in 30d
Description
The current std design exposes many concrete operations in the global prelude. In a language with full-module type inference, bare identifiers are scarce and should ideally be reserved for generic, high-frequency operations. Because of that, we have long names like `string_starts_with`.
We should explore moving std toward a more qualified structure, for example:
- `string::trim`
- `string::starts_with`
- `string::ends_with`
- `string::slice`
- `array::slice`
- `array::append`
while keeping the prelude focused on generic/core vocabulary such as:
- `map`
- `filter`
- `iter`
- `next`
- `join`
- `split`
Goals:
- reduce pressure on the global unqualified namespace
- make concrete APIs easier to discover by domain
- keep short unprefixed names available for principled generic operations
- improve long-term std surface consistency
Notes:
- this likely requires richer std build/bootstrap machinery
- this is a language-surface design direction, not just an internal refactor
Open design questions:
- what belongs in the permanent prelude vs qualified std modules?
- how should native std modules and Ferlium prelude modules be composed during std construction?
Contributor guide
Research direction
No files or tests are named. Start by locating the existing standard-library construction, native std modules, and Ferlium prelude modules, then trace how they are composed during bootstrap. Done means the qualified-module and permanent-prelude boundary, along with the required build composition, has a documented and agreed design.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- compilers
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100