diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md new file mode 100644 index 0000000..97ab6cc --- /dev/null +++ b/RELEASE_NOTES.md @@ -0,0 +1,68 @@ +RETRO 12 - 2017.12 (WIP) + +Bug fixes: + +- Now builds using GCC (thanks to wuehlmaus in the IRC channel for discovering a bug related to the order of linker arguments when dealing with GCC) +- Now builds on older Ubuntu systems with broken GNU make. + +Language Improvements: + +- ASCII constants are now using `class:data` (reducing image size by nearly 500 cells and removing call/return overhead when used) +- `s:with-format` now supports \_ +- Added `s:split-on-string` +- Added `s:index-of-string` +- Added `s:replace` +- Added `s:tokenize` +- Added `s:tokenize-on-string` + +Interfaces: + +- *RRE* has significant improvements. + + - a `unix:` namespace with access to system-specific functionality: + + - `unix:system` + - `unix:popen` + - `unix:pclose` + - `unix:fork` + - `unix:wait` + - `unix:exec0` + - `unix:exec1` + - `unix:exec2` + - `unix:exec3` + - `unix:getpid` + - `unix:kill` + - `unix:getenv` + - `unix:putenv` + - `unix:chdir` + - `unix:write` + - `unix:sleep` + + - Additions to `f`: + + - `f:sin` + - `f:cos` + - `f:tan` + + - Addtions to `file`: + + - `file:spew` + + - Interactive mode when launched with `-i`: + + rre -i + + - `bin/listener` now uses `rre` directly and no longer has to copy the RETRO code into a temporary file. + +Documentation: + +- Added a `Building.md` with some notes on the build process. +- Fixed formatting issues in the `LICENSE.md` (thanks to Mateusz Piotrowski) +- Build now uses a shell script instead of multiple Makefiles +- Added a database (tab separated data) of the words +- Added a `glossary` tool to search, edit, and extract data from the words database + +Examples: + +- Added `edit.forth`, a functional text/code editor + diff --git a/glossary.forth b/glossary.forth index 54a174e..55a097c 100755 --- a/glossary.forth +++ b/glossary.forth @@ -406,6 +406,31 @@ to use. ; ~~~ +~~~ +:display-result (-) + field:name dup '0%s\tgopher:describe_%s\tforthworks.com\t7200\n s:with-format puts ; + +:gopher:list-words (-) + 'words.tsv [ s:keep !SourceLine display-result ] file:for-each-line ; +~~~ + +~~~ +:eol? (c-f) + [ ASCII:CR eq? ] [ ASCII:LF eq? ] [ ASCII:HT eq? ] tri or or ; + +:gets (a-) + buffer:set [ getc dup buffer:add eol? not ] while ; + +'Selector d:create + #1024 allot + +:gopher:serve + &Selector gets + &Selector #0 #4 s:substr 'desc s:eq? + [ &Selector puts nl ] + [ gopher:list-words ] choose ; +~~~ + # Finish First, a word to handle command line arguments. @@ -418,6 +443,7 @@ First, a word to handle command line arguments. 'edit [ handle-edit ] s:case 'add [ add-word ] s:case 'delete [ delete-entry ] s:case + 'gopher [ gopher:serve ] s:case drop show-help ; ~~~