Updated Roadmap (markdown)

Bobbi Webber-Manners 2018-05-02 15:11:48 -04:00
parent ceefba375c
commit 178d0787b4

@ -1,24 +1,35 @@
# Roadmap
## Near-Term
- Finish compiler implementation (parity with interpreter features)
- Array pass by reference
- Work out how to evaluate expressions with only constants within the compiler so array dimensions no longer need to be literal constants
- Write a non-trivial app in EightBall to discover the pain points
## Medium-Term
- Wishlist features:
- Multidimensional arrays (implemented as array of pointers to array).
- Multidimensional arrays
- 2D array is implemented as array of pointers to arrays of `word` or `byte`.
- 3D array is implemented as array of pointers to array of pointers to arrays of `word` or `byte`.
- etc.
- Array initializer lists:
- `word xyz[3] = {123, 456, 789}`
- String initializer:
- `byte qq[10] = "abcde"` - will also add null terminator to string
- A way to pass string literals as subroutine arguments
- Module system
- Would be good to make bytecode relocatable by using relative addresses
- Need to add new relative jump / branch instructions for this)
- Drawback is it makes the code harder to read for humans, but this can be overcome with better tools
- Need to think about how a module system should work
- Write a non-trivial app in EightBall to discover the pain points
- Optimize virtual machine bytecodes, based on study of real code
- For example, it would be good to have an instruction to drop n bytes from call stack rather than repeated `POP`, `DROP` as the compiler currently does.
- High performance VM: hand-coded in 6502 assembly
## Long-Term
- High performance VM
- Hand-coded in 6502 assembly
# Ground Rules
Features will only be added if:
1. They do not increase the code size so much that it is no longer practical to run EightBall on Apple II and C64. (VIC20+32K is already a tight fit.)
2. Language features must have both an interpreter and compiler implementation.