- 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
- Control flow
- 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
- Structural 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
- Load Builtin Module
- Patching
- Type variable
- 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)