REXX Language implementation
Release tag: v1.0.0-beta.1
CREXX 1.0.0 beta 1 is the first Release 1 baseline. It is a significant milestone for the project: the compiler, assembler, linker, virtual machines, standard runtime, host integration layer, documentation set, tests, and hosted release pipeline have all been brought to a coherent beta state.
This beta is intended for early users, contributors, and integrators who want to try the implemented CREXX language and toolchain, build native plugins, embed CREXX through the SAA-style API, or help shake out release-quality issues before the first stable Release 1.
crexxsaa host integration repaired against the current CREXX API baseline.Release 1 beta 1 is centered on Level B. The documented beta language surface includes the implemented systems-programming subset of CREXX:
.rexx to .rxas, assembly to .rxbin, and
execution by the VM.if, do, select, leave, iterate, and
return.parse, address, signal, and trace support through the
compiler, runtime, and exit interfaces.Classic REXX compatibility and future language levels remain project goals, but they are not the Release 1 beta 1 contract. The current language reference is the source of truth for what is supported in this beta.
The beta release includes the core command-line tools:
crexx: convenience driver for compile, link, run, and native plugin flows.rxc: compiler from CREXX source to RXAS assembly.rxas: assembler from RXAS assembly to RXBIN bytecode.rxlink: linker for combined linked bytecode images.rxvm, rxvme, rxbvm, and rxbvme: interpreter variants.rxdas: bytecode disassembler.rxpp: preprocessor.rxcpack: native packaging helper.The release includes a minimal hello world example and the public documentation needed to build and run the beta packages. Fuller curated examples are planned for beta 2.
Release 1 beta 1 includes the core function library, class library beta surface,
JSON and HTTP-related runtime support, VM decimal plugins, and the native plugin
architecture used by crexx --native.
crexxsaa is included as the initial host integration layer for this beta. The
integration has been repaired for the current CREXX API and supports the current
environment object/function protocol. Further host-function enhancements are
planned after beta 1.
rxdb remains experimental. It is smoke-tested, included for early exploration,
and not yet treated as a stable beta API.
The legacy rx_rxtcp socket plugin is retired in this beta and is planned for
removal in the next beta. New work should avoid depending on it.
The hosted GitHub Actions workflow has been simplified into four primary hosted platform builds:
Each hosted build configures with Ninja, builds the release configuration, and runs CTest before release assets are produced. The beta release candidate test run completed with 1029 passing tests.
Tagged pushes create GitHub prereleases and upload one package per platform. The release workflow now uses current GitHub Actions runtimes, avoiding the Node.js 20 deprecation path for the repository workflows.
Special local-runner workflows for nonstandard platforms are retained for maintainer use, but they are not part of the primary hosted release gate.
macOS release assets are Developer ID signed and submitted to Apple notarization as part of the tag release workflow. Command-line tools, dynamic libraries, and CREXX plugin binaries in the macOS packages are signed before packaging.
The VM host executables are signed with the entitlement needed to load CREXX native plugins. This allows the signed interpreter tools to use the plugin model without treating every beta plugin as a separately validated app bundle.
To inspect a downloaded macOS package after unpacking it, verify the code signature and Developer ID chain:
codesign --verify --strict --verbose=2 bin/crexx
codesign -dv --verbose=4 bin/crexx 2>&1 | egrep 'Authority|TeamIdentifier|Runtime'
Other binaries and plugins under bin/ can be checked in the same way with
codesign --verify.
For the current ZIP-based command-line packages, spctl --assess --type execute
may reject an individual bin/ executable with “the code is valid but does not
seem to be an app”. That message does not indicate a bad CREXX signature; it
reflects that the assessed file is a bare command-line executable rather than
an application bundle or installer package. The release workflow records the
Apple notarization result from notarytool, and a stapled .pkg or .dmg
would be the next step if the project wants a locally stapler-verifiable macOS
distribution container.
Windows x64 packages are built and tested by the hosted workflow. The current
beta package has been checked for unexpected MinGW runtime dependencies and does
not require bundled libgcc, libstdc++, or libwinpthread DLLs.
Windows binaries are not code-signed in beta 1. That means Windows download warnings and SmartScreen prompts are expected. Windows code signing is planned for beta 2 after certificate validation is complete.
Native plugin builds on Windows still require a suitable local C compiler, and user-built plugins may introduce their own runtime dependencies.
rxdb is experimental.rx_rxtcp socket plugin is still present only as legacy material
and is planned for removal in beta 2.Thank you to everyone who has tested, reviewed, and pushed the project toward this first Release 1 beta. It is the first packaged point where CREXX can be treated as a coherent language toolchain rather than a set of promising parts.