retroforth/RELEASE_NOTES.md

105 lines
2.5 KiB
Markdown
Raw Normal View History

# RETRO 12.2019.1
In this release, the executables have been renamed to avoid
naming conflicts with other applications and packages.
old name new name
========== ================
rre retro
embedimage retro-embedimage
extend retro-extend
muri retro-muri
repl retro-repl
ri retro-ri
unu retro-unu
The addition of the new `|` prefix makes compiler macros
easier to write. Contrast:
:IF &[ class:macro ; immediate
:THEN &] class:macro &choose class:word ; immediate
:IF |[ ; immediate
:THEN |] |choose ; immediate
## Bug Fixes
- `s:empty` now returns a terminated string
## Build
- add `Makefile.linux` to help with building on some Linux systems
- recreate `bin` if it's not present
## Core Language
- add `c:to-number`
- minor optimizations and cleanups throughout
- `s:format` now treats `\0` as ASCII NUL
- added `prefix:|` for use with compiler macros
- inline select words for better performance and code density
- add `set:counted-results`
- deprecate `set:from-results`
## Nga
- new instructions
- add `ie` (i/o enumerate)
- add `iq` (i/o query)
- add `ii` (i/o interact)
## Interfaces
### retro (formerly rre)
- moved Windows implementation to `interfaces/windows`
- now starts the listener when run w/o any arguments
- added `-s` command line parameter to silence input echo & ok prompt
- merged in the FloatingPointEncoding words (`u:` namespace)
- added `f:store`, `f:fetch`
### retro.py
- fixed the bug causing it to run at a glacial pace
### barebones
- a small repl minimizing the C portion of the code
### listener
- removed. use `retro` or `retro-repl` instead
## Tools
- added commentary to Unu
- Retro implementation of Unu
- Retro implementation of Muri
- added Muri support for I/O instructions
## Other
- builds no longer fail if `bin/` does not exist
## Documentation
- Glossary expanded to cover the new words
## Examples
- atua now caps selector length at 255 characters (as per spec)
- atua no longer needs to read in entire file before sending
- prime sieve now does primes <= 3000 (no longer crashing when
using default memory size)
- added matrix example
- added lightweight flow control words
- gopher client now works on the standard `retro` interface
## Final Notes
While this release has taken longer than expected to finish, I
am very pleased with it. The better naming of binaries, new I/O
model, and numerous small optimizations in the core language
make it better than ever.