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

Roadmap for implementing language features #8

Open
25 of 78 tasks
liquidev opened this issue Nov 19, 2021 · 0 comments
Open
25 of 78 tasks

Roadmap for implementing language features #8

liquidev opened this issue Nov 19, 2021 · 0 comments
Labels
roadmap A roadmap describing the future vision of the language.

Comments

@liquidev
Copy link
Member

liquidev commented Nov 19, 2021

This issue outlines the tasks needed for a fully working tsuki compiler.

New features are not going to be added into the language until the first version of the compiler is finished, at which point features are going to be refined (along with the spec) and removed, but no new features are going to be added into the language.

Macros, which are currently TODO, are a 1.0 goal, but I need an overview of how the internal AST is going to look before I can implement them.

  • Lexer and tokens
  • Basic operations
    • Arithmetic
      • Addition
      • Subtraction
      • Multiplication
      • Division
    • Relation
      • Equality and inequality ==, !=
      • Order <, <=, >, >=
    • Logic
      • not
      • and and or
      • Bitwise ops ~, &, |, ^^
    • Other
      • Concatenation ~
      • Compound assignment
      • in
      • is
      • as
    • Make operators use traits for overloading (mark this level's tasks as done as soon as this is introduced)
  • Control flow
    • Prefix do expressions
    • if expressions
      • if val
    • match expressions
    • try blocks and ? operator
    • while loops
      • while val
    • for loops
    • break expression
  • Functions
    • Function definitions
    • Calls
      • Intrinsic
      • User-defined
        • Self-recursive (fun a() calls itself)
        • Mutually recursive (fun a() calls fun b() which calls fun a())
      • Check when method calls are supported
    • return expression
      • Control flow analysis as to whether a function returns or not
        Not needed. Because all functions that return a value treat the last expression in the body as the value to return, we can be sure that all functions that need to return a value, already do so.
    • :: compiler_intrinsic pragma
    • :: c_import pragma
      • :: c_varargs pragma
    • :: c_export pragma
    • Panicking
  • Types
    • Remove SemLiterals #7
    • Implement const T {V} #6
    • ()
    • Bool
    • NoReturn
    • Integer types
    • Floating point types
    • Char
    • Atoms
    • Tuples
    • Objects
      • Dropping
    • Unions
    • Optionals
    • Results
    • Pointers
      • Borrow checking
    • Array[N, T]
    • Seq[T]
    • Table[K, V]
    • String
    • rc and rc var
    • Type aliases
  • Implementations
    • Self
    • self with explicit type
    • self with pointer type inference
    • derives
      • Copy and Dup
      • Update this list when the list of traits that will be needed is known
  • Generics
    • Trait declarations
    • where constraints
    • Instantiation
  • Modules: TODO
  • Packages: TODO
  • FFI: TODO
  • Documentation: TODO
  • Macros: TODO

Do note that this roadmap does not include the standard library.

@liquidev liquidev added the roadmap A roadmap describing the future vision of the language. label Dec 28, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
roadmap A roadmap describing the future vision of the language.
Projects
None yet
Development

No branches or pull requests

1 participant