REXX Language implementation
\crexx{} uses language levels to name related REXX-family language surfaces without pretending they are all implemented by the same compiler. The letters are a map, not a compatibility promise.
For the Release 1 beta line, Level B is the supported cREXX language documented by this reference. Other levels are either historical context, project direction, or editor/tooling targets unless their documentation explicitly says that a compiler feature is implemented and tested.
Level B is the foundation language for the current compiler, standard library, tooling, and examples. It is deliberately more explicit than Classic REXX:
options levelb.int, .boolean, .float, .decimal,
.string, .binary, .object, and .void.string[]namespace, import, and expose.rxbin bytecode and can be linked into deployable imagesLevel B is used to implement much of the standard library. That is an intentional part of the architecture: the same language available to users is also used to build the platform.
The following names are used by the project, but their status is deliberately different:
| Level | Meaning | Current project status |
|---|---|---|
| Level A | Early compact REXX proof-of-concept foundation. | Historical only. Not a release target. |
| Level B | Current typed cREXX foundation language. | Implemented and documented as the Release 1 beta user language. |
| Level C | Classic REXX compatibility. | Not a release compiler language yet. A dedicated DSLSH syntax-highlighting/parser-mode front end now exists as the first concrete compatibility slice. |
| Level D | A cREXX-compatible extension direction above Classic REXX. | Direction only. Not a release language yet. |
| Level E | Object REXX / ooRexx relationship point. | Planned only as a DSLSH syntax-highlighting target. cREXX does not plan to compile or run ooRexx as Level E. |
| Level G | General-purpose modern cREXX direction built on Level B. | Directional, with some real library work such as rxfnsg; not the baseline user language for this release. |
| Level L | Language-engineering cREXX direction for parser, grammar, AST, and symbol-table work. | Direction only. Not a release language yet. |
| Level N | NetRexx relationship point: Rexx-family syntax with Java/JVM integration. | Planned only as a DSLSH syntax-highlighting target. cREXX does not plan to compile or run NetRexx as Level N. |
DSLSH syntax-highlighting support is allowed to be wider than the compiler. It can help users edit and diagnose REXX-family source without claiming that cREXX can execute that source.
Level C is the first example of that split. The project now has Level C
parser-mode and syntax-highlighting work for Classic REXX source, while normal
rxc compilation of options levelc remains gated as unsupported. This lets
the project build useful editor support and standard-diagnostic experience
before committing to a full Classic REXX lowering/runtime path.
Levels E and N should be understood in that same tooling sense. They reserve clear names for Object REXX and NetRexx editor support, but they are not cREXX runtime or source-compatibility commitments.
The compiler can be given a default level with rxc --level levelb. The source
file wins if it contains an explicit options instruction.
The crexx driver gives headerless top-level scripts a practical default by
compiling them as Level B and importing rxfnsb. This convenience does not
change the recommendation for reusable source: write the options and
import lines explicitly.
Level B borrows from REXX, but it is not a drop-in Classic REXX interpreter. Programs that rely on Classic REXX’s untyped variable model, late binding, or default built-in function visibility usually need small, explicit Level B changes.
The compatibility goals for future levels are important project direction, but this Release 1 beta documentation should not describe future compatibility as current behaviour.