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 ReleasesRelease dateNotable Features and Changes
1996-09-25
  • First official release as part of OS/2 Warp 4
  • Support for object-oriented paradigm
  • Concepts such as SELECT, DO loops, IF-THEN-ELSE branching
  • Support for procedure and function calls, stems and compound variables
  • Provides array handling, arithmetic and built-in functions
  • Includes interfaces to DB2, TCP/IP sockets and C applications
1997-02-28
  • First releases for Windows
  • Development Edition additionally provides a dialogue library and editor as well asa built-in tokeniser
  • 1999-04-09
  • First release for AIX V4.1.5
  • Addition of library for file transfer protocol
  • 2001-04-21
  • Support for Windows 98, Windows Me, Windows 2000, and Windows NT
  • Support for Object Linking and Embedding/ActiveX, Windows Script Host engine and Unicode functions
  • Addition of RxMath native library
  • 2005-03-30
  • First release as open-source
  • Supports 28 keyword instructions, four directives, 29 classes with associated methods and 75 built-in functions
  • Includes an extension class for regular expressions and ooDialog 3.0.0
  • Improved PDF documentation
  • 2006-08-21
  • Various enhancements
  • Separate documentation for ooDialog
  • 2006-11-23
  • Support for Linux, Windows, AIX and Solaris
  • Additional methods for various classes and new functions for the RexxUtil library
  • Addition of CircularQueue class
  • 2007-09-17
  • Support for MacOS
  • Additional methods for the MutableBuffer, String and Object classes
  • Includes interface to Open Office
  • 2008-01-22
  • Various enhancements
  • 2009-09-30
  • Support for 64bit versions of Linux, AIX and Windows
  • Drop support for WSH engine
  • Improved C++ application programming interface
  • Addition of Buffer, IdentityTable, Orderable, Package, Pointer, RexxContext, Routine, WeakReference and SocketClass classes
  • New methods for RexxQueue, Object, DateTime, Method, Stem, String, MutableBuffer, OLEObject classes
  • Additional classes and methods for ooDialog
  • Addition of sample programs and separate documentation for the Windows extension library
  • 2011-09-28
  • Addition of RxUnixSys library and ooSQLite extension
  • Enhancement of TCP/IP socket and ooDialog support
  • Addition of File class and new methods for DateTime class
  • Addition of extension classes for handling the comma-separated values, multipurpose internet mail extensions and simple mail transfer protocol
  • Separate documentation for the Rexx and Unix extension library
  • 2014-02-23
  • More than 43 enhancements
  • Standalone installer for ooDialog 4.2.3 and several new classes and methods
  • Systemd support and compliance with Linux Standard Base
  • New methods for the Relation, OrderedCollections, Array, String, Mutablebuffer, StackFrame, Queue and OrderedCollection classes
  • Separate documentation for ooSQLite external library
  • 2022-12-22
  • A total of 86 new features and 76 enhancements
  • Addition of AlarmNotification, Json, MessageNotification, RexxInfo, StringTable and Validate classes
  • New methods for Alarm, Class, Collection, Directory, Message, Method, MutableBuffer, Object, Package, Routine, String and RxFtp classes
  • Separate documentation ooRexxUnit, orxnCurses, C/C++ APIs and the release and build environment
  • 2025-05-02
  • A total of 36 enhancements
  • Several improvements to Json class
  • Inclusion of oleinfo scripts to facilitate Windows automation
  • Addition of the TraceObject 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.