Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cadence Language Formal Specification #3599

Open
Tracked by #3623
j1010001 opened this issue Oct 7, 2024 · 0 comments
Open
Tracked by #3623

Cadence Language Formal Specification #3599

j1010001 opened this issue Oct 7, 2024 · 0 comments
Assignees
Labels
Documentation Improvements or additions to documentation

Comments

@j1010001
Copy link
Member

j1010001 commented Oct 7, 2024

Why (Objective)

Formal language specification serves as an authoritative guide for its implementation and usage which benefits the maintainers of the language and the developer community that uses it.

More specifically, the benefits are:

  1. Consistency in Implementation builds trust - the spec makes it easier for maintainers to implement for new platforms/environments & for developers to rely o predictable behaviour.
  2. Language Evolution -
  3. Productivity of the language implementation - spec make it faster to optimize the implementation and fix bugs as the maintainers don't need to second-guess the original intention behind the existing implementation.
  4. Foundation for Dev tools - develop tools like compilers, debuggers, interpretters and static analyzers is easier to do for maintainers. Similarly, spec makes it easier to build tools like IDEs, auto-complete, linting, error-checking tools etc, making the devs using the language more productive and their code less error-prone.

How will we measure success (Key Results) ?

  • Cadence Formal Specification draft becomes the authoritative source for the Cadence language behaviour, that the Cadence engineering team can start adding to.
  • Define & clarify future milestones
  • 100% of the language is covered by the draft outline of the spec

Estimate

Scope:

  • Complete outline for the spec.

  • Review existing language reference and transfer to spec, so hat the spec can become the authoritative source for reviewing the implementation behaviour.

  • Stretch ? Update existing EBNF grammar (derived from Antler grammar): https://github.com/onflow/cadence/blob/master/docs/cadence.ebnf

DACI

Role Assigned
Driver technical: @jsproz, EM: @j1010001
Approver @dete
Consulted @turbolent, @SupunS
Informed @Kay-Zee, Flow Engineering team
@j1010001 j1010001 changed the title [Placeholder] Language Specification Cadence Language Formal Specification Oct 7, 2024
@SupunS SupunS added the Documentation Improvements or additions to documentation label Oct 10, 2024
@j1010001 j1010001 self-assigned this Oct 10, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Documentation Improvements or additions to documentation
Projects
None yet
Development

No branches or pull requests

3 participants