What's Changed
Added
SandboxBuilder, the entry point for creating a sandbox. It gathers machine
configuration, host functions, init data and memory mappings, then builds a
MultiUseSandboxfrom a guest binary on disk, a guest binary in memory, or a
snapshot by @jprendes in #1725
Changed
- Breaking: Guest MSR state is now saved and restored across snapshots.
SandboxConfiguration::guest_msrsdeclares the MSRs a guest depends on:
declared MSRs are captured in a snapshot and restored, while every other MSR
resets to a clean default. On KVM the guest may only read or write declared
MSRs, on MSHV and WHP this is not enforced. by @ludfjig in #991 - Breaking: Filesystem paths are now represented using
PathBuf.GuestBinary::FilePathnow stores aPathBufinstead of aString, andMultiUseSandbox::generate_crashdump_to_diracceptsInto<PathBuf>instead ofInto<String>. Callers passing aStringtoGuestBinary::FilePathmust convert it using.into().
Certain fixed guest addresses were changed on AArch64 to more easily
accommodate 16k pages without wasting memory. Snapshots taken from
sandboxes using the old addresses will not be loadable by new
hyperlight versions.
Removed
Fixed
- Fix symbol resolution in guest core dumps for sandboxes created from snapshots by @ludfjig in #1618
- Reject malformed OCI snapshot metadata and non-regular artifact files during load.
- Reset XCR0 during x86 snapshot restore.
- Reseed guest libc
rand()andrandom()after restoring a snapshot to avoid multiple sandboxes sharing PRNG state.
Full Changelog (excl. dependencies)
- Adds optional repo variables for job timeout values by @simongdavies in #1600
- Fix CI caching and parameterize workflows by arch for future aarch64 by @ludfjig in #1597
- feat(ci): add mozilla sccache action by @andreiltd in #1580
- feat: support WIT source inputs in component bindgen macro by @andreiltd in #1589
- update PR validation and daily runs to reduce PR dependance on ARM64 runners by @simongdavies in #1603
- Automate removal of the ready-for-review label by @simongdavies in #1568
- Add snapshot golden tests by @ludfjig in #1446
- make sure nightly job failure adds release blocker label by @simongdavies in #1606
- PR label management needs PR write permission by @simongdavies in #1608
- Review label management by @simongdavies in #1610
- Rewrite copilot instructions by @ludfjig in #1636
- Disable arm runners since unavailable by @ludfjig in #1646
- Fix musl error assertion by @ludfjig in #1653
- Support core dump on snapshots created from snapshot/disk by @ludfjig in #1618
- feat(virtq): add virtio-villain inspired packed virtq coverage by @andreiltd in #1634
- Improve snapshot/oci validation by @ludfjig in #1668
- Fix bad state on unmap failure by @ludfjig in #1675
- Prevent MSRs from leaking across calls to
MultiuseSandbox::restoreby @ludfjig in #991 - Revert "Disable arm runners since unavailable (#1646)" by @syntactically in #1692
- fix: use PathBuf instead of String for guest binary and crash dump paths by @midsterx in #1652
- Reset xcr0 on restore by @ludfjig in #1718
- Minor quality-of-life improvements to component test/debug infrastructure by @syntactically in #1720
- Fix a couple of bugs in the guest component bindgen by @syntactically in #1732
- [hyperlight_component_util] Properly disambiguate chains of associated types by @syntactically in #1721
- [hyperlight_component_util] Properly track positivity/negativity by @syntactically in #1723
- [hyperlight_component_util] Expose the fallibility of calls to the host API by @syntactically in #1724
- Simplify GDB memory access by borrowing sandbox memory manager by @ludfjig in #1736
- Add initial single-sandbox-executing-at-a-time support for Hypervisor.framework by @syntactically in #1674
- Reseed libc rng on snapshot-restore by @ludfjig in #1667
Full Changelog (dependencies)
- chore(deps): bump actions/cache from 5.0.5 to 6.1.0 by @dependabot[bot] in #1598
- chore(deps): bump actions-rust-lang/setup-rust-toolchain from 1.16.1 to 1.17.0 by @dependabot[bot] in #1582
- chore(deps): bump addr2line from 0.26.1 to 0.27.0 by @dependabot[bot] in #1586
- chore(deps): bump proc-maps from 0.4.0 to 0.5.0 by @dependabot[bot] in #1601
- chore(deps): bump rand from 0.10.1 to 0.10.2 by @dependabot[bot] in #1624
- chore(deps): bump rust-embed from 8.11.0 to 8.12.0 by @dependabot[bot] in #1633
- chore(deps): bump bytes from 1.12.0 to 1.12.1 by @dependabot[bot] in #1632
- chore(deps): bump crossbeam-channel from 0.5.15 to 0.5.16 by @dependabot[bot] in #1628
- chore(deps): bump crossbeam-queue from 0.3.12 to 0.3.13 by @dependabot[bot] in #1627
- chore(deps): bump cc from 1.2.65 to 1.2.66 by @dependabot[bot] in #1625
- chore(deps): bump docker/login-action from 4.2.0 to 4.3.0 by @dependabot[bot] in #1623
- chore(deps): bump docker/metadata-action from 6.1.0 to 6.2.0 by @dependabot[bot] in #1621
- Remove dorny/paths-filter dep by @ludfjig in #1635
- chore(deps): bump crate-ci/typos from 1.47.2 to 1.48.0 by @dependabot[bot] in #1604
- chore(deps): bump docker/login-action from 4.3.0 to 4.4.0 by @dependabot[bot] in #1637
- chore(deps): bump docker/build-push-action from 7.2.0 to 7.3.0 by @dependabot[bot] in #1609
- chore(deps): bump cc from 1.2.66 to 1.2.67 by @dependabot[bot] in #1642
- chore(deps): bump bytemuck from 1.25.0 to 1.25.1 by @dependabot[bot] in #1641
- chore(deps): bump uuid from 1.23.4 to 1.23.5 by @dependabot[bot] in #1640
- chore(deps): bump tokio from 1.52.3 to 1.52.4 by @dependabot[bot] in #1651
- chore(deps): bump oras-project/setup-oras from 2.0.0 to 2.0.1 by @dependabot[bot] in #1639
- chore(deps): bump wasmparser from 0.252.0 to 0.253.0 by @dependabot[bot] in #1630
- chore(deps): bump cfg_aliases from 0.2.1 to 0.2.2 by @dependabot[bot] in #1650
- chore(deps): bump syn from 2.0.118 to 2.0.119 by @dependabot[bot] in #1647
- chore(deps): bump uuid from 1.23.5 to 1.24.0 by @dependabot[bot] in #1648
- chore(deps): bump bitflags from 2.13.0 to 2.13.1 by @dependabot[bot] in #1649
- chore(deps): bump spin from 0.12.1 to 0.12.2 in /src/tests/rust_guests by @dependabot[bot] in #1645
- chore(deps): bump spin from 0.12.1 to 0.12.2 by @dependabot[bot] in #1644
- chore(deps): bump linkme from 0.3.36 to 0.3.37 by @dependabot[bot] in #1666
- chore(deps): bump quote from 1.0.46 to 1.0.47 by @dependabot[bot] in #1662
- chore(deps): bump cc from 1.2.67 to 1.3.0 by @dependabot[bot] in #1663
- chore(deps): bump serde from 1.0.228 to 1.0.229 by @dependabot[bot] in #1658
- chore(deps): bump thiserror from 2.0.18 to 2.0.19 by @dependabot[bot] in #1657
- chore(deps): bump bytemuck from 1.25.1 to 1.25.2 by @dependabot[bot] in #1664
- chore(deps): bump tokio from 1.52.4 to 1.53.0 by @dependabot[bot] in #1660
- chore(deps): bump proc-macro2 from 1.0.106 to 1.0.107 by @dependabot[bot] in #1661
- chore(deps): bump anyhow from 1.0.103 to 1.0.104 by @dependabot[bot] in #1656
- chore(deps): bump serde_json from 1.0.150 to 1.0.151 by @dependabot[bot] in #1673
- chore(deps): bump tokio from 1.53.0 to 1.53.1 by @dependabot[bot] in #1671
- chore(deps): bump libc from 0.2.186 to 0.2.187 by @dependabot[bot] in #1670
- chore(deps): bump wasmparser from 0.253.0 to 0.254.0 by @dependabot[bot] in #1672
- chore(deps): bump actions/checkout from 7.0.0 to 7.0.1 by @dependabot[bot] in #1669
- chore(deps): bump syn from 2.0.119 to 3.0.1 by @dependabot[bot] in #1665
- chore(deps): bump wit-parser and it-component from 0.252.0 to 0.253.0 by @dependabot[bot] in #1631
- chore(deps): bump syn from 3.0.1 to 3.0.3 by @dependabot[bot] in #1679
- chore(deps): bump libc from 0.2.187 to 0.2.189 by @dependabot[bot] in #1678
- chore(deps): bump glob from 0.3.3 to 0.3.4 by @dependabot[bot] in #1677
- chore(deps): bump wit-component and wit-parser to 0.254.0 by @dependabot[bot] in #1680
- chore(deps): bump docker/login-action from 4.4.0 to 4.5.0 by @dependabot[bot] in #1684
- chore(deps): bump crossbeam-epoch to 0.9.20 by @jsturtevant in #1683
- chore(deps): bump serial_test from 3.5.0 to 4.0.1 by @dependabot[bot] in #1689
- chore(deps): bump cc from 1.3.0 to 1.4.0 by @dependabot[bot] in #1688
- chore(deps): bump docker/login-action from 4.5.0 to 4.5.1 by @dependabot[bot] in #1687
- chore(deps): bump addr2line from 0.27.0 to 0.27.1 by @dependabot[bot] in #1705
- chore(deps): bump crate-ci/typos from 1.48.0 to 1.49.0 by @dependabot[bot] in #1707
- chore(deps): bump wasmparser from 0.254.0 to 0.255.0 by @dependabot[bot] in #1704
- chore(deps): bump docker/login-action from 4.5.1 to 4.6.0 by @dependabot[bot] in #1693
- chore(deps): bump blake3 from 1.8.5 to 1.8.6 by @dependabot[bot] in #1713
- chore(deps): bump cc from 1.4.0 to 1.4.2 by @dependabot[bot] in #1716
- chore(deps): bump wit-parser from 0.254.0 to 0.255.0 by @dependabot[bot] in #1702
- chore(deps): bump thiserror from 2.0.19 to 2.0.20 by @dependabot[bot] in #1719
- Update CI setup workflow action by @jsturtevant in #1734
- chore(deps): bump wasmparser from 0.255.0 to 0.256.0 by @dependabot[bot] in #1738
- chore(deps): bump uuid from 1.24.0 to 1.24.1 by @dependabot[bot] in #1743
- chore(deps): bump cc from 1.4.2 to 1.4.3 by @dependabot[bot] in #1742
- chore(deps): bump wit-parser and wit-component to 0.256.0 by @dependabot[bot] in #1739
New Contributors
Full Changelog: v0.16.0...dev-latest