- local labels (visibility limited to single function)
- structs: usage
- types: methods
- FIX -
push.@[
goto.@]
]:
in morty ([' and
]` treated as comments) -> drop support for separators ???
- peephole optimizer as a separate tool
- separate stacks, code and mem ?
- memory slices (addr -> slice,offset) ?
- all addrs are indirect ?
- debug stacks depth
- check stacks overflows
- trace
- stand-alone executable
- transpilation to C
- cooperative multitasking
- docs: all vm instructions (including turbo mode)
- macros / inline ?
- tail call optimization
- fix globals_cnt
- constants
- iterators
- else ?
- heapsort.morty (requires else for easy porting)
- array operations (similar to numpy / APL) ?
- encode word in ASM
- special stack shuffling syntax -> ie abcd|cadb or |cabd // ab|aba or |aba
- vm text-based mem dump
- strings
- quote / unquote
- ASM - token to line number (for error reporting)
- case
- little vs big endian
- literate programming (compile from markdown)
- multiprocessing
- add Morty to linguist (https://github.com/github/linguist) so it can be detected by GitHub
- https://rosettacode.org/wiki/Mandelbrot_set#Julia
- remove
const
from the language -> optimizer - JS - touch / mouse
- fix !draw -> &draw
- modules
- VM interrupts handlers (run function, halt when it returns)
- JS - time frames / draw function
- C - shorter VMINFO (TOS IP SD RD HD dt)
- remove macro support -> optimizer
- FIX - vm.asm usage in morty
- quote function (push function addr -> !name )
- JS - IO ops - canvas
- JS - better code loading
- JS - canvas api adapter
- JS - shorter VMINFO (TOS IP SD RD HD dt)
- vm.js prototype
- remove old VM ops in preparation for JS VM
- fix: loops.asm (comments, wrong for order)
- fix: sieve.asm / sieve.morty (for loop order)
- replace -i option with -f (more standard)
- forward-declarations or other technique for top-down programming
- separate linker
- { ... } ( -- len addr ) push array length on the stack before addr
a[x 1 add] .get
array notation (remove lambdas for now, introduce [ and ] as visual separators)- array notation ( .get .set )
- more intuitive for ( lo hi incr )
- qsort
- ackerman.morty
- structs: declaration
- fix random.asm -O (muli, divi, modi vs OPFREQ)
- vm: load cell code from stdin
- remove HLA (lang.py prototype + asm is enough)
- capture variables in lambdas (lambdas will use call frames)
- rewrite benchmarks from HLA to ASM
- lang: lambdas
- fix: random.morty
- fix: sieve.morty
- fix: array.morty
- rewrite benchmarks from HLA to Morty
- compiler CLI (morty -> asm, -i -o)
- global references -> globals pointer
- static arrays
- vm cleanup, separate core from (turbo) extension
- primitive output
- dynamic statistics (op freq) -> 25% performance penalty
- vm text-based portable executable format
- conditionals
- replicated switch threading
- sieve.hla
- parametric cell size (16, 32, 64 bits)
- loop changes (NO - new word for counting down on existing loops)
- define and document file extensions
- indefinitive loops
- definitive loops
- asm text-based compiled format
- stack based label resolution
- high-level assembler
- vm cli
- vm - load from binary file
- primitive output
- vm boot sequence
- asm output to binary file
- asm character literals
- lang - structs
- lang - macros