Skip to content

RFC [Number]: [Proposal Title] ​

Reference: See Full Example for how to write an RFC.

Summary ​

Summarize the problem this RFC aims to solve and the proposed solution in 1-2 sentences.

Motivation ​

Why is this feature/change needed? ​

Explain why this RFC is necessary, what problem it solves or what need it fulfills.

Current Problem ​

Describe the issues with the current state, with specific examples if available.

Proposal ​

Core Design ​

Describe the proposed solution, including core concepts and data structures.

Examples ​

Provide code examples to illustrate how the proposal works:

yaoxiang
# Example code

Syntax Changes ​

If the proposal involves syntax changes, list before/after comparisons:

BeforeAfter
Syntax ASyntax B

Detailed Design ​

Type System Impact ​

Describe the impact on the type system, whether new types or type constraints are introduced.

Runtime Behavior ​

Describe changes in runtime behavior (if any).

Compiler Changes ​

List compiler components that need to be modified.

Backward Compatibility ​

Evaluate whether this is backward compatible and how to handle existing code.

Trade-offs ​

Advantages ​

  • List the benefits of adopting this proposal

Disadvantages ​

  • List the drawbacks or risks of this proposal

Alternative Solutions ​

List considered alternatives and why they were not chosen.

Implementation Strategy ​

Dependencies ​

List other RFCs or features this RFC depends on.

Risks ​

Identify potential risks in the implementation.

Open Questions ​

List issues that need further discussion.

Format:

markdown
- [ ] Issue description (@username: additional notes)

Appendix (Optional) ​

Appendix A: Design Discussion Log ​

Used to record detailed discussions during the design decision process.

Discussion Template ​

markdown
### [Discussion Topic]

> **Status**: [Open | Resolved] **Initiator**: @username **Date**: YYYY-MM-DD

#### Problem Description

[Describe the issue to be discussed]

#### Options

| Option | Description | Pros | Cons |
| ------ | ----------- | ---- | ---- |
| A      | ...         | ...  | ...  |
| B      | ...         | ...  | ...  |

#### Discussion Log

- [Date] @username: [comment]
- [Date] @username: [comment]

#### Resolution

[Final decision and rationale]

Discussion Management Rules ​

StageAction
In ProgressRecord in appendix, keep open
ResolvedUpdate resolution, mark status, update main content
AbandonedMark reason, keep record for reference

Important: After discussion is concluded, the main content must be updated! Discussion records can be kept as historical reference.


Appendix B: Design Decision Record ​

Records established design decisions and their rationale.

DecisionResolutionDateRecorder
............

Appendix C: Glossary ​

TermDefinition
......

References ​

  • Links to related documentation or external resources
  • Similar implementations or references from other languages