Skip to content

Roadmap for implementing language features #8

@liquidev

Description

@liquidev

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    roadmapA roadmap describing the future vision of the language.

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions