What's Changed
Added
- Initial aarch64/KVM guest and host support, including memory layout, virtual memory operations, exception handlers, MMIO exits, register handling, and CI workflows by @syntactically in #1474
Snapshot::save,Snapshot::load, andSnapshot::checked_loadfor persisting and loading sandbox snapshots as OCI Image Layout directories by @ludfjig in #1465. Note that Hyperlight is at version 0.x, so a snapshot taken on one version may not load on another version.- Create sandboxes directly from snapshots by @ludfjig in #1459
- Cross-sandbox snapshot restore (snapshots are no longer tied to the sandbox that created them) by @ludfjig in #1499
- Support for WHP no-surrogate mode via
HYPERLIGHT_MAX_SURROGATES=0by @danbugs in #1578 - Wasmtime
flags!macro support for WIT flags types by @jsturtevant in #1327
Changed
- Breaking:
MultiUseSandbox::map_file_cowandUninitializedSandbox::map_file_cowno longer take a label argument. The APIs now accept only(file_path, guest_base)by @simongdavies in #1525. - Updated Rust toolchain to 1.94 by @simongdavies in #1527
- Updated surrogate process to
no_std, reducing overhead of loading unnecessary libraries by @simongdavies in #1533 - Replaced
tracing-logwith nativetracingmacros for guest log forwarding by @cshung in #1500 - MSHV: use VP register page for RIP/RAX writes in
run_vcpufor improved performance by @ludfjig in #1366 - MSHV: skip RIP advance on
VmAction::Haltfast path by @ludfjig in #1476 - Faster
memcpy/memsetimplementations by @ludfjig in #1473
Removed
- Removed the experimental
i686-guest,nanvix-unstable, andguest-counterfeature flags, along with 32-bit (i686) guest support and its page-table/snapshot code paths. Hyperlight guests are now 64-bit only (x86_64 and aarch64) by @simongdavies in #1525.
Fixed
- Fix colliding WIT import names by @jsturtevant in #1562
- Fix empty namespace paths in component codegen by @jsturtevant in #1331
- Fix
nomemconstraint onout32OUT-trap asm by @ludfjig in #1534 - Validate guest address ranges for overlapping regions in
map_regionby @Richard-Durkee in #1464
Full Changelog (excl. dependencies)
- feat(virtq): add packed virtio ring primitives by @andreiltd in #1382
- Refactor SandboxMemoryLayout by @ludfjig in #1455
- Move snapshot file + small reset_vcpu/apply_sregs refactor by @ludfjig in #1456
- mshv: use VP register page for RIP/RAX writes in run_vcpu by @ludfjig in #1366
- Fix broken rust cache by @ludfjig in #1477
- perf(mshv): skip RIP advance on VmAction::Halt fast path by @ludfjig in #1476
- Validate Guest Address Ranges for Overlapping Regions in map_region by @Richard-Durkee in #1464
- Create sandboxes directly from snapshots by @ludfjig in #1459
- Update README by @ludfjig in #1359
- Refactor shared memory host mappings by @ludfjig in #1485
- Remove unused blake3 hash from Snapshot by @ludfjig in #1497
- add file-backed ReadonlySharedMemory by @ludfjig in #1498
- Create inner workspace for rust guests to reduce compile time by @ludfjig in #1501
- refactor: replace tracing-log with native tracing macros for guest log forwarding by @cshung in #1500
- Build rust guests without hyperlight-libc by @ludfjig in #1505
- Allow 0xDEAD exitcode on windows guard page tests by @ludfjig in #1515
- Remove sandbox id (enable cross-sandbox snapshots) by @ludfjig in #1499
- Remove unused mapped_rgns field from memory manager by @ludfjig in #1510
- Faster c mem{cpy,set} by @ludfjig in #1473
- Remove Snapshot's empty regions field by @ludfjig in #1509
- Update surrogate process to nostd, avoid overhead of loading unecessary libraries by @simongdavies in #1533
- Really ensure that required version of cargo hyperlight is installed by @simongdavies in #1535
- refactor: use bytemuck Pod instead of AllValid by @andreiltd in #1542
- Remove i686-guest, nanvix-unstable and guest-counter features by @simongdavies in #1525
- fix(guest): drop nomem from out32 OUT-trap asm by @ludfjig in #1534
- fix: handle empty namespace paths in component codegen by @jsturtevant in #1331
- Fix just-clippyw recipe by @ludfjig in #1561
- fix: add wasmtime flags! macro support for WIT flags types by @jsturtevant in #1327
- feat(virtq): add high-level packed virtqueue producer/consumer api by @andreiltd in #1514
- Save/load snapshot from disk (oci format) by @ludfjig in #1465
- Initial aarch64/KVM support by @syntactically in #1474
- fix: disambiguate colliding WIT import names by @jsturtevant in #1562
- feat(whp): support no-surrogate mode via HYPERLIGHT_MAX_SURROGATES=0 by @danbugs in #1578
- Fix publish workflow to account for recent changes by @jprendes in #1588
- ci: increase benchmark timeout from 30 to 60 minutes by @danbugs in #1590
- Add cpu vendor to snapshots by @ludfjig in #1587
- fix: update tar-headers sysroot path for cargo-hyperlight 0.1.12 by @danbugs in #1593
Full Changelog (dependencies)
- chore(deps): bump cc from 1.2.61 to 1.2.62 by @dependabot[bot] in #1449
- chore(deps): bump tokio from 1.52.2 to 1.52.3 by @dependabot[bot] in #1448
- chore(deps): bump opentelemetry-semantic-conventions from 0.31.0 to 0.32.0 by @dependabot[bot] in #1450
- chore(deps): bump crate-ci/typos from 1.46.0 to 1.46.1 by @dependabot[bot] in #1447
- chore(deps): bump bindgen from 0.71.1 to 0.72.1 by @dependabot[bot] in #1442
- Add Ralph as maintainer by @jsturtevant in #1445
- chore(deps): bump metrics from 0.24.5 to 0.24.6 by @dependabot[bot] in #1453
- chore(deps): bump metrics-util from 0.20.3 to 0.20.4 by @dependabot[bot] in #1457
- chore(deps): bump spin from 0.10.0 to 0.11.0 by @dependabot[bot] in #1458
- chore(deps): bump crate-ci/typos from 1.46.1 to 1.46.2 by @dependabot[bot] in #1460
- chore(deps): bump built from 0.8.0 to 0.8.1 by @dependabot[bot] in #1468
- chore(deps): bump serde_json from 1.0.149 to 1.0.150 by @dependabot[bot] in #1467
- Add @squillace as a code owner by @jsturtevant in #1469
- chore(deps): bump goblin from 0.10.5 to 0.10.6 by @dependabot[bot] in #1471
- chore(deps): bump crate-ci/typos from 1.46.2 to 1.46.3 by @dependabot[bot] in #1470
- chore(deps): bump goblin from 0.10.6 to 0.10.7 by @dependabot[bot] in #1478
- chore(deps): bump rand from 0.9.2 to 0.10.1 by @dependabot[bot] in #1452
- chore(deps): bump OpenTelemetry crate set (opentelemetry, opentelemetry-otlp, opentelemetry_sdk) by @dependabot[bot] in #1463
- chore(deps): bump spin from 0.11.0 to 0.12.0 by @dependabot[bot] in #1466
- chore(deps): bump log from 0.4.29 to 0.4.30 by @dependabot[bot] in #1472
- chore(deps): bump cbindgen from 0.29.2 to 0.29.3 by @dependabot[bot] in #1482
- chore(deps): bump crate-ci/typos from 1.46.3 to 1.47.0 by @dependabot[bot] in #1481
- chore(deps): bump wasmparser from 0.248.0 to 0.249.0 by @dependabot[bot] in #1461
- chore(deps): bump cc from 1.2.62 to 1.2.63 by @dependabot[bot] in #1486
- chore(deps): bump uuid from 1.23.1 to 1.23.2 by @dependabot[bot] in #1488
- chore(deps): bump serial_test from 3.4.0 to 3.5.0 by @dependabot[bot] in #1487
- chore(deps): bump log from 0.4.30 to 0.4.31 by @dependabot[bot] in #1504
- chore(deps): bump crate-ci/typos from 1.47.0 to 1.47.2 by @dependabot[bot] in #1506
- chore(deps): bump bitflags from 2.11.1 to 2.12.1 by @dependabot[bot] in #1503
- chore(deps): bump log from 0.4.31 to 0.4.32 by @dependabot[bot] in #1511
- chore(deps): bump chrono from 0.4.44 to 0.4.45 by @dependabot[bot] in #1513
- chore(deps): bump libfuzzer-sys from 0.4.12 to 0.4.13 by @dependabot[bot] in #1512
- chore(deps): bump spin from 0.10.0 to 0.12.0 in /src/tests/rust_guests by @dependabot[bot] in #1517
- chore(deps): bump bitflags from 2.12.1 to 2.13.0 by @dependabot[bot] in #1516
- chore(deps): bump wasmparser from 0.249.0 to 0.251.0 by @dependabot[bot] in #1489
- Add script and run update for pinning action versions by @jsturtevant in #1484
- chore(deps): bump crate-ci/typos from 3e8e1dbf18c56a9ed625484ca941497c73e7da2c to 37bb98842b0d8c4ffebdb75301a13db0267cef89 by @dependabot[bot] in #1520
- Fix unic RustSec advisory via patched piet by @jsturtevant in #1519
- chore(deps): bump uuid from 1.23.2 to 1.23.3 by @dependabot[bot] in #1524
- chore(deps): bump cbindgen from 0.29.3 to 0.29.4 by @dependabot[bot] in #1523
- chore(deps): bump actions/checkout from 6.0.2 to 6.0.3 by @dependabot[bot] in #1521
- chore(deps): bump smallvec from 1.15.1 to 1.15.2 by @dependabot[bot] in #1528
- chore(deps): bump cc from 1.2.63 to 1.2.64 by @dependabot[bot] in #1532
- chore(deps): bump wasmparser from 0.251.0 to 0.252.0 by @dependabot[bot] in #1531
- Updates rust version to 1.94 by @simongdavies in #1527
- chore(deps): bump kvm-bindings from 0.14.0 to 0.14.1 by @dependabot[bot] in #1536
- chore(deps): bump kvm-ioctls from 0.24.0 to 0.25.0 by @dependabot[bot] in #1541
- chore(deps): bump syn from 2.0.117 to 2.0.118 by @dependabot[bot] in #1539
- chore(deps): bump rust-lang/crates-io-auth-action from 1.0.4 to 1.0.5 by @dependabot[bot] in #1538
- chore(deps): bump itertools from 0.14.0 to 0.15.0 by @dependabot[bot] in #1540
- chore(deps): bump actions/checkout from 6.0.3 to 7.0.0 by @dependabot[bot] in #1563
- chore(deps): bump quote from 1.0.45 to 1.0.46 by @dependabot[bot] in #1569
- chore(deps): bump log from 0.4.32 to 0.4.33 by @dependabot[bot] in #1565
- chore(deps): bump log from 0.4.32 to 0.4.33 in /src/tests/rust_guests by @dependabot[bot] in #1567
- chore(deps): bump cc from 1.2.64 to 1.2.65 by @dependabot[bot] in #1566
- chore(deps): bump spin from 0.12.0 to 0.12.1 by @dependabot[bot] in #1577
- chore(deps): bump uuid from 1.23.3 to 1.23.4 by @dependabot[bot] in #1579
- chore(deps): bump spin from 0.12.0 to 0.12.1 in /src/tests/rust_guests by @dependabot[bot] in #1576
- chore(deps): bump bytes from 1.11.1 to 1.12.0 by @dependabot[bot] in #1575
- chore(deps): bump sha2 from 0.10.9 to 0.11.0 by @dependabot[bot] in #1574
- chore(deps): bump oci-spec from 0.8.4 to 0.10.0 by @dependabot[bot] in #1573
- chore(deps): bump anyhow from 1.0.102 to 1.0.103 by @dependabot[bot] in #1583
- chore(deps): bump opentelemetry-semantic-conventions from 0.32.0 to 0.32.1 by @dependabot[bot] in #1585
- chore(deps): bump env_logger from 0.11.10 to 0.11.11 by @dependabot[bot] in #1584
- Don't fuzz on arm64 on pr by @ludfjig in #1594
- chore: prepare release v0.16.0 by @danbugs in #1595
New Contributors
- @Richard-Durkee made their first contribution in #1464
- @cshung made their first contribution in #1500
Full Changelog: v0.15.0...v0.16.0