mirror of
https://github.com/bobbimanners/EightBall.git
synced 2025-02-16 10:32:33 +00:00
Updated Roadmap (markdown)
parent
ceefba375c
commit
178d0787b4
17
Roadmap.md
17
Roadmap.md
@ -1,24 +1,35 @@
|
|||||||
# Roadmap
|
# Roadmap
|
||||||
|
|
||||||
|
## Near-Term
|
||||||
- Finish compiler implementation (parity with interpreter features)
|
- Finish compiler implementation (parity with interpreter features)
|
||||||
- Array pass by reference
|
- 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
|
- 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:
|
- 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:
|
- Array initializer lists:
|
||||||
- `word xyz[3] = {123, 456, 789}`
|
- `word xyz[3] = {123, 456, 789}`
|
||||||
- String initializer:
|
- String initializer:
|
||||||
- `byte qq[10] = "abcde"` - will also add null terminator to string
|
- `byte qq[10] = "abcde"` - will also add null terminator to string
|
||||||
|
- A way to pass string literals as subroutine arguments
|
||||||
- Module system
|
- Module system
|
||||||
- Would be good to make bytecode relocatable by using relative addresses
|
- Would be good to make bytecode relocatable by using relative addresses
|
||||||
- Need to add new relative jump / branch instructions for this)
|
- 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
|
- 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
|
- 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
|
- 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.
|
- 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:
|
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.)
|
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.
|
2. Language features must have both an interpreter and compiler implementation.
|
Loading…
x
Reference in New Issue
Block a user