be7ed254fa
FossilOrigin-Name: 9b404145f6397de19857415ca9143fc13697702f24b9939eb343a83525a94a8d
106 lines
3.1 KiB
Text
106 lines
3.1 KiB
Text
# RETRO 2020.01
|
|
|
|
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.
|
|
|
|
retro-locate(1) was added to search the `tags` file created by
|
|
retro-tags(1).
|
|
|
|
# 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.4 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.
|
|
|
|
# Documentation
|
|
|
|
The documentation has been updated, adding in new examples, removing
|
|
material that is no longer relevant, and several new sections were
|
|
added.
|
|
|
|
# Examples
|
|
|
|
New examples:
|
|
|
|
- HTTP GET via sockets
|
|
- HTTP POST via sockets
|
|
- enum
|
|
- minimize (from Kiyoshi)
|
|
- fifo queue
|
|
|
|
Updated:
|
|
|
|
- Gott example (from Kiyoshi)
|