Object REXX
Object REXX is a high-level, general-purpose, interpreted, object-oriented programming language. Today it is generally referred to as ooRexx, which is the maintained and direct open-source successor to Object REXX.
It is a follow-on and a significant extension of the Rexx programming language, retaining all the features and syntax while adding full object-oriented programming capabilities and other new enhancements. Following its classic Rexx influence, ooRexx is designed to be easy to learn, use, and maintain. It is essentially compliant with the "Information Technology – Programming Language REXX" ANSI X3.274-1996 standard and therefore ensures cross-platform interoperability with other compliant Rexx implementations. Therefore, classic Rexx programs typically run under ooRexx without any changes.
There is also Rexx Object Oriented, which was originally developed by Kilowatt Software and is an unmaintained object-oriented implementation of classic Rexx.
History
In 1988, the "Oryx" project at IBM, under the technical direction of Simon C. Nash, experimented with merging classic Rexx with the object model of Smalltalk. The motivation behind the project was to transfer the advantages of OOP to classic Rexx while remaining compatible and thus transferring the usability of classic Rexx to OOP. Early on, the projects focused on OOP aspect such as treating everything as an object, object-based encapsulation and message passing, object-based concurrency, classes and inheritance.This initial work later led under the direction of Rick McGuire to the first prototype of Object REXX, which was presented in 1992. In 1994, IBM announced that Object REXX would replace classic Rexx as the standard REXX interpreter in the next version of OS/2. In 1996, Object REXX was released as part of the OS/2 Warp 4 operating system. In 1997, versions for Windows 95, Windows NT and Linux followed. In 1999 an Object REXX version for AIX V4.1.5 or higher was released. In 2000, versions for zLinux and Sun/Solaris followed. For Windows 2000, Windows Me, Windows 98 and Windows NT 4.0, the last major update for Object REXX was released in 2001.
On 12 October 2004, IBM announced the discontinuation of Object REXX and transferred the source code and licensing rights to the non-profit Special Interest Group, the Rexx Language Association. The code that IBM released to open source did not include the classes for IBM System Object Model, which is known as the object framework for OS/2's Workplace Shell. Although IBM discontinued the development of SOM in 1997, it is still a fundamental framework for OS/2. The OS/2 version of Object REXX includes classes to support SOM and WPS. These are included in OS/2's initial follow-on product, eComStation, and also in its current descendant, ArcaOS, for which IBM's original Object REXX interpreter continues to be available.
In 2005, the RexxLA released ooRexx as a new incarnation of Object REXX as free and open-source software under the Common Public License. This first version of ooRexx 3.0.0 has been heavily refactored compared to the original IBM source code in order to increase readability. Later, the ooRexx kernel was rewritten in pure C++, and a new architecture and native interface were designed and implemented under the technical direction of Rick McGuire. This work enabled the RexxLA to release ooRexx 4.0.0 with support for 64-bit in 2009. To this day, the RexxLA continues to develop, support and maintain ooRexx as well as classic Rexx and NetRexx. Furthermore, the RexxLA organizes international annual symposia.
Releases
The following table contains noteworthy features and changes of major Object REXX and ooRexx interpreter versions. All ooRexx releases and the necessary documentation are available freely on SourceForge. For Arch Linux based distributions the current and the development version are available as Arch User Repository. Since version 5.0.0 there are portable versions of the interpreter that can be used without installation, and an also exists. The contains the latest portable version of ooRexx, Netrexx, a Netrexx shell, the Java bridge and associated packages, a shell for ooRexx and various other packages and programs.For Intellij IDEA, the ooRexxPlugin adds support for syntax highlighting, syntax checking, code completion and documentation support modeled after Javadoc using annotations. As of September 2012 there is support for syntax highlighting of ooRexx 4.0 features in Vim. is a benchmark that measures the number of Rexx clauses per second that an interpreter processes.
| Major Releases | Release date | Notable Features and Changes |
| 1996-09-25 |
| |
| 1997-02-28 | ||
| 1999-04-09 | ||
| 2001-04-21 | ||
| 2005-03-30 | ||
| 2006-08-21 | ||
| 2006-11-23 | CircularQueue class | |
| 2007-09-17 | MutableBuffer, String and Object classes | |
| 2008-01-22 | ||
| 2009-09-30 | Buffer, IdentityTable, Orderable, Package, Pointer, RexxContext, Routine, WeakReference and SocketClass classesRexxQueue, Object, DateTime, Method, Stem, String, MutableBuffer, OLEObject classes | |
| 2011-09-28 | File class and new methods for DateTime class | |
| 2014-02-23 | Relation, OrderedCollections, Array, String, Mutablebuffer, StackFrame, Queue and OrderedCollection classes | |
| 2022-12-22 | AlarmNotification, Json, MessageNotification, RexxInfo, StringTable and Validate classesAlarm, Class, Collection, Directory, Message, Method, MutableBuffer, Object, Package, Routine, String and RxFtp classes | |
| 2025-05-02 | Json classoleinfo scripts to facilitate Windows automationTraceObject class to support the tracing of multi-threaded programs | |
| 2025-05-05 |
Design philosophy
ooRexx follows the design philosophy of classic Rexx to create a "human-centered" programming language that is easy to learn, code, remember and maintain. This is achieved, in part, by keeping the language small and following the principle of least astonishment. A readable syntax is enabled by being case-insensitive, free-form, requiring as little punctuation as possible, and using instructions that are straightforward English. In addition, it is a dynamic programming language that offers flexibility and allows to focus on development rather than language constraints.Following the "documentation before implementation" design principle of classic Rexx, ooRexx offers comprehensive documentation in accordance with the IBM Style Guide that includes syntax diagrams and examples.