# RETRO 2020.4 This release fixes a couple of bugs, and makes a lot of improvements to the standard library, using inline assembly to enhance performance and reduce size. A few of the larger changes: - bug fixes - removed an incorrect header stub from rx.muri - fixed bug in s:index-of-string - improvements - lots of size reductions - increased use of hand packed assembly in the stdlib - removed numerous variables - faster performance in rewritten words in the stdlib - remove deprecated words - as{ }as " prefix:" - examplse - markdown.retro - future underscores in word names Prior RETRO images had a patch that allowed underscores to be used in word names. In this release, the patch is no longer part of the standard library, but is still included on Unix targets by default. This might affect some users, if you are building a custom image, load package/allow-underscores-in-names.forth if you need this. This will no longer be loaded by default after the 2020.4 release. modularity Work towards allowing portions of the standard library to be optional is ongoing. During this, the internal organization of retro.forth is changing and some small parts may be duplicated in an effort to allow for more flexibility in the long term. Full Changelog: === 2020-04-20 === 15:08:45 [64838647dd] add new sections to documentation (user: crc tags: trunk) === 2020-04-14 === 18:00:02 [320b451250] small update to js implementation (user: crc tags: trunk) === 2020-04-11 === 19:53:20 [45eb321e8e] new example (user: crc tags: trunk) === 2020-03-11 === 19:34:10 [0ae9fc6c65] more tests for words in rx (6 remain w/o tests) (user: crc tags: trunk) 18:42:39 [ba14795dce] begin work on a better set of tests for words in the rx kernel (user: crc tags: trunk) === 2020-03-10 === 13:56:56 [bddc212320] some css and layout experiments w/the javascript version (user: crc tags: trunk) === 2020-03-06 === 21:35:23 [361317baea] retro.forth: revert s:contains-string? due to bugs (user: crc tags: trunk) === 2020-03-04 === 14:48:18 [57d87b1a42] more bugfixes (user: crc tags: trunk) === 2020-03-03 === 15:35:08 [4b3dc5d5df] retro.forth: fix bug in s:split-on-string (user: crc tags: trunk) 00:23:11 [5309d39780] fix s:contains-string? bug (user: crc tags: trunk) === 2020-03-02 === 21:49:51 [542a1fd386] add instruction values in invalid instruction reporting (user: crc tags: trunk) === 2020-02-29 === 15:50:19 [13f0507b61] retro/native: work on the ata driver (user configurable read/write delays, name the I/O ports used, start refactoring) (user: crc tags: trunk) === 2020-02-25 === 13:19:31 [9e725bb5fc] retro.forth: smaller `s:for-each` (user: crc tags: trunk) 13:05:17 [569afc46e6] retro.forth: smaller `s:index-of` (user: crc tags: trunk) === 2020-02-21 === 20:58:11 [9a81e5658c] html formatter: a patch to allow escaping formatting characters (user: crc tags: trunk) 20:48:40 [8ccada3f41] html export: fix another small bug (user: crc tags: trunk) 20:15:55 [14bdad7b70] html export: note where the css colors came from (user: crc tags: trunk) 20:03:50 [78eb3332d9] html export: fix crash on # with no spaces following (user: crc tags: trunk) 19:59:25 [3547ab30d1] html export: fix crash on # with no spaces following (user: crc tags: trunk) 19:47:00 [b3c8281fa5] updates to the examples, better html exports now working (user: crc tags: trunk) 19:44:33 [67b765255e] updates to the examples, better html exports now working (user: crc tags: trunk) === 2020-02-20 === 20:48:29 [4b087b4d34] examples: rename a word to make an example a little clearer (user: crc tags: trunk) 20:28:48 [9ec683cd98] fix some references to the old end instruction (now called halt) (user: crc tags: trunk) === 2020-02-18 === 14:44:31 [6e0142ac02] example: local variables (user: crc tags: trunk) === 2020-02-17 === 18:12:09 [e48d7c1f28] retro-unix: builds under Haiku now (user: crc tags: trunk) === 2020-02-14 === 21:36:21 [26dee89795] copyright year = 2020 (user: crc tags: trunk) 04:22:08 [3d9915d3e6] examples: update css for html export (user: crc tags: trunk) === 2020-02-13 === 18:59:34 [845b3243f3] rx: remove an unused, broken dictionary entry (user: crc tags: trunk) 17:51:47 [3de9369294] examples: remove a use of as{ }as (user: crc tags: trunk) 17:49:56 [82fdcae8b5] retro.forth: smaller `var` (user: crc tags: trunk) 17:43:06 [3273eb2054] retro.forth: use assembly w/`dump-stack`, more comments (user: crc tags: trunk) 13:50:20 [561a9c1ff2] retro.forth: refactor a bit of common code to save some size (user: crc tags: trunk) 13:43:52 [a754653708] retro.forth: fix a bug in s:index-of-string (user: crc tags: trunk) 13:41:01 [1daa20ac3a] retro.forth: remove use of a variable in io:scan-for (user: crc tags: trunk) 13:33:57 [de906e8e01] retro.forth: rewrite `s:index-of-string` and `s:contains- string?` to eliminate use of variables (user: crc tags: trunk) === 2020-02-12 === 21:36:49 [81de60c778] retro.forth: rewrite `a:index-of` and `a:index-of- string`, removing a variable and making them much shorter (user: crc tags: trunk) 20:33:18 [ab9b2d9804] retro.forth: more improvements (user: crc tags: trunk) 20:10:22 [2856c733ff] retro.forth: even smaller `a:append` (user: crc tags: trunk) 20:08:04 [ddadcd3feb] retro.forth: smaller, cleaner `a:append`, `a:prepend` (user: crc tags: trunk) 19:54:14 [2853b4bba6] retro.forth: remove a variable from `a:for-each`, use asseembly in the implementation (user: crc tags: trunk) 16:04:37 [86fe6967af] image: reduce overall size, use ASCII: names in listener (user: crc tags: trunk) 15:52:26 [01d22fa771] retro.forth: more use of inline assembly (user: crc tags: trunk) 15:40:53 [5e0f9b6d52] retro.forth: remove an unneeded `s:temp` from `n:to- string` (user: crc tags: trunk) 15:38:56 [5857cab82d] retro.forth: remove a variable from `n:to-string` (user: crc tags: trunk) 15:35:58 [68dda770df] retro.forth: use inline assembly in `s:hash` (user: crc tags: trunk) 15:20:32 [29522cc3ae] retro.forth: more optimizations (`s:tokenize-on-string`, `s:trim-left`) (user: crc tags: trunk) 15:10:23 [257bbb942c] retro.forth: more use of inline assembly (user: crc tags: trunk) 15:00:47 [bd0394df6f] retro.forth: smaller `s:format` (user: crc tags: trunk) 14:50:49 [2a4b7960e3] book: formatting fixes, cleanups (user: crc tags: trunk) 14:50:31 [82c73ae0bf] retro.forth: reduce size of `s:evaluate` (user: crc tags: trunk) 12:58:06 [16c95236d7] book: add tech notes on underscores in names (user: crc tags: trunk) === 2020-02-11 === 22:06:12 [1ccfe19cb6] retro.forth: inline assembly in a bunch of words (user: crc tags: trunk) 21:36:16 [ad35a890a5] retro.forth: smaller a:index-of, a:index-of-string (user: crc tags: trunk) 21:32:04 [2a36f41911] retro.forth: more readable a:append (user: crc tags: trunk) 21:18:34 [7e24bacd48] retro.forth: minor reorganizations (user: crc tags: trunk) 21:13:58 [0aa751dedd] retro.forth: minor reorganizations (user: crc tags: trunk) 21:10:51 [72c0f243d4] retro.forth: smaller, faster lteq? (user: crc tags: trunk) 21:09:12 [3e0f071e10] retro.forth: smaller gteq? (user: crc tags: trunk) 20:56:34 [7e123ff0f8] move patch to allow underscores in names out of the standard library (still enabled by default on unix targets; see package/list.forth and the release notes) (user: crc tags: trunk) 20:50:08 [e36dc2e6be] retro.forth: split common ASCII: words to start of the namespace (user: crc tags: trunk) 20:49:27 [abc29c592c] examples: mandlebrot: remove use of _ in word names (user: crc tags: trunk) 20:15:35 [0aff09c9fa] retro.forth: move s:tokenize-on-string, s:replace-all to be grouped with other string words, no longer needs a: words defined first (user: crc tags: trunk) 19:53:00 [fd1eaac8ef] remove all uses of `reorder` in stdlib (user: crc tags: trunk) 19:30:14 [20149d1819] example updates (user: crc tags: trunk) === 2020-02-05 === 21:19:11 [7893ebea94] docs: expand notes on the toolchain (user: crc tags: trunk) === 2020-02-03 === 16:04:26 [9fa114fa72] document the new a:index-of-string word (user: crc tags: trunk) 15:46:52 [4c3c9e631d] retro-unix: refactor file:slurp to remove a variable (user: crc tags: trunk) 15:46:20 [67e61ed225] retro.forth: add a:index-of-string (user: crc tags: trunk) === 2020-01-27 === 14:34:58 [256a802203] example: adding c style comments (user: crc tags: trunk) === 2020-01-24 === 16:01:30 [f29878d25d] interpret can now be patched via set-hook (user: crc tags: trunk) === 2020-01-22 === 15:23:25 [347736f9e0] security: add signing keys for 2020.5, 2020.6, 2020.7, remove key for 2020.1 (user: crc tags: trunk) 15:20:57 [2db7a3c6d3] book: add some notes on deprecation policy (user: crc tags: trunk) === 2020-01-21 === 12:58:06 [29a9b00f47] retro-unu: add -t support to command line (user: crc tags: trunk) === 2020-01-15 === 18:32:55 [d893f1fc40] new example: markdown (subset) to html (user: crc tags: trunk) 13:50:04 [ffe0c04cb9] work on 2020.4 begins: remove words deprecated by 2020.1 (user: crc tags: trunk)