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 Author
ZE-001 Base Language In Progress @vknabel
ZE-002 The Cavefile In Progress @vknabel
ZE-003 Named Data Construction Rejected @vknabel
ZE-004 Variadic Arguments Draft @vknabel
ZE-005 Mixin Type Declarations Draft @vknabel
ZE-006 Attribute-Based Parsing System Draft @vknabel
ZE-007 Attribute Binding Draft @vknabel
ZE-008 Error Handling In Progress @vknabel
ZE-009 Option Values In Progress @vknabel
ZE-010 Iterable In Progress @vknabel
ZE-011 Zirric CLI In Progress @vknabel
ZE-012 Type and Returns Sugar In Progress @vknabel
ZE-013 Mutability and Constants In Progress @vknabel
ZE-014 Attribute and Declaration Keywords Implemented @vknabel
ZE-015 Extern Type Constructors Draft @vknabel

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.