Skip to content

Shuttle native core, rename to Shuttle, docs and CI fixes - #2

Merged
akki697222 merged 15 commits into
mainfrom
feature/native-build
Oct 15, 2026
Merged

akki697222 merged 15 commits into
mainfrom
feature/native-build

Conversation

@akki697222

Copy link
Copy Markdown
Member

Brings the Shuttle work from feature/native-build into main (14 commits, rebased on d400a75).

What's in it

Native core (native/)

  • shuttle-core + headless shuttle-runner: boots BIOS → exec → OS → co_create → child on Wasmtime 46 + Weave (shuttle-host-hooks, 677cce6).
  • Capture/restore verification at every tick boundary: 26/26 identical; a control run that drops the child table diverges 24/24.
  • Build scripts native/scripts/build.ps1 (Windows, verified locally) and build.sh (Linux/WSL2), plus the 6-platform Native (Shuttle) workflow.

Rename to Shuttle

  • Modules: wasmtimejavang → shuttle-java, wasmtimejavang-example → shuttle-java-example, wit-parser → shuttle-wit-parser, wit-codegen-maven-plugin → shuttle-wit-maven-plugin.
  • Maven groupId jp.akkiserver, parent shuttle; packages jp.akkiserver.shuttle, …shuttle.wit.parser, …shuttle.wit.codegen.
  • JNI class-name strings in Rust, native library resource paths and the code generator's import template updated to match.

Docs

  • README rewritten: Shuttle is a Wasm runtime library for computer mods (OpenComputers via an addon, a new Retro Computing mod by default), not a mod itself.
  • New docs/: building.md, java-binding.md (incl. the Weave JNI layer), wit-codegen.md. Material for removed WASI modules dropped.
  • native/HANDOFF.md (status, decisions, known issues) and CLAUDE.md updated.

CI fixes (Java CI with Maven was failing on main too)

Tested locally (Windows)

  • build.ps1: verify 26/26, control 24/24.
  • mvn -P build-host-windows-x86_64 -pl shuttle-java,shuttle-java-example -am package with RUSTFLAGS=-D warnings: 64/64 tests pass.
  • Not tested locally: the Linux cross builds and the WIT tooling tests (the wit-parser native library is Linux-only for now). This PR's CI covers them.

Known issues (not in this PR)

See native/HANDOFF.md section 6, e.g. no Windows/macOS native library for shuttle-wit-parser, no macOS Maven profile, two Weave pins (0f26893 in shuttle-java, 677cce6 in native/).

🤖 Generated with Claude Code

claude and others added 15 commits October 15, 2026 15:06
Rust workspace with shuttle-core (Machine, firmware ABI draft 0.1 host
functions, snapshot format) and shuttle-runner (headless emulator with a
capture/restore verification mode), plus minimal C guests (BIOS, OS,
child). Depends on akkiserver-dev/weave branch shuttle-host-hooks.
Java side is untouched; JNI comes in a later step.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WE6jR1fQDhj3HTdNWb73L9
- native/scripts/build.ps1: Windows; builds guests, workspace, runs verify
- native/scripts/build.sh: Linux/WSL2; same, plus --cross <arch> via cross
- .github/workflows/native.yml: guests built once on Linux, then build +
  verify on Linux/Windows/macOS x86_64 and arm64

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WE6jR1fQDhj3HTdNWb73L9
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Directories: wasmtimejavang -> shuttle-java, wasmtimejavang-example ->
  shuttle-java-example, wit-parser -> shuttle-wit-parser,
  wit-codegen-maven-plugin -> shuttle-wit-maven-plugin
- Maven: groupId jp.akkiserver, parent artifactId shuttle, module
  artifactIds match the directory names; url/scm point to
  akkiserver-dev/shuttle
- Java packages: io.github.stefanrichterhuber.wasmtimejavang ->
  jp.akkiserver.shuttle, .witparser -> jp.akkiserver.shuttle.wit.parser,
  .witcodegen -> jp.akkiserver.shuttle.wit.codegen
- Rust JNI class-name strings, native library resource paths (pom copy
  targets and loaders), the code generator's import template and .idea
  module names updated to match

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…o docs/

The root README now describes Shuttle as a Wasm runtime library for
computer mods (OC via an addon, a new Retro Computing mod by default)
and links to docs/: building.md, java-binding.md (incl. the Weave JNI
layer), wit-codegen.md. Upstream material for removed modules (WASI,
wasmtimejavang-wasi-*) and upstream release notes were dropped.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The rename left the generated import lines as
`import component.jp.akkiserver.shuttle.WitVariant;` (and WitEnum,
WitResult, WitResource), which does not compile. They now read
`jp.akkiserver.shuttle.component.*`.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- pom, native/README.md, shuttle-core docs: Shuttle is a Wasm runtime
  library for computer mods, not a mod
- native/README.md: the JNI layer goes into shuttle-java
- shuttle-wit-maven-plugin: description and Mojo javadoc said it generates
  abstract classes; it generates sub-interfaces

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
HANDOFF: Shuttle is a runtime library (OC via addon, RC by default),
new module/package names, Windows build and Maven results, decisions
made today, and a list of known issues. CLAUDE.md: language rule,
project overview and Windows build/test notes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…job)

- Allow `deprecated` in the two JNI crates: jni 0.22.4's
  `bind_java_type!` expands to `AtomicBool::fetch_update`, deprecated in
  Rust 1.99, and setup-rust-toolchain builds with -D warnings
  (jni-rs/jni-rs#846).
- Install wasm32-unknown-unknown (valuetest fixture) instead of the
  wasip targets left over from the removed WASI modules.
- Linux job: drop build-windows-x86_64 (cross has no MSVC image).
- New Windows job: host build of shuttle-java and the example, with tests.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PowerShell splits -Dcargo.profile=release into -Dcargo and .profile=release,
which Maven then rejects as an unknown lifecycle phase.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@akki697222
akki697222 merged commit 7109d4f into main Oct 15, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants