Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
a868f66
Closes #274: Adding FFI function for types bool, float, String, vecbytes
vshailesh Sep 22, 2025
4034bab
import fixes for #274
vshailesh Sep 23, 2025
78cca4b
change of function name
vshailesh Sep 23, 2025
8a16031
format fixes
vshailesh Sep 23, 2025
6713bfd
Bump libc from 0.2.175 to 0.2.176 (#910)
dependabot[bot] Sep 24, 2025
42d5196
Bump tempfile from 3.22.0 to 3.23.0 (#909)
dependabot[bot] Sep 24, 2025
0336c2c
Bump windows from 0.62.0 to 0.62.1 (#916)
dependabot[bot] Sep 26, 2025
8729967
Bump windows-sys from 0.61.0 to 0.61.1 (#914)
dependabot[bot] Sep 26, 2025
2d24b1f
Bump flatbuffers from 25.2.10 to 25.9.23 (#911)
dependabot[bot] Sep 26, 2025
ceb86ca
Bump opentelemetry-semantic-conventions from 0.30.0 to 0.31.0 (#915)
dependabot[bot] Sep 26, 2025
3534df1
Bump crate-ci/typos from 1.36.2 to 1.36.3 (#912)
dependabot[bot] Sep 26, 2025
b5f1c60
Bump windows-version from 0.1.5 to 0.1.6 (#918)
dependabot[bot] Sep 26, 2025
7d89c8a
Bump serde from 1.0.226 to 1.0.227 (#917)
dependabot[bot] Sep 26, 2025
39f706a
Added Test for issue #274
vshailesh Sep 28, 2025
95fad0a
Bump serde from 1.0.227 to 1.0.228 (#920)
dependabot[bot] Sep 29, 2025
8c8cf0f
Bump cc from 1.2.38 to 1.2.39 (#919)
dependabot[bot] Sep 29, 2025
3c755f3
Bump thiserror from 2.0.16 to 2.0.17 (#922)
dependabot[bot] Sep 29, 2025
a8eb625
Bump quote from 1.0.40 to 1.0.41 (#921)
dependabot[bot] Sep 29, 2025
0def6c6
Refactor evolve code to be simpler (#895)
ludfjig Sep 29, 2025
5e0458a
Read the xmm registers while debugging
jsturtevant Aug 22, 2025
f109f17
Read the mxcsr registers
jsturtevant Aug 22, 2025
2288743
Add test for additional registers
jsturtevant Sep 12, 2025
8101f97
Set register xmm and mxcsr values
jsturtevant Sep 13, 2025
0ff0a45
Add some helper files
jsturtevant Sep 13, 2025
1859521
Clippy updates
jsturtevant Sep 13, 2025
7aa84bd
Use box now that the enum contains xmm registers which are large
jsturtevant Sep 18, 2025
1276f50
Enable gdb tests on Windows
jsturtevant Sep 19, 2025
a9e639c
Add target triple support to justfile
jsturtevant Aug 29, 2025
d78201f
Disable seccomp for musl target
jsturtevant Aug 29, 2025
6a1921b
Fix a race condition in this test
jsturtevant Aug 29, 2025
c21de21
Refactor dep_rust so it is re-usable in new nightly job
jsturtevant Sep 11, 2025
2076d94
Refactor CI failure and add to nightly job
jsturtevant Sep 10, 2025
5412afc
Filter the location to a local path relative to the project
jsturtevant Sep 10, 2025
f4739f7
Update devcontainer with tools for musl
jsturtevant Sep 12, 2025
d3762fd
Add Release blocker label
jsturtevant Sep 29, 2025
2e9db51
Pin to Debian 12 (bookworm) for Dev image and fix for Nightly (#923)
jsturtevant Sep 30, 2025
7c4158f
Fix dev container and labels for periodic failures (#925)
jsturtevant Oct 1, 2025
69920f2
Bump crate-ci/typos from 1.36.3 to 1.37.0 (#927)
dependabot[bot] Oct 1, 2025
4b7a919
Install the latest gdb in cross (#929)
jsturtevant Oct 1, 2025
0cdd885
Bump crate-ci/typos from 1.37.0 to 1.37.1 (#930)
dependabot[bot] Oct 2, 2025
fe30b78
Bump v0.10.0 in preparation for release (#932)
ludfjig Oct 3, 2025
a835c83
Closes #274: Adding FFI function for types bool, float, String, vecbytes
vshailesh Sep 22, 2025
58086e6
Tests for hl_get_host_return_value_as_Bool()
vshailesh Oct 5, 2025
7eb6792
Added Test for issue #274
vshailesh Sep 28, 2025
fe938dc
Add Release blocker label
jsturtevant Sep 29, 2025
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 .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
## Dockerfile for devcontainer

FROM mcr.microsoft.com/devcontainers/base:debian AS base
FROM mcr.microsoft.com/devcontainers/base:bookworm AS base

ARG USER=vscode
ARG GROUP=vscode
Expand All @@ -22,7 +22,8 @@ RUN apt-get update \
make \
software-properties-common \
sudo \
wget
wget \
musl-tools

ARG LLVM_VERSION=18

Expand Down Expand Up @@ -54,7 +55,8 @@ ARG RUST_TOOLCHAIN=1.89
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y \
&& rustup default ${RUST_TOOLCHAIN} \
&& rustup target add x86_64-unknown-linux-gnu \
&& rustup target add x86_64-unknown-linux-musl \
&& rustup target add x86_64-unknown-none \
&& rustup toolchain add nightly-x86_64-unknown-linux-gnu \
&& cargo install just

&& cargo install just \
&& cargo install cross --locked --version 0.2.5
2 changes: 1 addition & 1 deletion .github/workflows/Fuzzing.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,6 @@ jobs:
uses: actions/checkout@v5

- name: Notify Fuzzing Failure
run: ./dev/notify-fuzzing-failure.sh "fuzz_host_print,fuzz_guest_call,fuzz_host_call"
run: ./dev/notify-ci-failure.sh --labels="area/fuzzing,kind/bug,area/testing,lifecycle/needs-review,release-blocker"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
44 changes: 44 additions & 0 deletions .github/workflows/RustNightly.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json

name: Nightly

on:
workflow_dispatch:
schedule:
# 12:00 AM, every 2 days
- cron: '0 0 */2 * *'

permissions:
id-token: write
contents: read

jobs:
musl:
strategy:
fail-fast: true
matrix:
hypervisor: [kvm, mshv3]
cpu: [amd, intel]
config: [debug, release]
uses: ./.github/workflows/dep_rust.yml
secrets: inherit
with:
hypervisor: ${{ matrix.hypervisor }}
cpu: ${{ matrix.cpu }}
config: ${{ matrix.config }}
target_triple: x86_64-unknown-linux-musl

notify-failure:
runs-on: ubuntu-latest
needs: musl
if: always() && needs.musl.result == 'failure'
permissions:
issues: write
steps:
- name: Checkout code
uses: actions/checkout@v5

- name: Notify Nightly Failure
run: ./dev/notify-ci-failure.sh --title="Nightly musl Failure - ${{ github.run_number }}" --labels="area/ci-periodics,area/testing,kind/bug,lifecycle/needs-review,release-blocker"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
11 changes: 10 additions & 1 deletion .github/workflows/ValidatePullRequest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,19 @@ jobs:
rust:
needs:
- docs-pr
strategy:
fail-fast: true
matrix:
hypervisor: [hyperv, 'hyperv-ws2025', mshv, mshv3, kvm]
cpu: [amd, intel]
config: [debug, release]
uses: ./.github/workflows/dep_rust.yml
secrets: inherit
with:
docs_only: ${{needs.docs-pr.outputs.docs-only}}
hypervisor: ${{ matrix.hypervisor }}
cpu: ${{ matrix.cpu }}
config: ${{ matrix.config }}

fuzzing:
needs:
Expand All @@ -65,7 +74,7 @@ jobs:
steps:
- uses: actions/checkout@v5
- name: Spell Check Repo
uses: crate-ci/typos@v1.36.2
uses: crate-ci/typos@v1.37.1

license-headers:
name: check license headers
Expand Down
106 changes: 62 additions & 44 deletions .github/workflows/dep_rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,26 @@ on:
required: false
type: string
default: "false"
target_triple:
description: Target triple for cross-compilation
required: false
type: string
default: ""
hypervisor:
description: Hypervisor for this run (passed from caller matrix)
required: false
type: string
default: "kvm"
config:
description: Build configuration for this run (passed from caller matrix)
required: false
type: string
default: "debug"
cpu:
description: CPU architecture for the build (passed from caller matrix)
required: false
type: string
default: "amd"

env:
CARGO_TERM_COLOR: always
Expand All @@ -32,17 +52,12 @@ defaults:

jobs:
code-checks:
if: ${{ inputs.docs_only == 'false' }}
if: ${{ inputs.docs_only == 'false' && (inputs.hypervisor == 'hyperv-ws2025' || inputs.hypervisor == 'kvm') }}
timeout-minutes: 60
strategy:
fail-fast: true
matrix:
hypervisor: ['hyperv-ws2025', kvm]
config: [debug, release]
runs-on: ${{ fromJson(
format('["self-hosted", "{0}", "X64", "1ES.Pool=hld-{1}-amd"]',
(matrix.hypervisor == 'hyperv-ws2025') && 'Windows' || 'Linux',
matrix.hypervisor == 'hyperv-ws2025' && 'win2025' || 'kvm')) }}
(inputs.hypervisor == 'hyperv-ws2025') && 'Windows' || 'Linux',
inputs.hypervisor == 'hyperv-ws2025' && 'win2025' || 'kvm')) }}
steps:
- uses: actions/checkout@v5

Expand All @@ -63,32 +78,29 @@ jobs:
- name: clippy
if: ${{ (runner.os == 'Windows' )}}
run: |
just clippy ${{ matrix.config }}
just clippy-guests ${{ matrix.config }}
just clippy ${{ inputs.config }}
just clippy-guests ${{ inputs.config }}
env:
TARGET_TRIPLE: ${{ inputs.target_triple }}

- name: clippy exhaustive check
if: ${{ (runner.os == 'Linux' )}}
run: |
just clippy-exhaustive ${{ matrix.config }}
just clippy-exhaustive ${{ inputs.config }}
env:
TARGET_TRIPLE: ${{ inputs.target_triple }}

- name: Verify MSRV
run: ./dev/verify-msrv.sh hyperlight-host hyperlight-guest hyperlight-guest-bin hyperlight-common

build:
if: ${{ inputs.docs_only == 'false' }}
timeout-minutes: 60
strategy:
fail-fast: true
matrix:
hypervisor: [hyperv, 'hyperv-ws2025', mshv, mshv3, kvm] # hyperv is windows, mshv and kvm are linux
cpu: [amd, intel]
config: [debug, release]

runs-on: ${{ fromJson(
format('["self-hosted", "{0}", "X64", "1ES.Pool=hld-{1}-{2}"]',
(matrix.hypervisor == 'hyperv' || matrix.hypervisor == 'hyperv-ws2025') && 'Windows' || 'Linux',
matrix.hypervisor == 'hyperv' && 'win2022' || matrix.hypervisor == 'hyperv-ws2025' && 'win2025' || matrix.hypervisor == 'mshv3' && 'azlinux3-mshv' || matrix.hypervisor,
matrix.cpu)) }}
(inputs.hypervisor == 'hyperv' || inputs.hypervisor == 'hyperv-ws2025') && 'Windows' || 'Linux',
inputs.hypervisor == 'hyperv' && 'win2022' || inputs.hypervisor == 'hyperv-ws2025' && 'win2025' || inputs.hypervisor == 'mshv3' && 'azlinux3-mshv' || inputs.hypervisor,
inputs.cpu)) }}
steps:
- uses: actions/checkout@v5

Expand All @@ -112,79 +124,85 @@ jobs:
- name: Build and move Rust guests
run: |
# use these commands in favor of build-and-move-rust-guests to avoid building both configs
just build-rust-guests ${{ matrix.config }}
just move-rust-guests ${{ matrix.config }}
just build-rust-guests ${{ inputs.config }}
just move-rust-guests ${{ inputs.config }}

- name: Build c guests
run: |
# use these commands in favor of build-and-move-c-guests to avoid building both configs
just build-c-guests ${{ matrix.config }}
just move-c-guests ${{ matrix.config }}
just build-c-guests ${{ inputs.config }}
just move-c-guests ${{ inputs.config }}

- name: Build
run: just build ${{ matrix.config }}
run: just build ${{ inputs.config }}
env:
TARGET_TRIPLE: ${{ inputs.target_triple }}

- name: Run Rust tests
env:
CARGO_TERM_COLOR: always
TARGET_TRIPLE: ${{ inputs.target_triple }}
run: |
# with default features
just test ${{ matrix.config }} ${{ matrix.hypervisor == 'mshv' && 'mshv2' || ''}}
just test ${{ inputs.config }} ${{ inputs.hypervisor == 'mshv' && 'mshv2' || '""'}}

# with only one driver enabled (driver mshv/kvm feature is ignored on windows) + seccomp
just test ${{ matrix.config }} seccomp,${{ matrix.hypervisor == 'mshv' && 'mshv2' || matrix.hypervisor == 'mshv3' && 'mshv3' || 'kvm' }}
just test ${{ inputs.config }} seccomp,${{ inputs.hypervisor == 'mshv' && 'mshv2' || inputs.hypervisor == 'mshv3' && 'mshv3' || 'kvm' }}

# make sure certain cargo features compile
cargo check -p hyperlight-host --features crashdump
cargo check -p hyperlight-host --features print_debug
cargo check -p hyperlight-host --features gdb
cargo check -p hyperlight-host --features trace_guest,unwind_guest,mem_profile
just check

# without any features
just test-compilation-no-default-features ${{ matrix.config }}
just test-compilation-no-default-features ${{ inputs.config }}

# One of the examples is flaky on Windows GH runners, so this allows us to disable it for now
- name: Run Rust examples - windows
if: ${{ (runner.os == 'Windows') }}
env:
CARGO_TERM_COLOR: always
RUST_LOG: debug
run: just run-rust-examples ${{ matrix.config }}
TARGET_TRIPLE: ${{ inputs.target_triple }}
run: just run-rust-examples ${{ inputs.config }}


- name: Run Rust examples - linux
if: ${{ (runner.os != 'Windows') }}
env:
CARGO_TERM_COLOR: always
RUST_LOG: debug
run: just run-rust-examples-linux ${{ matrix.config }} ${{ matrix.hypervisor == 'mshv' && 'mshv2' || ''}}
TARGET_TRIPLE: ${{ inputs.target_triple }}
run: just run-rust-examples-linux ${{ inputs.config }} ${{ inputs.hypervisor == 'mshv' && 'mshv2' || '""'}}

- name: Run Rust Gdb tests - linux
if: runner.os == 'Linux'
- name: Run Rust Gdb tests
env:
CARGO_TERM_COLOR: always
RUST_LOG: debug
run: just test-rust-gdb-debugging ${{ matrix.config }} ${{ matrix.hypervisor == 'mshv' && 'mshv2' || ''}}
TARGET_TRIPLE: ${{ inputs.target_triple }}
run: just test-rust-gdb-debugging ${{ inputs.config }} ${{ inputs.hypervisor == 'mshv' && 'mshv2' || '""'}}

- name: Run Rust Crashdump tests
env:
CARGO_TERM_COLOR: always
RUST_LOG: debug
run: just test-rust-crashdump ${{ matrix.config }} ${{ matrix.hypervisor == 'mshv' && 'mshv2' || ''}}
TARGET_TRIPLE: ${{ inputs.target_triple }}
run: just test-rust-crashdump ${{ inputs.config }} ${{ inputs.hypervisor == 'mshv' && 'mshv2' || '""'}}

- name: Run Rust Tracing tests - linux
if: runner.os == 'Linux'
env:
CARGO_TERM_COLOR: always
RUST_LOG: debug
run: just test-rust-tracing ${{ matrix.config }} ${{ matrix.hypervisor == 'mshv' && 'mshv2' || ''}}
TARGET_TRIPLE: ${{ inputs.target_triple }}
run: just test-rust-tracing ${{ inputs.config }} ${{ inputs.hypervisor == 'mshv' && 'mshv2' || '""'}}

- name: Download benchmarks from "latest"
run: just bench-download ${{ runner.os }} ${{ matrix.hypervisor }} ${{ matrix.cpu}} dev-latest # compare to prerelease
run: just bench-download ${{ runner.os }} ${{ inputs.hypervisor }} ${{ inputs.cpu}} dev-latest # compare to prerelease
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
continue-on-error: true
if: ${{ matrix.config == 'release' }}
if: ${{ inputs.config == 'release' && inputs.target_triple == '' }}

- name: Run benchmarks
run: |
just bench-ci main ${{ matrix.hypervisor == 'mshv' && 'mshv2' || ''}}
if: ${{ matrix.config == 'release' }}
just bench-ci main ${{ inputs.hypervisor == 'mshv' && 'mshv2' || ''}}
if: ${{ inputs.config == 'release' && inputs.target_triple == '' }}
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -472,3 +472,4 @@ hyperlight_guest.h
# gdb
.gdbinit
trace/*
.gdbguest
7 changes: 6 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,10 @@
"Cargo.toml",
// guest crates for testing, not part of the workspace
"src/tests/rust_guests/simpleguest/Cargo.toml",
]
],
// Enable features in rust analyzer here
"rust-analyzer.cargo.features": [
// "gdb",
// "kvm"
],
}
16 changes: 15 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,19 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).

## [Prerelease] - Unreleased

## [v0.10.0] - 2025-10-02

### Fixed

- Fix error code conversion for Exception enum TryFrom implementation by @vshailesh in https://github.com/hyperlight-dev/hyperlight/pull/869
- Remove Allocations from Panic Handler by @adamperlin in https://github.com/hyperlight-dev/hyperlight/pull/818

### Changed

- Update rust to 1.89 by @simongdavies in https://github.com/hyperlight-dev/hyperlight/pull/883
- Update mshv crates for Azure Linux to v0.6.1 (from v0.3.2) by @simongdavies in https://github.com/hyperlight-dev/hyperlight/pull/891
- Only clear io buffer after unsuccessful guest call by @ludfjig in https://github.com/hyperlight-dev/hyperlight/pull/811

## [v0.9.0] - 2025-08-28

### Fixed
Expand Down Expand Up @@ -188,7 +201,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
The Initial Hyperlight Release 🎉


[Prerelease]: <https://github.com/hyperlight-dev/hyperlight/compare/v0.9.0..HEAD>
[Prerelease]: <https://github.com/hyperlight-dev/hyperlight/compare/v0.10.0..HEAD>
[v0.10.0]: <https://github.com/hyperlight-dev/hyperlight/compare/v0.9.0...v0.10.0>
[v0.9.0]: <https://github.com/hyperlight-dev/hyperlight/compare/v0.8.0...v0.9.0>
[v0.8.0]: <https://github.com/hyperlight-dev/hyperlight/compare/v0.7.0...v0.8.0>
[v0.7.0]: <https://github.com/hyperlight-dev/hyperlight/compare/v0.6.1...v0.7.0>
Expand Down
Loading