Skip to content

Latest commit

 

History

History
114 lines (106 loc) · 2.99 KB

File metadata and controls

114 lines (106 loc) · 2.99 KB

Milestones

v0.2

  • Binary builds
  • statically link readline

v0.3 - initial pre-release

  • 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

v1.0

  • Formatter
  • LSP server
  • optimize binary size
  • Optional function parameters
  • Network stack

Stretch goals

  • 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:
    • return always occurs in a function definition
    • break and continue always occur in loops
  • Yaml module

Done

v0.1 - initially tagged version

  • Language versioning

pre-v0.1

  • Bug: $scriptDir and $cwd should be absolute, so they can be chained
  • List methods
    • .pop(element)
    • .push(element)
    • .reduce(callback)
    • .filter(callback)
    • .map(callback)
    • .forEach(callback)
    • .contains(element)
  • Stack traces
  • Add FileDescriptor::write()
  • Blank identifier does not bind
  • String methods
    • .contains(substring)
    • .split(sep)
  • Mock out standard I/O for tests
  • Reading from $stdin
  • File::open() -> FileDescriptor
    • `fd.close()
    • fd.writeAll("Hello, World!\n")
  • throw keyword
  • 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

Bugs

  • bug: stacktrace printing is wrong in REPL
  • bug: Do static methods need to take self as first arg?