retroforth/RELEASE-NOTES
crc ee87d47b0e add minimize.retro to examples (thanks kiyoshi)
FossilOrigin-Name: d6be3a03ffb2e27f9af40079e3ebbd7f7fc1099883ad9a3ec0785b7be520b809
2020-01-02 15:29:48 +00:00

101 lines
3.3 KiB
Text

# RETRO 2020.01
- rename package/list to package/list.forth
- include signing keys for this and the next release
- fix n:MIN and n:MAX queries on some of the interfaces
- reduce default image size; max number of open files
- updated html export for retro sources: averages 7.4% faster conversion, 26% smaller output across my test set
- use a trick from https://getkiss.org/blog/20191004a to disable requests for a favicon in Atua-WWW
- fix a bug in s:WHITESPACE and use it in c:whitespace?
- reorganize source tree
- add s:get-word
- moved the assembler into rx.muri
- add prefix:\
- add prefix:^
- deprecate as{
- deprecate }as
- deprecate prefix:"
- deprecate "
The 2020.1 release of RETRO brings many improvements.
# Signed Releases
Starting with 2020.1, each release will include a signing key to
allow verification of the release. Additionally, each release will
include the signing key to be used for the following release so
that there is both reliable key rotation and a verifiable chain
of trust across releases.
# Tooling Updates
The HTML export for the examples has been updated. It now averages
a 7.4% decrease in conversion and a 26% decrease in exported file
size.
# Assembler
The assembler is now provided by Rx. This was a technical challenge,
but well worth the effort. By making it part of the kernel it has
become possible to use assembly, rather than raw bytecode, in all
parts of retro.forth. This is allowing for a significant amount of
hand tuning to the standard library, reducing the memory footprint
and improving performance overall.
Some highlights of this:
- Reduced the assembler size from 661 cells to 109 cells
- No increase to the size of the reserved space for Rx
- Renamed the `en`d instruction to `ha`lt
- Added new prefixes for working with the assembler instead of
requiring use `as{` and `}as`.
- Deprecated `as{` and `}as` (these will be removed in the
2020.04 release)
Example of the changes:
(old)
as{ 'liliad.. i #2 d #3 d 'lica.... i 'n:put r }as
(new)
\liliad.. `2 `3 \lica.... ^n:put
# Standard Library
I fixed all reported bugs.
As noted previously, the assembler is now in the kernel. This
allowed replacement of raw bytecode in the standard library
with actual assembly, aiding in readability and maintainability.
The use of assembly to fine tune select words has allowed both
size reduction and performance improvements.
A few words have been deprecated due to lack of use and will be
removed in the 2020.04 release:
- prefix:"
- "
# Nga
I reorganized the source tree. This separates the implementations
by language and tries to keep things better structured. The Forth
code for the I/O devices is now in a separate directory, allowing
it to be more easily shared across implementations. Bugs related
to the numeric range queries were fixed.
The JavaScript implementation has seen a number of changes. Dead
code was removed, the formatting was redone to ensure consistency,
a framebuffer device was added, and performance was improved. The
code now consists of multiple files, making editing easier, and
the interface layout has been updated.
Testing with the optional 64-bit cells has been completed and no
issues were found.
# Retro on Unix
I added an `s:get-word`, removed some deprecated words, and updated
the memory limits to reduce overall memory usage under the default
configuration.