Repository navigation
Move Bifrost to ShenOSKernel 42.2 - #27
Merged
Merged
Conversation
Every port now runs the community ShenOSKernel 42.2 (shen-sources tag shen-42.2, commit 73507e06), adopted wholesale in place of Tarver S42.0 (#26). Corpus: - version-expr-42 becomes version-expr-42.2 (golden 42.2); the banner case looks for 42.2. - error-message-head is a pinned golden again ('head expects a non-empty list'), now that no port mixes kernels. - New cases/kernel-42.json: read and lineread on a file that ends without a newline, source-form handlers running before macros, and namespace externals given an expression. - Integer precision is a documented divergence with per-port buckets (2^53+1 and 2^63 overflow). - load-toplevel-echo is a hard agreement: the normaliser now drops the blank line before the run-time banner, as its doc already said. Harness: - A BIFROST-SKIP: line marks a capability SKIP, like exit 3, for programs that probe an optional facility. - A known divergence may carry a table that pins each port's bucket. - The normaliser drops the JVM 'Picked up JAVA_TOOL_OPTIONS' notice. - Captured output is capped at 8 MB (upstream 0.50 loops at REPL EOF). - impls --versions reads the banner's leading kernel token and falls back to (version) for port-local banners such as shen-c's. Adapters: kernel 42.2 everywhere; shen-scheme defaults to a git-build of the fork on 0.50 with the upstream CI build steps; stale notes on boot files, start-up, fetch scripts and pins updated. The shen-go and shen-lua pins are unchanged until 42.2 releases exist (TODO in notes). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01X718xocsFckMvso6EAKoXR
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01X718xocsFckMvso6EAKoXR
This was referenced Oct 11, 2026
pyrex41
marked this pull request as ready for review
October 11, 2026 18:15
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.
Summary
Every port Bifrost drives now runs the community ShenOSKernel 42.2:
Shen-Language/shen-sourcestagshen-42.2, commit73507e069fe147aefb728d632c4ce40bc6a7b314, SHA-2561d02273003654d34ec020ae67cb214ecec410dee3350419ff807d82b652678d8. This is lineage option (a): 42.2 replaces Tarver S42.0 wholesale. This PR moves the corpus, adapters and docs to 42.2, adds cases for the 42.1/42.2 behaviour changes, and makes the kernel-split cases hard agreements again.Port PRs:
Changes
Corpus
version-expr-42is renamedversion-expr-42.2(golden42.2);version-banner-containsnow looks for42.2.error-message-headis a pinned golden again:head expects a non-empty list.cases/kernel-42.json:lineread-eof-no-newlineandread-eof-no-newlineread from a file stream, not REPL stdin, because upstream 0.50's REPL hangs at EOF.source-form-before-macros: a handler and a macro rule share the same head. The result shows the handler ran first and the macro then expanded its output.namespace-externals-expression:(externals (fn-call)), a capability SKIP where namespaces aren't booted.bigint-2pow53-plus-1andbigint-2pow63-ordered.load-toplevel-echois a hard agreement. Its doc said the normaliser drops the blank line before therun time:banner, but the code never did; it now does.Harness
BIFROST-SKIP:output line counts as a capability SKIP, the same as exit 3, since Shen has no portableexit.known_divergencecase can carry atablepinning each port to its bucket; a port that changes bucket is a FAIL.Picked up JAVA_TOOL_OPTIONS/_JAVA_OPTIONS/JDK_JAVA_OPTIONS:lines, so shen-truffle passes with a proxy-setJAVA_TOOL_OPTIONS.impls --versionsreads the leading kernel token of the banner, and falls back to(version)for port-local banners such as shen-c'sShen-C 0.2.3.evaluateCaseis split into run andjudgeCase.Adapters
kernelis42.2everywhere; shen-joy isbounded-42.2-subset.git-buildof the pyrex41 fork (upstream v0.50 merged, plus the EOF and*hush*fixes), using the upstream CI steps:fetch-kernel,fetch-prebuilt,precompile-with-prebuilt,all. The oldmake allcould not build from a fresh clone.brewis documented as not a 42.2 route: homebrew-core has no shen-scheme formula, and the Shen-Language tap ships 0.17.petite.boot+scheme.boot+lib/shen-scheme/shen-scheme/runtime.so, overridable with$SHEN_SCHEME_HOME.shen.initialise, ~0.5 s boot, 143/143, native launcher,--stdlib), shen-erl (nounzip), shen-cl (scripts/fetch-kernel.sh), shen-truffle (JDK 23+, JVM notice) and shen-c (boot sequence and known gaps).programs/joy-sum.shen→32004000;tests/fib.shenis a capability SKIP.v1.5.0and shen-luav0.11.0/0.11.0-1pins are unchanged, with a TODO: no 42.2 releases exist yet. Use--ref kernel-42.2until they do..gitignorecovers shen-lua's.stlibcache;.gitattributeskeeps the EOF fixtures byte-exact.Docs
docs/matrix.md: kernel, capability SKIP, precision table, upstream-reference notes, known port gaps, normaliser and joy shake.docs/install.md,docs/cli.md,docs/port-layout.md,README.md.Verification
go vet ./... && go test ./...: ok.bifrost --impls shen-cl,shen-go,shen-erl,shen-lua,ShenScript,shen-scheme,shen-julia,shen-c,shen-rust,shen-swift,shen-truffle, with every port onkernel-42.2and shen-scheme as the fork built from shake: add scheme (shen-scheme) target #9: 64 pass, 2 diverge (known), 6 FAIL.namespace-externals-expressionpasses on shen-scheme and shen-rust and is SKIP elsewhere.0.3Shen-C 0.2.3integer?is false for4.0hash 1≠hash 1.0BIFROST_SHEN_SCHEME=<shen-scheme 0.50> bifrost --impls shen-scheme,shen-cl,shen-go,shen-rustgives 68 pass, 2 diverge, 2 FAIL. The two FAILs are exactlyhush-file-write(upstream writes 0 bytes under-q) andstdin-eof-clean-exit(the upstream REPL loops). Both are intended and documented.bifrost impls --versions: all 11 installed ports report42.2, including shen-c through the(version)fallback, and upstream 0.50.bifrost --heavy --only yggdrasil-shake-paritywith a Yggdrasilkernel-42.2build (shen-julia skipped as a host by default):kernel.kl+ manifest are byte-identical across shen-cl, shen-go, shen-erl, shen-rust, shen-lua, ShenScript, shen-scheme, shen-swift and shen-truffle. shen-c FAILs: as a host it loads Yggdrasil but writes nokernel.kl.Remaining work / known failures
--versionbanner, quiet script mode, float printing, and the Yggdrasil host producing nokernel.kl.integer?on integral floats, andhashagreeing with=.--ref kernel-42.2.--heavyis not fully green while shen-c is included.Refs #26
🤖 Generated with Claude Code
https://claude.ai/code/session_01X718xocsFckMvso6EAKoXR
Generated by Claude Code