Roadmap
Features under consideration. No timelines — items land if a real use case shows up; otherwise they sit here. The point of this page is to make explicit what’s not in the language and why, without sprinkling those notes throughout the reference.
Likely
@deprecated(message?)attribute. Marks a constant as deprecated; generators emit a target-language deprecation marker (Rust#[deprecated], JSDoc@deprecated, etc.). Cut from v1 because it adds surface without solving a problem most projects hit; will revisit if real demand shows up.use a::b::C as Drename imports. Rust-style; useful for resolving collisions between same-named imports. Lands when the collision case becomes painful in real projects.- Configurable formatter column budget. Currently fixed at 100.
Easy to add via
primate.tomlif anyone wants a different number. /regex/flagsregex literal syntax. Considered and deferred in RFC 0004 in favor of the same string-with-(?i)form that Rust and Python use. If inline-flag ergonomics become a recurring papercut, revisit.
Maybe
newtypefor nominal types.type Port = u32is structural:Portandu32are interchangeable. Anewtype Port = u32would make them distinct, catching “I passed aCountwhere I meant aPort” in target-language code. The Rust story is clean (pub struct Port(pub u32);); the TypeScript story (branded types) is awkward; the Python story (NewType) is type-checker-only. Lands if a real project needs the discipline.- Other unit-suffix categories. Today only byte-size suffixes are
recognized on integer literals.
%(percent),Hz(frequency),m/cm/km(length), currency codes — each could exist as a parsing affordance. Picking one without a principled criterion is arbitrary, so we don’t.
Probably not
- Glob imports (
use a::*). Mass-import is a name-shadowing hazard; explicituselines make collisions and provenance clear. - Block comments (
/* */). One line, one doc, one file-doc. - Significant whitespace. Newlines terminate; indentation is cosmetic.
- Sigils on names (
$X,@X). Plain identifiers.
Out of scope
- Expressions and arithmetic. primate is a constants language. If you need to compute a value, do it in your build script and paste the result.
- String interpolation. Constants only; low value.
- Statement-terminating semicolons. Newlines work and there’s no expression context where ASI-style ambiguity could appear.