hyperlight-dev / hyperlight-dev/cargo-hyperlight

cargo hyperlight new generates an unusable project on Windows ARM64

Open
#70 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
3
Forks
6
PR merge metrics
No merged PRs in 30d

Description

Problem

cargo hyperlight new generates projects that cannot build on a native Windows ARM64 host.

The current template has two x64-era assumptions in src/new/mod.rs:

  • HYPERLIGHT_VERSION is 0.15. Its hyperlight-libc rejects the automatically selected aarch64 target with Unsupported target architecture: aarch64.
  • GUEST_ARCH is always x86_64, so the generated host loads target/x86_64-hyperlight-none/... even when cargo hyperlight build selects aarch64-hyperlight-none from the native host architecture.

This is still present on main at cargo-hyperlight 0.1.13.

Reproduction

On native Windows ARM64:

cargo hyperlight new chw
cd chw/guest
cargo hyperlight build

The build selects AArch64 automatically, then fails in Hyperlight 0.15:

Unsupported target architecture: aarch64

Hardware validation

I changed the generated guest and host dependencies to the Hyperlight 0.16 ARM64 WHP PR and changed the guest path to aarch64-hyperlight-none.

The generated sample then passed end to end on a Surface Laptop 7 with WHP:

  • Debug guest build and execution.
  • Release guest build and execution.
  • Host callback and typed guest calls.
  • Persistent guest state.
  • Snapshot and restore.
  • 10 release runs with surrogate mappings.
  • 10 release runs with HYPERLIGHT_MAX_SURROGATES=0.

Expected output was produced on every run.

Suggested direction

Generate the dependency version and guest architecture from supported/current values instead of fixed 0.15 and x86_64. The build command already defaults its target from std::env::consts::ARCH, so the scaffold should use the same architecture decision.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in src/new/mod.rs and compare the generated dependency version and guest path with the architecture selection already used by cargo hyperlight build. Reproduce the issue with cargo hyperlight new on native Windows ARM64, then verify that the generated project builds and runs for the selected architecture.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
build-system, cli
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
68/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.