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
10 changes: 6 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -151,16 +151,18 @@ python3 bifrost.py --shake --impls shen-lua,ShenScript # just the fast ones

Artifacts map onto their impl column (lisp→`shen-cl`, lua→`shen-lua`,
go→`shen-go`, rust→`shen-rust`, js→`ShenScript`, julia→`shen-julia`,
scheme→`shen-scheme`); `shen-swift` has no Ratatoskr builder yet and shows
`----`. Needs the per-target toolchains
(`sbcl`/`luajit`/`go`/`cargo`/`node`/`julia`/`chez`) and
scheme→`shen-scheme`, swift→`shen-swift`) — all eight ports now have a
Ratatoskr builder. Needs the per-target toolchains
(`sbcl`/`luajit`/`go`/`cargo`/`node`/`julia`/`chez`/`swift`) and
`$BIFROST_RATATOSKR_DIR` (default `../ratatoskr`); missing toolchains are
skipped, not failed. This mode is minutes, not seconds: go/rust compile from
scratch, and the **julia** target AOT-bakes a per-program sysimage
(PackageCompiler, ~250MB, several minutes) — the deploy artifact for
Shen-on-Julia, analogous to the Lisp saved image. The **scheme** target
compiles the shaken slice with shen-scheme's own `kl->scheme` into a
self-contained Chez program.
self-contained Chez program; the **swift** target drives the shen-swift
tree-walking interpreter on the shaken slice in `--shaken` mode (booting a
~200-line kernel instead of the full ~2500-line kernel).

`--shake` drives the **Go `ratatoskr` binary** (resolved on `$PATH`, else
`$RATATOSKR_BIN`, else `$BIFROST_RATATOSKR_DIR` / a sibling `../ratatoskr`); no
Expand Down
8 changes: 5 additions & 3 deletions bifrost.py
Original file line number Diff line number Diff line change
Expand Up @@ -857,8 +857,8 @@ def run_ratatoskr_parity(case, available):
# --------------------------------------------------------------------------

# Each Ratatoskr build target maps onto the impl column it runs on, so shake
# results line up with the normal matrix. shen-swift has no Ratatoskr builder
# yet, so it stays absent and shows SKIP in its column.
# results line up with the normal matrix. All eight bifrost ports now have a
# Ratatoskr builder.
#
# The `julia` target is special: shen-julia's stand-alone artifact is produced
# by AOT-compiling the shaken kernel+user KL into baked Julia methods and (per
Expand All @@ -867,9 +867,11 @@ def run_ratatoskr_parity(case, available):
# minutes and ~250MB, so it only runs under --shake (already opt-in/heavy).
# The `scheme` target compiles the shaken slice with shen-scheme's own
# kl->scheme into a self-contained Chez artifact (run via `chez --script`).
# The `swift` target drives the shen-swift tree-walking interpreter on the
# shaken slice (boot a ~200-line kernel instead of the full ~2500-line kernel).
TARGET_TO_IMPL = {"lisp": "shen-cl", "lua": "shen-lua", "go": "shen-go",
"rust": "shen-rust", "js": "ShenScript", "julia": "shen-julia",
"scheme": "shen-scheme"}
"scheme": "shen-scheme", "swift": "shen-swift"}


def _import_ratatoskr_cli():
Expand Down
10 changes: 6 additions & 4 deletions shake.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,19 +15,21 @@ import (
)

// Each Ratatoskr build target maps onto the impl column it runs on, so shake
// results line up with the normal matrix. shen-swift has no Ratatoskr builder
// yet, so it is absent and shows SKIP.
// results line up with the normal matrix. All eight bifrost ports now have a
// Ratatoskr builder.
//
// The `julia` target is special: shen-julia's stand-alone artifact AOT-compiles
// the shaken kernel+user KL into baked Julia methods and (per builders.json)
// bakes a per-program sysimage via PackageCompiler — the Julia analogue of the
// Lisp saved image / Go-Rust native binary. That bake costs minutes, so the
// shake timeout below is generous. The `scheme` target compiles the shaken slice
// with shen-scheme's own kl->scheme into a self-contained Chez artifact.
// with shen-scheme's own kl->scheme into a self-contained Chez artifact; the
// `swift` target drives the shen-swift tree-walking interpreter on the slice
// (boot a ~200-line shaken kernel instead of the full ~2500-line kernel).
var targetToImpl = map[string]string{
"lisp": "shen-cl", "lua": "shen-lua", "go": "shen-go",
"rust": "shen-rust", "js": "ShenScript", "julia": "shen-julia",
"scheme": "shen-scheme",
"scheme": "shen-scheme", "swift": "shen-swift",
}

const shakeTargetTimeout = 20 * time.Minute // accommodates the julia sysimage bake
Expand Down
Loading