- Binary builds
- statically link readline
- Test suite
- JSON module
- Constraint system
- language version
- permissions
- Migrate AST to use actual Ast module
- Regular expressions (libpcre?)
- Allow non-zero exit codes on sub-processes
- Formatter
- LSP server
- optimize binary size
- Optional function parameters
- Network stack
- Bytecode VM (this should not happen until API becomes stable)
- From scratch regular expression engine
- Unicode strings
- Method syntax for hash maps
- Pattern matching
- Error types
- Formatter
- Have optimizer check that:
returnalways occurs in a function definitionbreakandcontinuealways occur in loops
- Yaml module
- Language versioning
- Bug: $scriptDir and $cwd should be absolute, so they can be chained
-
Listmethods.pop(element).push(element).reduce(callback).filter(callback).map(callback).forEach(callback).contains(element)
- Stack traces
- Add
FileDescriptor::write() - Blank identifier does not bind
-
Stringmethods.contains(substring).split(sep)
- Mock out standard I/O for tests
- Reading from
$stdin -
File::open()->FileDescriptor- `fd.close()
fd.writeAll("Hello, World!\n")
-
throwkeyword - error handling (
let result = mayError() catch (e) DEFAULT;) - $stdin, $stderr
- CLI args
-
&and&!operators for spawning sub-processes - Implement exit function
- Parser errors
- $env
- $script & $scriptDir
- Mock out processes, files for unit tests
- Context variables, with statements; $cwd
- Break and continue statements
- First class for loops
- Migrate var declarations and reassignment to expressions
- Allow single statement blocks to omit semicolons
- Return statements
- Files
- raw string literals
- operators are top level functions that DO one thing, but allow for implicit casting of its operands
- Use readline for REPL
- Class prototypes
- Class static methods
- Process class
- README.md
- Do blocks
- For-in loops
- Comments
- Classes
- Assertions
- Store locs in runtime values
- HashMap literals
- Automatic semicolon insertion
- Implement all arithmetic operators
- String interpolation
- Updating lists
- Hashmaps
- Loops
- Lists
- Comments
- Recursion (depends on conditionals)
- Infix functions
- Tooling to diagnose shift/reduce conflicts
- Conditionals
- Invoking function expressions
- Function arguments
- Variable re-assignment
- Closures
- Lexical scoping
- bug: stacktrace printing is wrong in REPL
- bug: Do static methods need to take self as first arg?