Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
150 commits
Select commit Hold shift + click to select a range
deac7cc
chore(release): v3.0.0
Jul 6, 2026
c1d1a35
fix: harden box registry and runtime flows
ZhiXiao-Lin Jul 6, 2026
a3a1832
fix: harden box build and run semantics
Jul 7, 2026
1a44ee2
fix: clean up foreground run on SIGTERM
Jul 7, 2026
43e096b
chore(release): v3.0.2
Jul 7, 2026
9e62667
fix: harden box issue handling
Jul 7, 2026
d49cd30
chore(release): v3.0.3
Jul 7, 2026
7812d0e
perf: add pnpm install benchmark breakdown
Jul 7, 2026
a844165
fix: make benchmark clock portable
Jul 7, 2026
19b0049
chore(release): v3.0.4
Jul 7, 2026
49fd0de
test: stabilize shim stop exit code assertion
Jul 7, 2026
e997fa6
fix: harden box runtime and sdk flows
Jul 8, 2026
aa3163e
chore(release): v3.0.6
Jul 9, 2026
3f9daac
chore(release): v3.0.7
Jul 9, 2026
d7b0edf
chore(release): skip windows artifacts
Jul 9, 2026
28e0574
fix: resolve open runtime and macOS issues
Jul 11, 2026
bea05d6
chore: satisfy current stable clippy
Jul 11, 2026
54cc935
chore: satisfy Rust 1.97 formatting lints
Jul 11, 2026
d65bcdc
fix(windows): make metadata and pool clients portable
Jul 11, 2026
af85644
fix(windows): gate Unix-only commit and health paths
Jul 11, 2026
046dbc8
Merge pull request #27 from A3S-Lab/fix/all-open-issues
ZhiXiao-Lin Jul 11, 2026
2f7b68a
fix(ci): repair libkrun publish workflow YAML
Jul 11, 2026
038e812
Merge pull request #28 from A3S-Lab/fix/publish-libkrun-workflow
ZhiXiao-Lin Jul 11, 2026
b3a2329
ci: upgrade checkout action to Node 24
Jul 11, 2026
c6cb071
ci: upgrade artifact actions to Node 24
Jul 11, 2026
66a0ddc
ci: use native Node 24 artifact actions
Jul 11, 2026
08efdc4
Merge pull request #29 from A3S-Lab/fix/checkout-node24
ZhiXiao-Lin Jul 11, 2026
c9058a8
test(soak): add macOS fault-injection endurance runner
Jul 11, 2026
c04e319
Merge pull request #30 from A3S-Lab/feat/macos-fault-soak
ZhiXiao-Lin Jul 11, 2026
c4367a8
chore(release): v3.0.9
Jul 11, 2026
8ab8ace
test(runtime): wait for shim output before assertions
Jul 11, 2026
b9a121b
Merge pull request #31 from A3S-Lab/release/v3.0.9
ZhiXiao-Lin Jul 11, 2026
baf8060
fix(netproxy): restore macOS bridge outbound access
Jul 14, 2026
368c7bd
perf(cli): reduce foreground completion latency
Jul 14, 2026
8091b6d
fix(netproxy): retry frames under libkrun backpressure
Jul 14, 2026
da2eb93
feat(sandbox): add crun OCI execution backend
Jul 14, 2026
0c1ba92
Merge pull request #36 from A3S-Lab/fix/issues-32-33
ZhiXiao-Lin Jul 14, 2026
2f5ab62
fix(sandbox): annotate cgroup controller collection
Jul 14, 2026
0b70a31
Merge pull request #37 from A3S-Lab/fix/sandbox-linux-compile
ZhiXiao-Lin Jul 14, 2026
2861faa
fix(sandbox): own current cgroup path
Jul 14, 2026
8f2aa79
Merge pull request #38 from A3S-Lab/fix/sandbox-cgroup-path-lifetime
ZhiXiao-Lin Jul 14, 2026
4e4deee
fix(sandbox): keep non-Linux builds portable
Jul 14, 2026
f8b5d63
Merge pull request #39 from A3S-Lab/fix/sandbox-cross-platform-compile
ZhiXiao-Lin Jul 14, 2026
0a37f04
fix(sandbox): emit runnable seccomp architecture
Jul 14, 2026
0448259
Merge pull request #42 from A3S-Lab/fix/sandbox-runtime-diagnostics
ZhiXiao-Lin Jul 14, 2026
88d2f3d
fix(sandbox): preserve detached workloads
Jul 14, 2026
dd62a47
Merge pull request #44 from A3S-Lab/fix/sandbox-detached-lifecycle
ZhiXiao-Lin Jul 14, 2026
e0f8391
fix(sandbox): clean detached runtime state
Jul 14, 2026
ef54e15
Merge pull request #46 from A3S-Lab/fix/sandbox-detached-cleanup
ZhiXiao-Lin Jul 14, 2026
f3d4380
feat(compat): pin E2B protocol contracts
Jul 14, 2026
6f79a73
Merge pull request #49 from A3S-Lab/feat/e2b-contract-fixture
ZhiXiao-Lin Jul 14, 2026
f1084ff
test(compat): add official E2B client fixture runner
Jul 14, 2026
ab61432
test(compat): support uv fixture environments
Jul 14, 2026
6a49068
test(compat): support pip wheel bootstrap
Jul 14, 2026
c44ca01
test(compat): honor Python package mirrors
Jul 14, 2026
51fe354
fix(compat): record chunked client bodies
Jul 14, 2026
983ed81
test(compat): cache verified SDK artifacts
Jul 14, 2026
35d87d9
test(compat): record official E2B client requests
Jul 14, 2026
1447183
ci: verify official E2B clients
Jul 14, 2026
d2fd15f
Merge pull request #50 from A3S-Lab/feat/e2b-official-client-fixtures
ZhiXiao-Lin Jul 14, 2026
c0d3016
docs(compat): lock Phase 2 lifecycle architecture
Jul 14, 2026
c12d359
Merge pull request #51 from A3S-Lab/docs/e2b-phase2-architecture
ZhiXiao-Lin Jul 14, 2026
a603e98
feat(compat): add lifecycle domain ports
Jul 14, 2026
80dd4da
Merge pull request #52 from A3S-Lab/feat/e2b-lifecycle-domain
ZhiXiao-Lin Jul 14, 2026
4136288
feat(compat): serve E2B lifecycle routes
Jul 14, 2026
5086cc2
docs(compat): record lifecycle router evidence
Jul 14, 2026
7542bce
Merge pull request #53 from A3S-Lab/feat/e2b-lifecycle-router
ZhiXiao-Lin Jul 14, 2026
c1d6992
feat(compat): persist lifecycle records in SQLite
Jul 14, 2026
99ab5ea
Merge pull request #54 from A3S-Lab/feat/e2b-sqlite-repository
ZhiXiao-Lin Jul 14, 2026
8b92d79
feat(compat): reconcile expired sandbox lifecycles
Jul 14, 2026
9d67c84
Merge pull request #55 from A3S-Lab/feat/e2b-lifecycle-supervisor
ZhiXiao-Lin Jul 14, 2026
bada129
refactor(runtime): centralize persisted box records
Jul 14, 2026
3c0125d
Merge pull request #56 from A3S-Lab/refactor/canonical-box-record
ZhiXiao-Lin Jul 14, 2026
2cf72b2
refactor(runtime): centralize box state transactions
Jul 14, 2026
abe795b
Merge pull request #57 from A3S-Lab/refactor/runtime-box-state
ZhiXiao-Lin Jul 14, 2026
6885571
feat(runtime): persist managed execution recovery metadata
Jul 14, 2026
25d0544
Merge pull request #58 from A3S-Lab/feat/managed-execution-metadata
ZhiXiao-Lin Jul 14, 2026
50b596e
feat(runtime): fence managed lifecycle transitions
Jul 14, 2026
2a3d732
Merge pull request #59 from A3S-Lab/feat/managed-execution-lifecycle
ZhiXiao-Lin Jul 14, 2026
18ebbd9
feat(runtime): orchestrate local managed executions
Jul 14, 2026
65eeb3d
Merge pull request #60 from A3S-Lab/feat/local-execution-manager
ZhiXiao-Lin Jul 14, 2026
2565b7a
refactor(runtime): centralize process identity checks (#61)
ZhiXiao-Lin Jul 14, 2026
558da87
fix(runtime): fence shim operations by process identity (#62)
ZhiXiao-Lin Jul 14, 2026
6c48331
feat(runtime): add managed VM execution backend (#63)
ZhiXiao-Lin Jul 14, 2026
07556f4
test(runtime): add managed Sandbox smoke harness (#64)
ZhiXiao-Lin Jul 14, 2026
de9dc4e
fix(sandbox): avoid creating absent runtime roots (#66)
ZhiXiao-Lin Jul 14, 2026
b3b94f0
docs(e2b): align runtime compatibility gates (#67)
ZhiXiao-Lin Jul 14, 2026
78d60f5
feat(runtime): split managed execution create and start (#68)
ZhiXiao-Lin Jul 14, 2026
b7e9b7c
feat(runtime): persist managed execution caller policy (#69)
ZhiXiao-Lin Jul 14, 2026
bb3cd22
refactor(cli): reserve created boxes through manager (#70)
ZhiXiao-Lin Jul 15, 2026
8b81d9c
refactor(cli): start managed reservations through manager (#71)
ZhiXiao-Lin Jul 15, 2026
bc9ae3e
feat(runtime): add durable managed restart (#72)
ZhiXiao-Lin Jul 15, 2026
0cf79a3
fix(runtime): preserve rootfs across cache transition (#74)
ZhiXiao-Lin Jul 15, 2026
9bf3fa5
fix(runtime): release resources on terminal observation (#76)
ZhiXiao-Lin Jul 15, 2026
4131134
refactor(cli): run through managed execution manager (#77)
ZhiXiao-Lin Jul 15, 2026
0946271
fix(oci): replace existing hardlink destinations (#79)
ZhiXiao-Lin Jul 15, 2026
a18b6dd
fix(cache): size symlinks without following targets (#81)
ZhiXiao-Lin Jul 15, 2026
0f1a23e
fix(runtime): deduplicate reused anonymous volumes (#83)
ZhiXiao-Lin Jul 15, 2026
73625e3
fix(oci): retry Basic-auth registry pulls (#85)
ZhiXiao-Lin Jul 15, 2026
d3dc3a5
fix(sandbox): support restrictive service umask (#88)
ZhiXiao-Lin Jul 15, 2026
fb07733
fix(runtime): load registry credentials for managed pulls (#89)
ZhiXiao-Lin Jul 15, 2026
b4b7409
fix(sandbox): preserve split structured logs (#90)
ZhiXiao-Lin Jul 15, 2026
473933d
bench(sandbox): report phased hot lifecycle
Jul 15, 2026
d07073d
perf(sandbox): remove redundant lifecycle waits
Jul 15, 2026
0dbc25d
perf(sandbox): skip microvm log handoff on host
Jul 15, 2026
218a033
perf(runtime): use hardened overlay metacopy
Jul 15, 2026
c6ad6af
feat(compose): add canonical ACL project workflows
Jul 18, 2026
fcfd21d
feat: advance sandbox lifecycle and E2B compatibility
Jul 18, 2026
14089e6
fix(compat): start sandbox timeout after readiness
Jul 18, 2026
1ffa6c8
test(e2b): gate runtime envd HTTP surface
Jul 18, 2026
a435beb
docs(e2b): record runtime envd production coverage
Jul 18, 2026
572acbd
feat(compat): add E2B control metrics and refresh
Jul 18, 2026
9de55e9
docs: record E2B control conformance
Jul 18, 2026
b1294a0
feat(compat): add memory-preserving sandbox lifecycle
Jul 18, 2026
d35ea4c
docs(compat): record memory-preserving lifecycle
Jul 18, 2026
65eb4d7
test(compat): specify sandbox log routes
Jul 16, 2026
3aa69a4
feat(compat): serve generation-fenced sandbox logs
Jul 16, 2026
0a49096
test(compat): verify production sandbox logs
Jul 16, 2026
2a41cd6
fix(compat): order sandbox logs by timestamp
Jul 16, 2026
5a2a342
docs(compat): record runtime-backed sandbox logs
Jul 18, 2026
c167475
feat(compat): add owner-scoped E2B volumes
Jul 16, 2026
83f7d6f
style(compat): format volume implementation
Jul 16, 2026
e87771a
fix(compat): satisfy volume SQLite lifetimes
Jul 16, 2026
5764e75
fix(compat): normalize Unix volume metadata types
Jul 16, 2026
8d22771
test(compat): cover volume persistence and content safety
Jul 16, 2026
2518fb2
style(compat): format volume conformance tests
Jul 16, 2026
8e55b79
fix(compat): reserve atomic volume upload paths
Jul 16, 2026
7454e86
style(compat): format reserved upload name
Jul 16, 2026
7a1d2cc
fix(compat): compare test token digests as slices
Jul 16, 2026
0088d47
test(compat): exercise volume HTTP and Sandbox mounts
Jul 16, 2026
74df14e
style(compat): format volume integration tests
Jul 16, 2026
190a08d
fix(compat): compare streamed HTTP bytes as a slice
Jul 16, 2026
a49cf31
test(compat): include volume schema in migration history
Jul 16, 2026
f96eacb
fix(compat): support volume filesystem on Apple Unix
Jul 18, 2026
baa4698
test(compat): add official volume client fixtures
Jul 16, 2026
0166632
style(compat): format volume fixture server
Jul 16, 2026
54dc376
test(compat): record official volume protocol fixtures
Jul 16, 2026
f465aff
test(compat): exercise production volume mounts
Jul 16, 2026
36925b1
docs(compat): record production volume coverage
Jul 18, 2026
128c42e
feat(compat): add durable E2B filesystem snapshots
Jul 18, 2026
559cd94
fix(runtime): preserve managed snapshot rootfs fidelity
Jul 18, 2026
2994de6
fix(compat): coordinate live snapshot reconciliation
Jul 18, 2026
810687c
fix(compat): log runtime creation failures
Jul 18, 2026
fd296da
fix(runtime): preserve snapshot image defaults
Jul 18, 2026
f141c69
fix(runtime): regenerate snapshot environment metadata
Jul 18, 2026
c2a73fc
test(compat): snapshot persistent envd file
Jul 18, 2026
0ca992c
test(runtime): cover failed snapshot restore cleanup
Jul 18, 2026
9e7fab3
fix(snapshot): reject incomplete legacy restores
Jul 18, 2026
2f682c3
docs(e2b): clarify native A3S endpoint configuration
Jul 18, 2026
d24c951
docs(e2b): explain self-hosted SDK setup
Jul 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
*.patch -whitespace
compat/e2b/spec/** -whitespace
109 changes: 99 additions & 10 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
name: Format
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
- name: Init submodules
run: git -c http.extraheader= submodule update --init --recursive
- uses: dtolnay/rust-toolchain@stable
Expand All @@ -30,7 +30,7 @@ jobs:
name: Clippy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
- name: Init submodules
run: git -c http.extraheader= submodule update --init --recursive
- uses: dtolnay/rust-toolchain@stable
Expand All @@ -54,7 +54,7 @@ jobs:
name: Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
- name: Init submodules
run: git -c http.extraheader= submodule update --init --recursive
- uses: dtolnay/rust-toolchain@stable
Expand All @@ -71,10 +71,81 @@ jobs:
workspaces: src
- run: cd src && cargo test --workspace --lib

# ── Pinned E2B protocol and SDK surface drift gate ────────────
e2b-contract:
name: E2B Contract
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: dtolnay/rust-toolchain@stable
- name: Install protoc
run: sudo apt-get update && sudo apt-get install -y protobuf-compiler
- uses: Swatinem/rust-cache@v2
with:
workspaces: src
- name: Verify pinned contracts and SDK exports
run: cd src && cargo run -p a3s-box-compat --bin a3s-box-e2b-contract -- verify

# ── Pinned official E2B client wire compatibility gate ────────
e2b-official-clients:
name: E2B Official Clients
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v5
- uses: actions/setup-python@v6
with:
python-version: '3.12'
- uses: actions/setup-node@v7
with:
node-version: '20'
- uses: astral-sh/setup-uv@v8.3.2
with:
version: '0.11.8'
enable-cache: false
- uses: dtolnay/rust-toolchain@stable
- name: Build Rust lifecycle fixture server
run: cd src && cargo build -p a3s-box-compat --bin a3s-box-e2b-fixture-server
- name: Test production client harness
run: python3 compat/e2b/fixtures/official-clients/test_run_production.py -v
- name: Verify official client lifecycle requests
run: >-
python3 compat/e2b/fixtures/official-clients/run_fixtures.py verify
--rust-server-bin src/target/debug/a3s-box-e2b-fixture-server

# ── Native Python and TypeScript SDK package gate ─────────────
sdk-packages:
name: SDK Packages
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/setup-python@v6
with:
python-version: '3.12'
- uses: actions/setup-node@v7
with:
node-version: '20'
cache: npm
cache-dependency-path: sdk/typescript/package-lock.json
- name: Build and test Python package
run: |
python -m pip install build
python -m build sdk/python
python -m venv /tmp/a3s-box-python-sdk
/tmp/a3s-box-python-sdk/bin/pip install sdk/python/dist/*.whl
/tmp/a3s-box-python-sdk/bin/python -m unittest discover -s sdk/python/tests
- name: Build and test TypeScript package
working-directory: sdk/typescript
run: |
npm ci
npm run build
npm test
npm pack --dry-run

# ── Build check (compile only, no artifacts) ────────────────────
build-check:
name: Build Check (${{ matrix.target }})
needs: [fmt, clippy, test]
needs: [fmt, clippy, test, e2b-contract, e2b-official-clients, sdk-packages]
strategy:
matrix:
include:
Expand All @@ -86,7 +157,7 @@ jobs:
os: macos-14
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
- name: Init submodules
run: git -c http.extraheader= submodule update --init --recursive

Expand Down Expand Up @@ -115,15 +186,16 @@ jobs:
cargo check --release -p a3s-box-cli -p a3s-box-shim
if [ "${{ runner.os }}" = "Linux" ]; then
cargo check --release -p a3s-box-cri
cargo check --release -p a3s-box-compat --bin a3s-box-e2b
fi

# ── Windows native WHPX build check ────────────────────────────
build-windows:
name: Build Windows WHPX
needs: [fmt, clippy, test]
needs: [fmt, clippy, test, e2b-contract, e2b-official-clients, sdk-packages]
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
- name: Init submodules
run: git -c http.extraheader= submodule update --init --recursive
- uses: dtolnay/rust-toolchain@stable
Expand All @@ -139,7 +211,7 @@ jobs:
cd src
cargo build --release -p a3s-box-cli -p a3s-box-shim --target x86_64-pc-windows-msvc
- name: Upload artifact
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v6
with:
name: windows-whpx
path: |
Expand All @@ -162,7 +234,7 @@ jobs:
# Until both are done this job is SKIPPED (inert) and never blocks a PR.
integration-kvm:
name: Integration (real microVM, KVM)
needs: [fmt, clippy, test]
needs: [fmt, clippy, test, e2b-contract, e2b-official-clients, sdk-packages]
if: vars.KVM_CI == 'true'
runs-on: [self-hosted, linux, kvm]
timeout-minutes: 75
Expand All @@ -173,7 +245,7 @@ jobs:
env:
A3S_REGISTRY_MIRRORS: ${{ vars.KVM_CI_REGISTRY_MIRRORS || 'docker.io=docker.m.daocloud.io' }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
- name: Init submodules
run: git -c http.extraheader= submodule update --init --recursive
# The self-hosted runner already has a working rustup/cargo. Using
Expand Down Expand Up @@ -210,6 +282,23 @@ jobs:
unset A3S_DEPS_STUB
cd src
cargo test --release -p a3s-box-cli --test core_smoke -- --ignored --nocapture --test-threads=1
# Keep the cached foreground no-op inside a bounded production envelope.
# Docker is intentionally unavailable on this runner; the original
# macOS/HVF Docker ratio remains a separate hardware-specific comparison.
- name: Foreground latency — cached no-op p50 regression gate
env:
A3S_BOX: ${{ github.workspace }}/src/target/release/a3s-box
IMAGE: ${{ vars.KVM_CI_AGENT_IMAGE || 'docker.m.daocloud.io/library/alpine:latest' }}
FOREGROUND_RUNS: "10"
FOREGROUND_WARMUPS: "1"
FOREGROUND_DOCKER: "0"
# Default includes headroom for normal runner noise; dedicated
# runners can tighten it with the repository variable.
FOREGROUND_MAX_P50_MS: ${{ vars.KVM_CI_FOREGROUND_MAX_P50_MS || '3200' }}
run: |
unset A3S_DEPS_STUB
chmod +x bench/bench.sh
bench/bench.sh foreground
- name: CRI crictl smoke — full pod/container lifecycle
env:
A3S_BOX_CRI_SMOKE: "1"
Expand Down
63 changes: 63 additions & 0 deletions .github/workflows/e2b-runtime-image.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
name: E2B Runtime Image

on:
push:
branches:
- main
- "feat/e2b-*"
paths:
- "deploy/e2b/**"
- ".github/workflows/e2b-runtime-image.yml"
workflow_dispatch: {}

permissions:
contents: read
packages: write

concurrency:
group: e2b-runtime-image-${{ github.ref }}
cancel-in-progress: true

jobs:
build:
name: Build and publish
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5

- name: Test envd initialization
run: python3 -m unittest discover -s deploy/e2b -p 'test_*.py'

- uses: docker/setup-qemu-action@v3

- uses: docker/setup-buildx-action@v3

- name: Log in to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Generate image metadata
id: metadata
uses: docker/metadata-action@v5
with:
images: ghcr.io/a3s-lab/box-e2b-runtime
tags: |
type=sha,format=long
type=raw,value=edge,enable={{is_default_branch}}

- name: Build and push the runtime image
uses: docker/build-push-action@v6
with:
context: .
file: deploy/e2b/Dockerfile
platforms: ${{ github.ref == 'refs/heads/main' && 'linux/amd64,linux/arm64' || 'linux/amd64' }}
push: true
tags: ${{ steps.metadata.outputs.tags }}
labels: ${{ steps.metadata.outputs.labels }}
cache-from: type=gha,scope=e2b-runtime
cache-to: type=gha,mode=max,scope=e2b-runtime
provenance: mode=max
sbom: true
59 changes: 29 additions & 30 deletions .github/workflows/publish-libkrun-sys.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:
name: Build Windows krun.dll
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
with:
submodules: recursive

Expand Down Expand Up @@ -61,47 +61,47 @@ jobs:

# Create README
@"
# a3s-libkrun-sys Windows Build
# a3s-libkrun-sys Windows Build

Version: $VERSION
Platform: Windows x86_64 (WHPX)
Built: $(Get-Date -Format "yyyy-MM-dd HH:mm:ss UTC")
Version: $VERSION
Platform: Windows x86_64 (WHPX)
Built: $(Get-Date -Format "yyyy-MM-dd HH:mm:ss UTC")

## Contents
## Contents

- lib/krun.dll - libkrun Windows WHPX backend
- lib/krun.dll - libkrun Windows WHPX backend

## Usage
## Usage

Add to your Cargo.toml:
Add to your Cargo.toml:

``````toml
[dependencies]
a3s-libkrun-sys = "$VERSION"
``````
``````toml
[dependencies]
a3s-libkrun-sys = "$VERSION"
``````

The krun.dll must be in your PATH or in the same directory as your executable.
The krun.dll must be in your PATH or in the same directory as your executable.

## Features
## Features

- Windows Hypervisor Platform (WHPX) backend
- virtiofs passthrough filesystem
- virtio-net TCP backend
- virtio-blk block device
- virtio-console
- TSI (Transparent Socket Impersonation) for vsock
- Windows Hypervisor Platform (WHPX) backend
- virtiofs passthrough filesystem
- virtio-net TCP backend
- virtio-blk block device
- virtio-console
- TSI (Transparent Socket Impersonation) for vsock

## Requirements
## Requirements

- Windows 10/11 with Hyper-V Platform enabled
- Run: ``Enable-WindowsOptionalFeature -Online -FeatureName HypervisorPlatform``
"@ | Out-File -FilePath $DIR\README.md -Encoding UTF8
- Windows 10/11 with Hyper-V Platform enabled
- Run: ``Enable-WindowsOptionalFeature -Online -FeatureName HypervisorPlatform``
"@ | Out-File -FilePath $DIR\README.md -Encoding UTF8

# Create zip
Compress-Archive -Path $DIR -DestinationPath "$DIR.zip"
echo "ASSET=$DIR.zip" >> $env:GITHUB_ENV

- uses: actions/upload-artifact@v4
- uses: actions/upload-artifact@v6
with:
name: windows-dll
path: ${{ env.ASSET }}
Expand All @@ -112,7 +112,7 @@ The krun.dll must be in your PATH or in the same directory as your executable.
needs: build-windows-dll
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
with:
submodules: recursive

Expand All @@ -138,9 +138,9 @@ The krun.dll must be in your PATH or in the same directory as your executable.
needs: [build-windows-dll, publish-crate]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

- uses: actions/download-artifact@v4
- uses: actions/download-artifact@v7
with:
name: windows-dll
path: artifacts
Expand Down Expand Up @@ -181,4 +181,3 @@ The krun.dll must be in your PATH or in the same directory as your executable.
artifacts/*.zip
draft: false
prerelease: false

Loading
Loading