retroforth/RELEASE_NOTES.md
crc 57711b3e54 update release notes
FossilOrigin-Name: e27f9e4df26bc5e5f78edd74822f18e560a555168215b4a49e6f0bdaa8de558d
2019-01-03 15:34:14 +00:00

2.5 KiB

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.