Repository navigation
Raise ruby/spec floor 22215 -> 22345 after wave 30 - #659
Merged
Merged
Conversation
Three units, and one of them closes the last wholly-absent subsystem. #654 TracePoint, 0 -> 69 of 75. core/tracepoint had been pass=0 across six censuses, untouched because it is hooks in the execution core rather than an API to complete — and because a tracepoint must report a line, which the VM could not do until #645. Events line/class/end/call/ return/b_call/b_return/rescue, every accessor, enable with target:/ target_line:/target_thread:, allow_reentry. Costs ~1-2% on every program; that trade is recorded and justified in issue #658, together with the zero-cost alternative (MRI rewrites instruction encodings rather than testing per instruction). #656 String/IO encoding conformance: gsub's result-encoding negotiation, IO paragraph mode's second swallow, $/ seeded to "\n", grapheme clusters, chomp character-wise, UTF-16/32 transcoding (+44) #653 core/module: Module#dup RETURNED THE RECEIVER, Module#ruby2_keywords did not exist at all, visibility directives, const_source_location's search (+19) Measured with scripts/conformance/rubyspec/run.sh against the pinned corpus at 87b1631, 16-way, TIMEOUT=25, three consecutive runs: 22359, 22359, 22358. The floor is set thirteen below the lowest, the margin rule the last five bumps used. A caveat that belongs on this number rather than a later one: issue #655 records that the shim's `should.equal?` asserts NOTHING — it never reaches the matcher — and it is used 765 times across 328 corpus files. An unknown share of the total above is therefore vacuous. Fixing it will move the floor in an unpredictable direction and the result must be re-measured, not assumed. The number is the best we can currently measure, not a claim that every example beneath it tests something. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Three units, and one of them closes the last wholly-absent subsystem.
core/tracepoint0 → 69 of 75gsub's result-encoding negotiation, IO paragraph mode,$/, grapheme clusters,chompcharacter-wise, UTF-16/32 transcodingcore/module—Module#dupreturned the receiver,Module#ruby2_keywordsdid not exist, visibility directives,const_source_location's searchTracePoint
core/tracepointsat at pass=0 across six censuses. It stayed untouched because it is not an API to complete but hooks in the execution core — and because a tracepoint must report a line number, which the VM could not do at all until #645 built the line map. Eventsline/class/end/call/return/b_call/b_return/rescue, every accessor,enablewithtarget:/target_line:/target_thread:,allow_reentry.It costs ~1–2% on every program, including ones that never build a TracePoint. That trade was made deliberately and is recorded in #658 with the measurements, the shape already rejected for costing +3.65%, and the zero-cost alternative — MRI rewrites instruction encodings rather than testing per instruction, which is a compiler change.
Measurement
scripts/conformance/rubyspec/run.sh, pinned corpus87b1631, 16-way,TIMEOUT=25, three consecutive runs:Floor set thirteen below the lowest, the margin rule the last five bumps used.
A caveat that belongs on this number
#655 records that the shim's
should.equal?asserts nothing — it never reaches the matcher, becauseShouldProxydefinesequaland notequal?— and it is used 765 times across 328 corpus files. An unknown share of the total above is therefore vacuous.Fixing it will move the floor in an unpredictable direction, and the result must be re-measured rather than assumed. This number is the best we can currently measure; it is not a claim that every example beneath it tests something.
Three defects in our own harness have now been found in three weeks (#621, #630, #655). Each was counted as VM behaviour until someone ran MRI through the same shim — which is now the standing method for establishing a per-file ceiling, and which overturned three premises of this wave's own briefs.
🤖 Generated with Claude Code