CREXX

REXX Language implementation

View the Project on GitHub adesutherland/CREXX

CREXX 1.0.0 Beta 1 Release Notes

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.

Highlights

Language And Runtime Scope

Release 1 beta 1 is centered on Level B. The documented beta language surface includes the implemented systems-programming subset of CREXX:

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.

Toolchain

The beta release includes the core command-line tools:

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.

Libraries, Plugins, And Host Integration

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.

Build, Test, And Release Automation

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 Signing And Notarization

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 Status

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.

Known Beta Limitations

Where To Start

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.