enlightware / enlightware/ferlium

Move `std` toward qualified modules and shrink prelude

Open
#118 0 comments 0 reactions 0 assignees View on GitHub
std
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.