mirror of
https://git.sr.ht/~crc_/retroforth
synced 2024-11-16 19:48:56 +01:00
ee87d47b0e
FossilOrigin-Name: d6be3a03ffb2e27f9af40079e3ebbd7f7fc1099883ad9a3ec0785b7be520b809
101 lines
3.3 KiB
Text
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.
|