Skip to content

Latest commit

 

History

History
85 lines (69 loc) · 2.29 KB

roadmap.md

File metadata and controls

85 lines (69 loc) · 2.29 KB

Roadmap

Our main aim is to start off with a simple configuration language, like Dhall. From there we will progressively add features to gain more flexibility. We want to provide a textual syntax up-front, but we should aim to keep the core language reasonably decoupled from this, allowing us to provide support for projectional editing in the future.

You can read more about what we hope to achieve in Pondering the next version of Pikelet.

Language

  • Basic config language
    • Comments
    • Boolean literals/constants
    • Integer literals/constants
    • Float literals/constants
    • Character literals/constants
    • String literals/constants
    • Record terms
    • Non-dependent record types
    • Dynamically sized arrays
    • Fixed sized arrays
  • Basic programming language
    • Improved literal parsing
    • Annotated terms
    • Let expressions
    • Record field lookups
    • Import expressions
    • Function terms
    • Non-dependent function types
    • Enumeration sets
    • Pattern matching
    • Recursive terms
  • Dependently typed language
    • Dependent record types
    • Dependent function types
    • Equality (identity) types
    • Universe levels
    • Multi-stage programming
    • Quantitative type theory

Projections

  • Surface → Pretty
  • Surface → Core
  • Core → Pretty
  • Core → Value
  • Core → Binary
  • Core → Documentation
  • Core → Cranelift
  • Core → LLVM
  • Value → JSON/YAML/TOML

Tooling

  • REPL
  • Package manager
  • Auto-formatter for surface language
  • Structured editor

Testing

  • Language samples
  • Feature tests
  • Property based tests

Diagnostics

  • Basic error enum
  • Error recovery
  • Pretty diagnostic reporting

Rust marshalling

  • Mashalling traits
  • Improved error messages
  • Nicer marshalling API
  • Derive macro for generating marshalling trait implementations
  • More efficient, visitor based marshalling