Zirric Evolution Proposals (ZE)

This directory contains Zirric Evolution Proposals. Each proposal documents a change
or addition to the Zirric language or ecosystem. Take care to notice the status of each proposal.

  • Draft: The proposal is in an early stage and may undergo significant changes.
  • In Progress: The proposal is being actively worked on and refined.
  • Implemented: The proposal has been implemented in the Zirric language or ecosystem.
  • Rejected: The proposal has been reviewed and decided against implementation.

Proposals

Proposal Title Status Info
ZE-001 Base Language Implemented
ZE-002 The Cavefile In Progress
ZE-003 Named Data Construction Rejected
ZE-004 Variadic Arguments Draft Outdated
ZE-005 Mixin Type Declarations Draft Outdated
ZE-006 Attribute-Based Parsing System Draft Outdated
ZE-007 Attribute Binding Draft Outdated
ZE-008 Error Handling Implemented
ZE-009 Option Values Implemented
ZE-010 Iterable In Progress Outdated
ZE-011 Zirric CLI Implemented
ZE-012 Type and Returns Sugar Rejected
ZE-013 Mutability and Constants Implemented
ZE-014 Attribute and Declaration Keywords Implemented
ZE-015 Extern Type Constructors Draft Outdated
ZE-016 Unified Function and Closure Syntax Implemented
ZE-017 Type Hints and Type Matching Implemented
ZE-018 I/O, Formatting, and OS Implemented
ZE-019 Result and Option Sugar Draft Outdated

Submitting Proposals

To create a new proposal:

  1. Copy ZE-000-template.md.
  2. Rename the file to follow the scheme ZE-000-name-of-the-proposal.md.
  3. Link the proposal in this index file.
  4. Add an entry to the tasks/docmd/docmd.config.js.
  5. Fill out the template and open a pull request.

Caveats

Please note that proposals are subject to change and may not be implemented as initially described.

The presented EBNF grammar snippets are only used for illustration purposes and may not reflect the final syntax of the language. They are intended to convey the general structure and ideas of the proposals, rather than serving as exact specifications. In the end, the parser implementation is the single source of truth for the language syntax, while the tree-sitter grammar serves as a more compact reference for the structure of the language, while not being an exact specification.

When Zirric undergoes significant changes, existing proposals will most likely not be updated.
Only in rare cases, existing proposals might be updated to avoid confusion. This effort will only be made for important or related proposals.

In the end, proposals are a witness of their time and should be treated as such. They provide insight into the evolution of the language and the rationale behind certain design decisions, but they are not necessarily indicative of the current state or future direction of the language.