Skip to content

RFC Template

Use this template for RFCs in docs/RFCs/. Keep the RFC focused: one coherent proposal, with clear motivation, semantics, and implementation strategy.

Title

RFC NNN: \<short descriptive title>

Status

  • Status: Draft | Planned | In Progress | Blocked | Deferred | Done | Superseded by RFC NNN | Rejected
  • Author(s): \<name/handle>
  • Issue: \<link to issue>
  • RFC PR: \<link to PR>

Summary

One paragraph describing what this RFC proposes.

Motivation

Explain the problem and why it matters:

  • What’s painful/confusing today?
  • Who benefits?
  • Why is this better than the status quo?

Guide-level explanation (how users think about it)

Explain the feature as a user would understand it. Include examples.

# Example code

Reference-level explanation (precise rules)

Define exact semantics, typing rules, and edge cases.

  • Syntax changes (grammar-ish description, if needed)
  • Type checking rules
  • Runtime behavior
  • Errors / diagnostics

Design details

Syntax

Describe new/changed syntax.

Semantics

Describe behavior precisely.

Interaction with existing features

How this composes with:

  • async/await
  • traits/derives
  • imports/modules
  • error handling (Result/Option)
  • Rust interop

Compatibility / migration

  • Is this breaking?
  • If yes, provide a migration strategy and examples.

Alternatives considered

List plausible alternatives and why they’re worse.

Drawbacks

What does this cost (complexity, performance, mental model)?

Implementation plan

Concrete steps (expected touchpoints):

  • Frontend changes (lexer/parser/AST/typechecker)
  • Backend changes (IR/lowering/emission)
  • Stdlib/runtime changes
  • Tooling changes (fmt/test/LSP)
  • Tests to add (unit/integration/fixtures)

Unresolved questions

Open questions to decide before implementation lands.