Skip to content

Binary releases: self-contained archives for Linux, Windows and macOS - #1

Merged
Largo merged 1 commit into
masterfrom
release-binaries
Sep 30, 2026
Merged

Largo merged 1 commit into
masterfrom
release-binaries

Conversation

@Largo

@Largo Largo commented Sep 30, 2026

Copy link
Copy Markdown
Owner

Adds binary builds of IronRuby.

  • Util/package-release.sh <rid> publishes a self-contained, ReadyToRun ir for net8.0 and packs it with Src/StdLib, the launchers, README and licenses. It keeps the checkout's layout, so ir.sh, irb.sh, igem.sh and irubyc.sh work from the unpacked directory. No .NET is needed to run it.
  • .github/workflows/release.yml builds linux-x64, win-x64 and osx-arm64 (experimental, continue-on-error). A pushed v* tag publishes a GitHub release with SHA256SUMS; a suffix like -preview1 makes it a pre-release. PRs that touch the packaging, and manual runs, only upload artifacts. prism is pinned to the revision Src/Prism/Generated belongs to, and a step checks that.
  • ir.sh / ir.cmd fall back to the Release build when there is no Debug build.
  • irubyc skips the .NET runtime pack files next to a self-contained ir (from ir.deps.json). Before, compiling the host failed with CS0433.

Tested locally on Linux (linux-x64 archive, 44 MB):

  • ir, igem list and piped irb run with env -i (no .NET on PATH)
  • irubyc --single-file --self-contained from the archive works, and the result runs without .NET
  • irubyc --library from the archive works, and a .NET 8 host loads the plugin
  • irubyc --single-file from a normal framework-dependent Release build still works

Util/package-release.sh publishes a self-contained ReadyToRun ir and packs it with
the standard library and the launchers in the checkout's layout; release.yml runs it
on each platform and publishes the archives when a v* tag is pushed.

ir.sh and ir.cmd run the Release build when there is no Debug one, which is what an
unpacked archive has.  irubyc no longer references or copies the .NET runtime that a
self-contained ir carries next to it (CS0433 on every type), so it works from a
release too.
@Largo
Largo merged commit 3972ee5 into master Sep 30, 2026
10 checks passed
@Largo
Largo deleted the release-binaries branch October 12, 2026 15:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant