Skip to content

Latest commit

 

History

History
120 lines (119 loc) · 3.57 KB

TODO.md

File metadata and controls

120 lines (119 loc) · 3.57 KB

TODOs

  • Implement the specification
    • Control flow
      • if/if!
      • match/match!
      • for!
      • while!
    • operator
      • + (binary/unary)
      • - (binary/unary)
      • *
      • /
      • ** (power)
      • % (modulo)
      • comparison
      • ! (mutation)
      • ..< (right-open range)
    • Pattern-matching
      • Variable Pattern
      • Literal Pattern
      • Array Pattern
      • Tuple Pattern
      • Record Pattern
      • Data Type Pattern
      • Refinement Pattern
    • Function call
      • Positional arguments
      • Keyword arguments
      • Variable length arguments
    • Array literal
    • Record literal
    • Set literal
    • Dict literal
    • Tuple literal
    • Variable visibility
    • Raw identifier
    • Lambda function
      • lambda function with indentation
    • do/do!
    • Function/Procedure definition
      • Positional arguments
      • Variable length arguments
      • Keyword arguments
    • Method definition
    • Type definition
      • Class definition
      • Trait definition
      • Structural trait definition
    • Patch definition
      • Glue Patch definition
    • Range object
      • Right-open range object (only for Int)
    • Decorator
    • Comprehension
      • Array
      • Dict
      • Set
      • Tuple
    • Pipeline operator
    • ? operator
    • Multi-line string
    • String interpolation
    • Multi-line comment
  • Complete the type inference system
    • Type variable
      • Dependent type variable
      • Polymorphic type variable
    • Mutable type
      • Dependent mutable method
    • Projection type
      • Polymorphic projection-type
    • Subtyping
      • Refinement subtyping
      • Nominal subtyping
    • Module system
      • Load Builtin Module
        • math (partially)
        • random (partially)
      • Load User Module
      • Recursive module
      • Visibility check
    • Patching
    • Rank-2 type
  • Implement a side-effect checker
    • procedure call
    • mutable type
  • Implement reference types (for methods)
  • Implement an ownership checker
    • Implement a move checker
    • Implement a borrow checker
    • Implement a cycle-reference detector
  • Implement a compile-time evaluator
    • Builtin (Compile-time) perators
    • Compile-time operator
    • Compile-time function
  • Maintain unit tests
  • Implement a Python parser
  • Make code readable
    • Add docs comments to every functions
    • Replace Parser (to more elegant one)
  • Make error messages more readable
    • Add hints (include a URL with detailed information)
    • Multiple error points indication
    • Support for languages other than English
      • Japanese
  • Create a playground (uses pyodide)
  • Develop the development environment
    • Implement LSP (Language Server Protocol)
    • Implement a syntax highlighter (REPL/debugger built-in)
    • Implement a package manager (pack subcommand)
    • Implement a virtual environment manager (env subcommand)
    • Prepare an installer for each platform
    • Implement a compiling server
  • Maintain documentations
    • I18n
    • Write educational materials to learn Erg while creating applications (e.g. CLI chess game -> GUI chess game, calculator -> toy language)
  • Develop Dyne (CPython compatible VM)
  • Develop Kayser (WebAssembly backend)
  • Develop Barye (LLVM backend)