RETRO FORTH

RETRO FORTH


Forth Programming Language


Free

2021.1for iPhone, iPad and more
8.7
5 Ratings
Charles Childers
Developer
4.1 MB
Size
Feb 7, 2021
Update Date
Developer Tools
Category
4+
Age Rating
Age Rating
4+
Apps in this category do not contain restricted content.
9+
Apps in this category may contain mild or occasional cartoon, fantasy or real-life violence, as well as occasional or mild adult, sexually suggestive or horrifying content and may not be suitable for children under 9 years of age.
12+
Apps in this category may contain occasional mild indecent language, frequent or intense cartoon or real-life violence, minor or occasional adult or sexually suggestive material, and simulated gambling, and may be for children under 12 years of age.
17+
You must be at least 17 years old to access this App.
Apps in this category may contain frequent and intense offensive language; Frequent and intense cartoon, fantasy or realistic violence: frequent and intense adult, scary and sexually suggestive subjects: as well as sexual content, nudity, tobacco, alcohol and drugs, may not be suitable for children under 17 years of age.
RETRO FORTH Screenshots
RETRO FORTH posterRETRO FORTH posterRETRO FORTH posterRETRO FORTH posterRETRO FORTH posterRETRO FORTH posterRETRO FORTH poster
RETRO FORTH posterRETRO FORTH posterRETRO FORTH posterRETRO FORTH posterRETRO FORTH posterRETRO FORTH poster

About RETRO FORTH

RETRO FORTH is a concatenative programming language with roots in Forth. Designed to be compact, learnable, and easy to adapt to specific needs, it has been developed and refined through continual use by a small community over more than a decade.

Forth is a stack based programming language created in the late 1960's by Chuck Moore. Over the intervening decades it has evolved through use, with many dialects along the way.

The Retro dialect was created in the late 1990's, and has been continually developed and supported for over 15 years. It is a structured, imperative stack-based language with modern facilities including quotations and reflection.

It features:

- latest version of the RETRO language
- a code editor using Markdown subset
- literate programming style
- code is extracted from fenced blocks in Markdown source allowing easy mixing of code and commentary
- allows use of unicode & emoji in source & commentary
- interactive listener interface for quick interactions
- simple console output and text input
- editor provides quick access to numbers and symbols
- support for fetching textual data from Gopher servers
- file manager
- documentation browser

It also includes documentation and several optional examples.
Show More

What's New in the Latest Version 2021.1

Last updated on Feb 7, 2021
Old Versions
Updated to the latest image and documentation. This also brings some small bug fixes and corrections need removes deprecated functions from the language.
Show More
Version History
2021.1
Feb 7, 2021
Updated to the latest image and documentation. This also brings some small bug fixes and corrections need removes deprecated functions from the language.
2020.1
Feb 10, 2020
Updated to the latest RETRO system and documentation. I've also made some more updates to the UI, adding a light mode and fixed numerous bugs.
2019.8
Aug 11, 2019
It's been a long time coming, but a new update is here.

This update brings a new interface that improves usability on iPhone and overall readability. It also brings in a new settings screen, allowing selection of the icon to better fit your preferences.

Beyond this, nearly every aspect of the underlying system has been updated. Of note, the runtime is now completely rewritten and is faster and more stable than before. Optimizations have been made to the gopher support. The system is also now running the latest image which adds numerous improvements to the language, removes deprecated functions, and has a number of performance enhancements.

The documentation is improved as well. The manual is now nicely formatted, and is significantly expanded, with more examples and deeper explanations of the functions and their usage. The glossary browser is also updated with the latest words.
2018.8
Aug 1, 2018
This release brings many changes and improvements to the language and editor.

Interface:

- darker colors, better text contrast
- file manager improvements:
- files now sorted alphabetically
- support for renaming files
- now uses only ~~~ for code blocks

Core Language Improvements

- renamed functions for better consistency with the namespaces
- puts => s:put
- putc => c:put
- putn => n:put
- putf => f:put
- words => d:words
- s:with-format => s:format
- removed tors as it was unused
- new words:
- d:words-with
- set:make
- { and }

Other Improvements

- file:slurp now matches the documentation
- removed ui:get-input (proved too buggy)
- new floating point words
- f:NAN
- f:INF
- f:-INF
- f:nan?
- f:inf?
- f:-inf?
- f:sqrt
- f:round
- f:square
- new file words:
- file:open[for-reading]
- file:open[for-append]
- file:open[for-writing]
2018.4.23
Apr 23, 2018
A minor update to followup on 2018.4:

- Replace the `editor` namespace with `config`
- Add new options to control font, sizing in the editor, output, and toolbars separately

See the "User Interface" document for some notes & examples on using these.

This also contains an updated Glossary, fixing a couple of small typos and adding the new words.

I've also removed the buggy "highlight code blocks" option as it was causing some instability.

Previously:

It's been a while... so here's what's new:

- rewrote `s:eq?`, leading to significant performance improvements
- added `times[with-index]` and `I`, `J`, `K` for loop indexes
- faster code generation
- reduced size of the standard library by about 1/2KiB by some clever reordering of code
- updated the documentation
- added some words in the new `editor` namespace to allow changing fonts, sizing. See the "User Interface" documentation for more details and some examples.
- updated the examples
- some general stability improvements thanks to expanded error checks
2018.4
Apr 19, 2018
It's been a while... so here's what's new:

- rewrote `s:eq?`, leading to significant performance improvements
- added `times<with-index>` and `I`, `J`, `K` for loop indexes
- faster code generation
- reduced size of the standard library by about 1/2KiB by some clever reordering of code
- updated the documentation
- added some words in the new `editor` namespace to allow changing fonts, sizing. See the "User Interface" documentation for more details and some examples.
- updated the examples
- some general stability improvements thanks to expanded error checks
2018.1
Jan 23, 2018
I work to continue improving RETRO for you.

This release brings in the latest image (RETRO-2018.1), adds support for the '\r' escape sequence in strings (when using `s:with-format`), and adds `f:ceiling` to the floating point vocabulary. The Glossary has been updated and now includes more examples.

More significant is that RETRO now makes better use of hardware keyboards (if available), with a variety of keyboard shortcuts to make interaction faster and easier.
2017.12.18
Dec 17, 2017
This is a small maintenance release before the holidays. It has fixes a bug that could cause RETRO to crash in some rare instances, has a bunch of internal cleanups in the editor, and removes some assets that are no longer needed to reduce the application size a little.
2017.12
Dec 4, 2017
This release brings a number of improvements. The most immediate is a new dictionary browser ("Glossary") which makes it easy to find the basic documentation for each function in the core language. Other changes include expansions to the floating point and string vocabularies, bug fixes, and internal optimizations to save a little space while improving performance.
2017.11
Oct 31, 2017
Updated to the latest RETRO image with many internal improvements and a few new functions to allow easier debugging.

New words:

- `FREE`
- `s:const`
- `d:lookup-xt`

Improvements:

- Quotations are now smaller and faster
- Jumps are now smaller and faster
- Use of `@` and `!` prefixes is smaller and faster
- Reorganized memory layout to reduce size a little

Bug fixes:

- Changing string size limits now works correctly
- Resolved issue with `n:MIN`
- `set:for-each` now restores the active buffer on completion

Other:

- Fixed some mistakes in the Glossary
2017.10.7
Oct 8, 2017
This release fixes some issues and adds a little to the language:

- two pieces of documentation were missing; these have been added back
- fixed issues with two of the examples (thanks go to Cmdr Sidley for notifiying me)
- fixed a bug in `ui:get-input` that was causing crashes
- updated to the latest stable retro core
- added `s:evaluate` to interpret data from strings
2017.10
Sep 28, 2017
This release makes a few small improvements:

- optional use of haptics on iPhone 7 and 8 to indicate button touches and execution completion
- support for unicode and emoji characters
- fixes some typo's in the documentation
2017.9
Sep 19, 2017
After several months of work I am pleased to announce a new version of RETRO. This update has seen a significant improvement to the user interface and adds many new functions for you to use.

User Interface

- Redesigned UI
- Fixed bugs with rotation handling
- It is now possible to stop code execution if problems are encountered
- Added optional VT220 inspired font
- New color scheme

Documentation

- Imported the latest docs

Language Changes

- Allow use of ~~~ for code blocks (as well as ````)
- gopher:fetch now works with ports other than 70
- Added words:

- muri assembler

- as{
- }as
- r
- d
- i

- numbers

- n:MIN
- n:MAX

- sets

- set:length

- floating point

- n:to-float
- s:to-float
- f:to-string
- f:+
- f:-
- f:*
- f:/
- f:floor
- f:eq?
- f:-eq?
- f:gt?
- f:lt?
- f:depth
- f:dup
- f:drop
- f:swap
- f:over
- f:tuck
- f:positive?
- f:negative?
- f:abs
- f:log (*)
- f:power (*)
- putf (*)
- prefix:. (*)
- f:dump-stack (*)

- strings

- s:copy
- s:DIGITS
- s:ASCII-LOWERCASE
- s:ASCII-UPPERCASE
- s:ASCII-LETTERS
- s:PUNCTUATION
- s:WHITESPACE

- Renamed .s to dump-stack

- Bug Fixes

- n:to-string no longer returns -./,),(-*,( for n:MIN
2017.6
Jun 7, 2017
This release focuses on stability, environment improvements, and expanding functionality. It includes expanded documentation, more examples, and several new vocabularies to aid in your work.

New Documentation:

- basic architecture
- comparison w/classic Forth
- notes on user interface
- notes on syntax
- notes on quotes, combinators
- notes on namespaces
- notes on naming conventions
- notes on hyperstatic global environment
- iOS specific additions to the language

Updated & New Examples:

- 99 bottles of beer
- autopsy: debugging tool
- two player chess game
- greatest common divisor
- least common multiple
- fibonacci sequence
- factorials
- rosetta code: palindrome detection
- rosetta code: 1d cellular automata

Language Additions:

- added clock: namespace
- clock:year
- clock:month
- clock:day
- clock:hour
- clock:minute
- clock:second

- expanded file: namespace
- file:for-each
- file:list-all
- file:with
- file:size-of-named
- file:spew
- file:copy
- file:slurp

- added ui: namespace
- ui:get-input

- added `gopher:fetch` to obtain textual data from gopher servers

User Interface:

- Added share sheet for exporting documents
- Minor rendering fixes in the editor
- Corrected several bugs with dark mode

This release also fixes a number of rendering bugs and has numerous new optimizations and internal updates to improve performance and reliability.
2017.5
May 26, 2017
Updated to Retro-2017.5 image.

This has a smaller, faster string to number function and adds a new "set:" vocabulary for working with arrays of data, ".s" for quick stack dumps, and a "v:preserve" combinator. The entire core of the language has been hand packed to save a bit more space and eliminate unnecessary functions. The embedded documentation has been updated as well.

This release also brings an enhanced editor with syntax highlighting for more of Markdown (headers, bold and italics are now rendered). The editor also has a fix to a bug that sometimes resulted in fenced code blocks not highlighting properly when a file was initially loaded.
2017.4
Apr 26, 2017
This is a significant update to the core language and environment.

I'm pleased to bring the Listener into the environment. A small addition to the output panel, this adds a quick interaction model to Retro allowing for interactive testing and exploration of the language. On the language front, Retro now has a tighter, hand tuned core, significantly faster versions of the core string functions, and numerous expansions in other areas. These are covered in the new Glossary document which has been completely rewritten and expanded.

The interface has some small refinements, with a button in the file manager view to restore samples & documentation, separate buttons to switch between output and file manager, and some minor adjustments to button sizing and placement to make things easier to use. There's also a new, slightly more cheerful icon.

The examples have been updated to use new language features.
2017.3
Mar 29, 2017
This is a small update fixing some bugs and adding background highlighting of code regions for improved readability.
2017.2
Mar 3, 2017
The second release of 2017 brings some further improvements.

- faster loading of image file
- undo / redo in editor
- code is saved automatically now
- massive increase in memory limits

This release includes the following source modules:

- module|Buffer
- module|Characters
- module|Files
- module|FormattedStringOutput
- module|RML
- module|Strings

The following examples are included:

- example|99Bottles
- example|Autopsy
- example|Chess
- example|DumpImage
- example|GreatestCommonDivisor
- example|IterativeFibonacci
- example|LeastCommonMultiple
- example|RecursiveFactorial
- example|RecursiveFibonacci

The following documentation files are provided:

- doc|Changelog
- doc|CopyrightNotices
- doc|Glossary
- doc|UserInterface
2017.1
Jan 22, 2017
For this, the first release of 2017, I wanted to make some small, but very significant improvements.

So what's new?

- Bright and dark color schemes (change using Settings -> RETRO12 -> Dark Theme)
- Increased font size for enhanced readability
- Bug fixes in the file manager
- Code evaluator no longer freezes the interface
- Documentation now separate files, not embedded in the image
- As with all updates, this also brings in the latest changes to the RETRO language
2016.12.11
Dec 13, 2016
* Added `import` for including files in a cleaner manner
* Added source template when creating new files
* Internal cleanups and bug fixes
* Support for side by side & slide over on iPad
2016.12
Dec 4, 2016
This release is the biggest update so far.

# Project Handling

The handling of projects has changed completely. RETRO now supports multiple source files. There is a file management interface, and Save / Reload now operate on the most recently opened file.

Your code can now reference other files you create using the include word. E.g., if you keep your math functions in Math.md, add this to the start of your main sources:

````
'Math.md include
````

# Pasteboard Namespace

There's a new pb: namespace for access to the pasteboard. You can store and retrieve strings using the words in this namespace. Example:

````
'Hello_pasteboard pb:set
pb:length putn
&Heap fetch dup pb:get puts
````

# Documentation

This release also adds a documentation: namespace which can be used to access embedded documentation files. Example:

````
documentation:glossary
documentation:licenses
````

These replace the old (C) and Glossary buttons.

# Interface Changes

For those on iPhone, the toolbar sizes have been slightly reduced to allow for a little more screen real estate when editing or running code.

The bright theme was removed from this release.

If you use RETRO with a hardware keyboard several shortcuts have been added:

- cmd+s -> save
- cmd+o -> reload
- cmd+g -> go
2016.11.20
Nov 22, 2016
Bugs were fixed and features were added.

The interface is now more configurable. You can use the options in Settings -> RETRO 12 to:

- enable / disable button showing copyright information
- enable / disable the glossary button
- enable / disable the keyboard accessory

Some other interface improvements have been made:

- there's a new font
- the theme now switches properly when RETRO is opened

On to the language itself:

- updated to the latest RETRO image (minor fixes & tweaks)
- added file I/O: create, delete, read, write, etc text files via the words in the file: namespace

Other changes:

- there's a new, longer introductory text offering a better introduction to the language and interface
2016.11.12
Nov 11, 2016
Ahh, fall. It's a beautiful time of the year. The air gets colder, leaves change and fall from the trees. And I find myself sipping a cup of tea, pondering where to go with RETRO.

This is the first update of RETRO 12. It's improved in many small ways:

User Interface:

- optional bright color scheme (iOS Settings -> RETRO 12, then toggle "Bright Theme")
- revamped keyboard shortcut bar adding lots of missing symbols
- output no longer brings up the keyboard
- improved handling of buttons in main toolbar

Language Improvements:

- Adds str:for-each for iterating over characters in a string.
- Added v:update-using
- Added: nl
- Added: d:last (and related functions)
- Added does

Other:

- Added a Glossary providing a list of functions, their stack usage, and short descriptions of each
2016.11
Nov 8, 2016

RETRO FORTH FAQ

RETRO FORTH is available in regions other than the following restricted countries:
Gabon
RETRO FORTH supports English
Click here to learn how to download RETRO FORTH in restricted country or region.
Check the following list to see the minimum requirements of RETRO FORTH.
iPhone
Requires iOS 12.4 or later.
iPad
Requires iPadOS 12.4 or later.
iPod touch
Requires iOS 12.4 or later.

RETRO FORTH Alternative

You May Also Like

Get more from Charles Childers