Zirric Evolution Proposals

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 v0.1.0
ZE-002 The Cavefile Implemented v0.1.0
ZE-003 Named Data Construction Rejected
ZE-004 Variadic Attributes Rejected
ZE-005 Mixin Type Declarations Draft Outdated
ZE-006 Attribute-Based Parsing System Rejected Superseded by ZE-021
ZE-007 Attribute Binding Draft
ZE-008 Error Handling Implemented v0.1.0
ZE-009 Option Values Implemented v0.1.0
ZE-010 Iterable Implemented v0.1.0
ZE-011 Zirric CLI Implemented v0.1.0
ZE-012 Type and Returns Sugar Rejected
ZE-013 Mutability and Constants Implemented v0.1.0
ZE-014 Attribute and Declaration Keywords Implemented v0.1.0
ZE-015 Extern Type Constructors Draft
ZE-016 Unified Function and Closure Syntax Implemented v0.1.0
ZE-017 Type Hints and Type Matching Implemented v0.1.0
ZE-018 I/O, Formatting, and OS Implemented v0.1.0
ZE-019 Result and Option Sugar Implemented v0.1.0
ZE-020 Standard Library Implemented v0.1.0
ZE-021 Encoding and Decoding Implemented v0.1.0
ZE-022 Static Checks Implemented v0.1.0
ZE-023 Code Formatting Implemented v0.1.0
ZE-024 Qualified Module Names Implemented v0.1.0

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.