From 9d768eb0b0880a8cdf29b966fd636e4f006592ac Mon Sep 17 00:00:00 2001 From: tannevaled Date: Mon, 9 Nov 2026 13:38:58 +0100 Subject: [PATCH] Name the stubbed helpers, and the fourth unswept tree MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two corrections, both of a list this page states and nothing checked. The skip line said 477 examples are skipped "because our shim stubs the matcher they need" and named none of them. Read out of spec_helper.rb, they are `ruby_exe` (:882), `ruby_cmd` (:883) and `output_to_fd` (:280). The docs site named two helpers that are IMPLEMENTED (`complain`, `output`) and missed `ruby_cmd` entirely; that is fixed in go-embedded-ruby/docs#47, and the same read is now a gate. The unswept trees are `library/`, `optional/`, `command_line/` and `security/`. `command_line/` -- 32 spec files -- was missing from that sentence here, in index.html, on the docs site and in the ruby README. The conformancefigure pin moves to v0.8.0, which reads every `def … raise SpecSkip` out of spec_helper.rb and judges this page in both directions: a helper called stubbed that is not, and a stubbed helper the page names nowhere. Verified with the exact published command this lane runs, fetched through the proxy: $ go run github.com/go-embedded-ruby/docs/tools/conformancefigure@v0.8.0 --root . 6 total claim(s), 1 version claim(s) and 3 stubbed-helper mention(s) checked against the gate's 23672 at Ruby 4.0.9 (derived from RUBY_VERSION); the shim stubs output_to_fd, ruby_cmd, ruby_exe and it bites: with the line rewritten to "stubs `ruby_exe` and `complain`", the same command exits 1 naming list.html:75 and `complain`. ⛔ What it still cannot do: the completeness half applies only once a helper is named, so deleting the enumeration outright would leave nothing to be incomplete about and the lane would stay green. The docs repository closes that with a test over its own content tree; this page has no equivalent yet. Co-Authored-By: Claude Opus 5 --- .github/workflows/deploy-pages.yml | 18 ++++++++++++++---- layouts/_default/list.html | 4 ++-- layouts/index.html | 2 +- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/.github/workflows/deploy-pages.yml b/.github/workflows/deploy-pages.yml index 2a16eb9..465a9b8 100644 --- a/.github/workflows/deploy-pages.yml +++ b/.github/workflows/deploy-pages.yml @@ -118,8 +118,10 @@ jobs: # Verified with the exact published command this lane runs, fetched # through the proxy: # - # $ go run github.com/go-embedded-ruby/docs/tools/conformancefigure@v0.7.0 --root . - # 6 total claim(s) and 1 version claim(s) checked against the gate's 23672 at Ruby 4.0.9 (derived from RUBY_VERSION) + # $ go run github.com/go-embedded-ruby/docs/tools/conformancefigure@v0.8.0 --root . + # 6 total claim(s), 1 version claim(s) and 3 stubbed-helper mention(s) checked + # against the gate's 23672 at Ruby 4.0.9 (derived from RUBY_VERSION); + # the shim stubs output_to_fd, ruby_cmd, ruby_exe # # Two numbers in that line moved for reasons worth keeping apart. "1 # version claim … derived from RUBY_VERSION" is what the earlier comment @@ -133,8 +135,16 @@ jobs: # checked" and passed while that line held a stale figure. v0.7.0 reads # it. Keep this pin moving forward -- a gate pinned to a version that # cannot see a line is indistinguishable from a page with nothing wrong. - - name: The stated conformance total, and the version it was counted at, match rbgo's gate - run: go run github.com/go-embedded-ruby/docs/tools/conformancefigure@v0.7.0 --root . + # + # v0.8.0 adds a THIRD fact read out of the interpreter repository: which + # mspec helpers the shim stubs, derived from every `def … raise SpecSkip` + # in spec_helper.rb. This page said "our shim stubs the matcher they need" + # and named none of them, while conformance.md named two that are + # implemented and missed `ruby_cmd` entirely. The list is now stated here + # and checked in both directions -- a helper called stubbed that is not, + # and a stubbed helper this page names nowhere. + - name: The stated conformance total, the version it was counted at, and the stubbed helpers match rbgo's gate + run: go run github.com/go-embedded-ruby/docs/tools/conformancefigure@v0.8.0 --root . - name: Build landing page run: hugo --minify --baseURL "${{ steps.pages.outputs.base_url }}/" diff --git a/layouts/_default/list.html b/layouts/_default/list.html index f9e7cc5..bbea461 100644 --- a/layouts/_default/list.html +++ b/layouts/_default/list.html @@ -71,8 +71,8 @@

Runtime conformance — ruby/spec

22,488 examples pass in ruby/spec's language/ + core/ suites, measured 2026-09-26 on main (3e8e3cc). Three independent runs — two through the ratchet at different timeouts, one through a separate sweep — reported the same total.

diff --git a/layouts/index.html b/layouts/index.html index e35a4f8..ba0c1e3 100644 --- a/layouts/index.html +++ b/layouts/index.html @@ -59,7 +59,7 @@

Everything a Ruby runtime gives you — as a Go library.

🧩

Embeddable

A real object model — classes, mixins, method_missing, metaprogramming, Fiber. The Go API is deliberately small today: ruby.Run(src, out) runs a program on a fresh VM and writes its output to one writer. Calling a Ruby method from Go is not exposed yet.

📦

One static binary

CGO=0 by default. Tested on amd64, arm64, riscv64, loong64, ppc64le, s390x, 386 and arm; compiles for every GOOS/GOARCH Go supports — 47 targets, the BSDs, AIX, Solaris, mips and Plan 9 included (Plan 9 is vetted, not run).

⚡

AOT for integer kernels

Ahead-of-time compilation of integer-bound methods to unboxed Go. Measured on this project’s own micro-benchmarks (darwin/arm64, whole-process wall time): 8.7× MRI+YJIT on the tight-loop case, 2.0× on recursive fib(35). Only methods the compiler can lower benefit.

-
✅

Conformance, measured

23,672 ruby/spec language/ + core/ examples pass, gated in CI file by file: no spec file may pass fewer examples than its recorded row, so a regression is named rather than absorbed in a total. Only language/ and core/ are swept: library/, optional/ and security/ are not run, so this is not a percentage of Ruby. Those guards now resolve at Ruby 4.0.9 — the version this runtime reports, and the latest MRI release — so the examples behind a ruby_version_is "4.0" guard are counted, and those behind ruby_version_is ""..."4.0" are no longer asked for. The move was measured before it was made, both engines built from one commit minus the version string: +144 passing, and 27 examples that went red — a figure no pass total shows, found by comparing the two runs' failure descriptions. Front-end: ~100% of valid Ruby parsed across Rails + Puppet (2026-06).

+
✅

Conformance, measured

23,672 ruby/spec language/ + core/ examples pass, gated in CI file by file: no spec file may pass fewer examples than its recorded row, so a regression is named rather than absorbed in a total. Only language/ and core/ are swept: library/, optional/, command_line/ and security/ are not run, so this is not a percentage of Ruby. Those guards now resolve at Ruby 4.0.9 — the version this runtime reports, and the latest MRI release — so the examples behind a ruby_version_is "4.0" guard are counted, and those behind ruby_version_is ""..."4.0" are no longer asked for. The move was measured before it was made, both engines built from one commit minus the version string: +144 passing, and 27 examples that went red — a figure no pass total shows, found by comparing the two runs' failure descriptions. Front-end: ~100% of valid Ruby parsed across Rails + Puppet (2026-06).

🔒

Closed-world builds

rbgo build --closed bakes the program to bytecode and drops the front-end for a smaller binary.

🌿

A real ecosystem

Built from the go-ruby-* family — each a 100%-coverage, 6-arch stdlib module, bound natively.