Skip to content

Latest commit

 

History

History
133 lines (132 loc) · 3.93 KB

TODO.md

File metadata and controls

133 lines (132 loc) · 3.93 KB

TODOs

  • Implement the specification
    • Control flow
      • if/if!
      • match/match!
      • for!
        • code generation
      • while!
        • code generation
    • operator
      • + (binary/unary)
      • - (binary/unary)
      • *
      • /
      • ** (power)
      • % (modulo)
      • comparison
      • ! (mutation)
      • .. (range)
    • Pattern-matching
      • Variable Pattern
      • Literal Pattern
      • List Pattern
      • Tuple Pattern
      • Record Pattern
      • Data Type Pattern
      • Refinement Pattern
    • Function call
      • Positional arguments
      • Keyword arguments
      • Variable length arguments
    • List 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
    • Constant definition
      • Simple constant definition
      • Cyclicity check
    • Method definition
      • Simple method definition
      • Trait implementation
    • Type definition
      • Class definition
      • Trait definition
      • Structural trait definition
      • Polymorphic type definition
    • Patch definition
      • Glue Patch definition
    • Range object
    • Decorator
    • Comprehension
      • List
      • 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
      • Projection call type
    • Subtyping
      • Structural subtyping
        • Refinement subtyping
      • Nominal subtyping
    • Module system
      • Load Builtin Module
        • math (partially)
        • random (partially)
        • importlib (partially)
        • io (partially)
        • socket (partially)
        • sys (partially)
        • time (partially)
      • Load User Module
      • Recursive module
      • Visibility check
    • Patching
  • 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) operators
    • Compile-time operator
    • Compile-time function
  • Maintain unit tests
  • Make code readable
    • Add docs comments to every functions/methods
    • Replace Parser (to more elegant & efficient 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
      • Simplified Chinese
      • Traditional Chinese
  • Create a playground
  • 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)
  • Undetermined Develop Kayser (WebAssembly backend)
  • Develop Gal (LLVM backend)