Version History

This page documents the release history of the fOOrth language system. The github repository contains the entire history while the RubyGems record starts at version 0.5.0.


A minor update, adding support for finer control of mutability:

  • Updated the .mutable? method so that it now works on any type of object, not just strings and string buffers.
  • Added the protect and .protect methods to prevent accidental modification of critical data.


A major change to the way string data are handled.

  • Added the new StringBuffer class. As of this version, instances of String are now immutable. The StringBuffer class is a specialized, mutable subclass of strings, specializing in buffering data.


A minor release to clear the backlog of small changes for the next major release.

  • Updated the _FILE_ method to return nil when no file name exists.
  • A multitude of updates to the User’s Guide as a result of several proof-reading scans.


  • Procedures can now have local values and variables.
  • Code clean-up and refactoring.
  • Numerous corrections to the User’s Guide documentation.


Updates to Ruby gems caused a flood of warnings, which this version fixes.


Released the fOOrth gem, updated the portable document version of this guide.


  • Added fibers, bundles, and synchronized bundles.
  • Added the _FILE_ method.
  • Code name refactoring and cleanup.
  • Fixes to the fOOrth standalone program and the sire debug utility.


  • Added the .check and .check! methods to the Class class.
  • Updated all unit and integration tests to use minitest_visible version 0.1.0.
  • Comparisons with zero now use the specialized zero? method of Ruby.


  • Switched from the “scanf” library to the “ruby_sscanf” gem due to unresolved issues with the former.
  • Added the )pry command as an alternative to the )irb command.


  • Replaced the Readline library with the MiniReadline gem. This avoids several bugs and issues with the former code.
  • Added the .put_all and .append_all class methods to OutStream.
  • Added the parse and p” methods to the String class along with a section on the syntax of parse strings.
  • Added a User’s Guide chapter on using the line editor and history buffer.
  • Added a chapter on Input/Output to the User’s Guide.
  • Added a chapter on Formatting and Parsing
  • Corrected formatting between tables to avoid wasted space.


  • Added needed support for executing fOOrth directly from the command line.
    Formatting fixes for this documentation.
  • Shortened class names FalseClass to False, NilClass to Nil, and TrueClass to True.
  • Enhanced Array ↔ Hash compatibility.
  • Added stack, queue, and deque support to the Array class.
  • Deprecated the Stack class.


  • Arrays: Added the scatter/gather methods. Deprecated join/split methods. Allow any object to be inserted with the .+left/mid/midlr/right methods. Firmed up the exclusions on negative sizes and widths.
  • Refactored the fOOrth native error codes.
  • Redesigned exception handling to handle errors in a more consistent manner.
  • Implemented sub-project “stack_integrity”. This aims to ensure that, in the event of an error, most (if not all) operations, leave the stack in a “clean” state making error the recovery process much simpler.


  • Added the Duration class, a whole host of methods and documentation.
  • Changed the Time class to return Duration objects when computing the span of two Time objects.
  • The conventional format operation for all objects now has proper error handling added to catch malformed format strings.
  • Minor assorted User Guide updates.
  • Documented most of the System Call error types.


A minor update with a fix to method mapping, documentation upgrades and new Procedure methods call_v, call_x, and call_vx.


Reworked the protocol of the .fmt methods and renamed them to format. Also:

  • Added the Mutex class.
  • Added the Time class.


Significant changes: The introduction of Procedure Literals as an integral part of the compiling process. For linguistic harmony, methods like .each{ … } are now .each{{ … }} to match the way procedure literals work with {{ … }}. This change has resulted in a large reduction in the need for helper methods and other such kludges.


Hot fix for a re-factoring bug and inadequate testing.


Re-factored the compiler sub-system.


Enough small changes accumulated to justify a step in version. Some notable changes:
Support for nested contexts with no mode change.

  • Array and Hash literals now run in the current mode rather than always deferred.
  • Added the .empty method to Array and Hash; Added .length to Hash.
  • Numerous fixes for Rational math. Conversions and rounding now more intuitive.
  • Added the .join and .split methods to Array.
  • Added missing documentation to the Thread class.
  • Arrays and Hashes now display in fOOrth format. Previously Ruby formatting was used.


This minor version change was largely a test of the new Git branching model for development. Some notable code enhancements included:

  • Fixes for class/subclass creation mode issues.
  • The 2drop and 2dup methods.


This version finds fOOrth with much of the core functionality and an initial draft user’s guide and reference manual. This effort has taken a lot longer than was originally anticipated, but is now ready to proceed with incremental improvements.

From the time before… Three!

The history of version before 0.0.3 is not documented here. It can be puzzled out from the git repository record, but it holds little value due to the extreme state of flux that was in effect in the development process. It was not until version 0.0.3 was created that some measure of stability and documentation existed.