Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 14 additions & 4 deletions .github/workflows/deploy-pages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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/[email protected] --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/[email protected] --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
Expand All @@ -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/[email protected] --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/[email protected] --root .

- name: Build landing page
run: hugo --minify --baseURL "${{ steps.pages.outputs.base_url }}/"
Expand Down
4 changes: 2 additions & 2 deletions layouts/_default/list.html
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,8 @@ <h3>Runtime conformance — ruby/spec</h3>
<p><b>22,488 examples pass</b> in ruby/spec's <code>language/</code> + <code>core/</code> suites, measured 2026-09-26 on <code>main</code> (<code>3e8e3cc</code>). Three independent runs — two through the ratchet at different timeouts, one through a separate sweep — reported the same total.</p>
<ul>
<li>CI gates <b>file by file</b>, not on a total: no spec file may pass fewer examples than its recorded row, and none may stop loading. The sum of those rows is <b>23,672</b>, re-recorded at Ruby 4.0.9 (2026-11-03) on the pinned runner that enforces it — it is what CI guarantees, while the measured total above is what one dated run did. One file (<code>core/random/bytes_spec.rb</code>) is unstable between 8 and 9 passing examples; since 2026-11-04 its row holds <b>8</b>, its floor, because a row recorded at the high draw makes the next ordinary run a red build. This replaced a single shrink-only floor of 22,475, which needed a margin wider than the largest spec file and so could not see a regression smaller than that.</li>
<li><b>Only <code>language/</code> and <code>core/</code> are swept.</b> ruby/spec's <code>library/</code>, <code>optional/</code> and <code>security/</code> trees are not run at all, so this figure is <b>not</b> a percentage of Ruby, and most of the standard library sits outside it.</li>
<li>Of the examples that ran, <b>93.3%</b> pass (22,488 of 24,116); 477 more are skipped because our shim stubs the matcher they need, and 10 of 2,206 spec files produce no result. Skips and unreadable files sit outside the ratio entirely.</li>
<li><b>Only <code>language/</code> and <code>core/</code> are swept.</b> ruby/spec's <code>library/</code>, <code>optional/</code>, <code>command_line/</code> and <code>security/</code> trees are not run at all, so this figure is <b>not</b> a percentage of Ruby, and most of the standard library sits outside it.</li>
<li>Of the examples that ran, <b>93.3%</b> pass (22,488 of 24,116); 477 more are skipped because the shim stubs <code>ruby_exe</code>, <code>ruby_cmd</code> and <code>output_to_fd</code> — three helpers that would need a subprocess or real file-descriptor redirection — and 10 of 2,206 spec files produce no result. Skips and unreadable files sit outside the ratio entirely.</li>
<li>The guarantee has climbed from a floor of <b>6,000</b> on 2026-08-03 to a per-file baseline summing <b>23,672</b>. Two earlier jumps were fixes to the <b>measurement</b> — the mspec shim, and a parser upgrade that made 13 previously-unparseable spec files visible — which are gains in what the measurement can <i>see</i>, not in what the VM can <i>do</i>.</li>
</ul>
</div>
Expand Down
2 changes: 1 addition & 1 deletion layouts/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ <h2>Everything a Ruby runtime gives you — as a Go library.</h2>
<div class="card"><div class="ico">🧩</div><h3>Embeddable</h3><p>A real object model — classes, mixins, <code>method_missing</code>, metaprogramming, Fiber. The Go API is deliberately small today: <code>ruby.Run(src, out)</code> runs a program on a fresh VM and writes its output to one writer. Calling a Ruby method from Go is not exposed yet.</p></div>
<div class="card"><div class="ico">📦</div><h3>One static binary</h3><p>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).</p></div>
<div class="card"><div class="ico">⚡</div><h3>AOT for integer kernels</h3><p>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): <b>8.7×</b> MRI+YJIT on the tight-loop case, <b>2.0×</b> on recursive <code>fib(35)</code>. Only methods the compiler can lower benefit.</p></div>
<div class="card"><div class="ico">✅</div><h3>Conformance, measured</h3><p><b>23,672</b> ruby/spec <code>language/</code> + <code>core/</code> examples pass, gated in CI <b>file by file</b>: no spec file may pass fewer examples than its recorded row, so a regression is named rather than absorbed in a total. <b>Only <code>language/</code> and <code>core/</code> are swept:</b> <code>library/</code>, <code>optional/</code> and <code>security/</code> are not run, so this is not a percentage of Ruby. Those guards now resolve at Ruby <b>4.0.9</b> — the version this runtime reports, and the latest MRI release — so the examples behind a <code>ruby_version_is "4.0"</code> guard are counted, and those behind <code>ruby_version_is ""..."4.0"</code> are no longer asked for. The move was measured before it was made, both engines built from one commit minus the version string: <b>+144 passing</b>, and <b>27 examples that went red</b> — 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).</p></div>
<div class="card"><div class="ico">✅</div><h3>Conformance, measured</h3><p><b>23,672</b> ruby/spec <code>language/</code> + <code>core/</code> examples pass, gated in CI <b>file by file</b>: no spec file may pass fewer examples than its recorded row, so a regression is named rather than absorbed in a total. <b>Only <code>language/</code> and <code>core/</code> are swept:</b> <code>library/</code>, <code>optional/</code>, <code>command_line/</code> and <code>security/</code> are not run, so this is not a percentage of Ruby. Those guards now resolve at Ruby <b>4.0.9</b> — the version this runtime reports, and the latest MRI release — so the examples behind a <code>ruby_version_is "4.0"</code> guard are counted, and those behind <code>ruby_version_is ""..."4.0"</code> are no longer asked for. The move was measured before it was made, both engines built from one commit minus the version string: <b>+144 passing</b>, and <b>27 examples that went red</b> — 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).</p></div>
<div class="card"><div class="ico">🔒</div><h3>Closed-world builds</h3><p><code>rbgo build --closed</code> bakes the program to bytecode and drops the front-end for a smaller binary.</p></div>
<div class="card"><div class="ico">🌿</div><h3>A real ecosystem</h3><p>Built from the <b>go-ruby-*</b> family — each a 100%-coverage, 6-arch stdlib module, bound natively.</p></div>
</div>
Expand Down
Loading