mirror of
https://github.com/bobbimanners/EightBall.git
synced 2024-11-25 16:32:35 +00:00
Updated Roadmap (markdown)
parent
ceefba375c
commit
178d0787b4
17
Roadmap.md
17
Roadmap.md
@ -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.
|
Loading…
Reference in New Issue
Block a user