Skip to content

v3.28.0

Choose a tag to compare

@github-actions github-actions released this 12 Sep 16:28
· 417 commits to main since this release
`rakupp upgrade` needs nothing installed, which is the whole point of it

CI has been red on all three platforms since the installer batch landed, and it
never reproduced here. `t/regression/rakupp-upgrade.raku` failed with

    Could not find Digest::SHA256::Native in: …

for seven of its rows, `--check` included — that is, `rakupp upgrade` died
before deciding anything at all.

`tools/upgrade.raku` opened with `use Digest::SHA256::Native`, which is an
ECOSYSTEM DISTRIBUTION. The engine answers `Digest::Native` itself (DATA-PLAN
P3, `kDataNativeModules` in src/Interpreter.cpp) and that is the name this
wanted: the comment three lines above the `use` says the checksum is "the
ENGINE's own SHA-256, so nothing beyond curl and tar has to exist on the box".
It was one word away from being true.

Proven rather than assumed — with the module store hidden, so the CI condition
is reproduced:

    HOME=<empty> rakupp -e 'use Digest::Native; say sha256-hex("abc")'
    ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad   # correct

    HOME=<empty> rakupp -e 'use Digest::SHA256::Native; say sha256-hex("abc")'
    Cannot locate native library … (incompatible architecture)

and `rakupp upgrade --check` now reaches its real answer ("this is a build tree,
not an install") instead of dying on the `use`.

Why it hid: this machine has BOTH distributions installed, so the regression
case passed locally every time while failing everywhere else. The failure detail
was in the CI log all along — the runner echoes a failing case's `FAIL:` lines —
and I had grepped the wrong side of the `not ok`.

`rakupp upgrade` is the advertised way to update a rakupp installed by the
one-liner, so this was broken for every user who did not happen to have an
unrelated ecosystem module. It ships in v3.28.0's notes as a fix, not as a
regression, because v3.27.0 is where it landed.

Gates: t/run.raku 868/868, t/install/run.raku 137 ok. Roast and perf were not
re-run — the change is to an embedded tool script, not to a code path either
of them exercises.