Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
14 changes: 7 additions & 7 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ members = [
resolver = "2"

[workspace.package]
version = "0.6.0"
version = "0.7.0"
edition = "2024"
rust-version = "1.94"
license = "Apache-2.0"
Expand All @@ -20,9 +20,9 @@ keywords = ["hyperlight", "isolation", "sandbox", "wasm"]
categories = ["virtualization"]

[workspace.dependencies]
hyperlight-sandbox = { version = "0.6.0", path = "src/hyperlight_sandbox" }
hyperlight-javascript-sandbox = { version = "0.6.0", path = "src/javascript_sandbox" }
hyperlight-wasm-sandbox = { version = "0.6.0", path = "src/wasm_sandbox" }
hyperlight-sandbox = { version = "0.7.0", path = "src/hyperlight_sandbox" }
hyperlight-javascript-sandbox = { version = "0.7.0", path = "src/javascript_sandbox" }
hyperlight-wasm-sandbox = { version = "0.7.0", path = "src/wasm_sandbox" }
hyperlight-sandbox-pyo3-common = { path = "src/sdk/python/pyo3_common" }
hyperlight-common = { version = "0.17.0", default-features = false }
hyperlight-component-macro = "0.17.0"
Expand Down
73 changes: 36 additions & 37 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,43 +24,6 @@ hyperlight-sandbox provides a unified API across multiple isolation backends. Al
- **Network allow listing** -- Network traffic is off by default; allow specific domains and HTTP verbs with `allow_domain()`

For a more in depth walkthrough, see the overview slide deck in `docs/end-user-overview-slides.md` (or run `just slides` to view in the browser).

### Writable filesystem limits

Writable output is bounded by default to 5 MiB per file, 20 MiB of cumulative
logical file size, and 20 files per sandbox. Logical size includes sparse
holes, so a guest cannot bypass the limit by writing a small buffer at a very
large offset. Hosts can configure larger limits or explicitly opt out through
their SDK.

These library limits do not measure physical blocks, metadata, compression, or
deduplication. Deployments running hostile or multi-tenant workloads should
also place output directories on isolated, quota-controlled storage and prevent
other host processes from modifying them during guest execution.

Rust hosts can override the defaults on the builder:

```rust
use hyperlight_sandbox::{FilesystemLimits, SandboxBuilder};
use hyperlight_wasm_sandbox::Wasm;

let limits = FilesystemLimits::new(
128 * 1024 * 1024,
512 * 1024 * 1024,
2_048,
)?;

let sandbox = SandboxBuilder::new()
.filesystem_limits(limits)
.module_path("guest.aot")
.temp_output()
.guest(Wasm)
.build()?;
```

Use `FilesystemLimits::unlimited()` only when the host provides equivalent
resource controls and intentionally accepts unbounded logical output.

### Use Cases

- **File Processing**: Process provided files and return a summarized report
Expand Down Expand Up @@ -232,6 +195,42 @@ console.log('10 + 20 = ' + sum);

See [examples](./src/javascript_sandbox/examples/) for file I/O and network demos.

### Writable filesystem limits

Writable output is bounded by default to 5 MiB per file, 20 MiB of cumulative
logical file size, and 20 files per sandbox. Logical size includes sparse
holes, so a guest cannot bypass the limit by writing a small buffer at a very
large offset. Hosts can configure larger limits or explicitly opt out through
their SDK.

These library limits do not measure physical blocks, metadata, compression, or
deduplication. Deployments running hostile or multi-tenant workloads should
also place output directories on isolated, quota-controlled storage and prevent
other host processes from modifying them during guest execution.

Rust hosts can override the defaults on the builder:

```rust
use hyperlight_sandbox::{FilesystemLimits, SandboxBuilder};
use hyperlight_wasm_sandbox::Wasm;

let limits = FilesystemLimits::new(
128 * 1024 * 1024,
512 * 1024 * 1024,
2_048,
)?;

let sandbox = SandboxBuilder::new()
.filesystem_limits(limits)
.module_path("guest.aot")
.temp_output()
.guest(Wasm)
.build()?;
```

Use `FilesystemLimits::unlimited()` only when the host provides equivalent
resource controls and intentionally accepts unbounded logical output.

## Building

Tool requirements:
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "hyperlight-sandbox-dev"
version = "0.6.0"
version = "0.7.0"
requires-python = ">=3.10"

[tool.uv]
Expand Down
2 changes: 1 addition & 1 deletion src/sdk/dotnet/Directory.Build.props
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<Project>
<PropertyGroup>
<Version>0.6.0</Version>
<Version>0.7.0</Version>
<Authors>Hyperlight developers</Authors>
<Company>hyperlight-dev</Company>
<Copyright>Copyright © Microsoft 2026</Copyright>
Expand Down
4 changes: 2 additions & 2 deletions src/sdk/python/core/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@ build-backend = "setuptools.build_meta"

[project]
name = "hyperlight-sandbox"
version = "0.6.0"
version = "0.7.0"
description = "Python API for running code in isolated Hyperlight sandboxes with swappable backends"
readme = "README.md"
license = "Apache-2.0"
requires-python = ">=3.10"
dependencies = []
optional-dependencies = { wasm = ["hyperlight-sandbox-backend-wasm>=0.6.0"], hyperlight_js = ["hyperlight-sandbox-backend-hyperlight-js>=0.6.0"], python_guest = ["hyperlight-sandbox-python-guest>=0.6.0"], javascript_guest = ["hyperlight-sandbox-javascript-guest>=0.6.0"], dev = ["atheris>=2.3.0; python_version < '3.13'"] }
optional-dependencies = { wasm = ["hyperlight-sandbox-backend-wasm>=0.7.0"], hyperlight_js = ["hyperlight-sandbox-backend-hyperlight-js>=0.7.0"], python_guest = ["hyperlight-sandbox-python-guest>=0.7.0"], javascript_guest = ["hyperlight-sandbox-javascript-guest>=0.7.0"], dev = ["atheris>=2.3.0; python_version < '3.13'"] }
classifiers = [
"Development Status :: 3 - Alpha",
"Intended Audience :: Developers",
Expand Down
2 changes: 1 addition & 1 deletion src/sdk/python/hyperlight_js_backend/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "maturin"

[project]
name = "hyperlight-sandbox-backend-hyperlight-js"
version = "0.6.0"
version = "0.7.0"
description = "HyperlightJS backend implementation for hyperlight-sandbox"
readme = "README.md"
license = "Apache-2.0"
Expand Down
2 changes: 1 addition & 1 deletion src/sdk/python/wasm_backend/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "maturin"

[project]
name = "hyperlight-sandbox-backend-wasm"
version = "0.6.0"
version = "0.7.0"
description = "Wasm backend implementation for hyperlight-sandbox"
readme = "README.md"
license = "Apache-2.0"
Expand Down
2 changes: 1 addition & 1 deletion src/sdk/python/wasm_guests/javascript_guest/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"

[project]
name = "hyperlight-sandbox-javascript-guest"
version = "0.6.0"
version = "0.7.0"
description = "Packaged Hyperlight Wasm JavaScript guest exposed as javascript_guest.path"
readme = "README.md"
license = "Apache-2.0"
Expand Down
2 changes: 1 addition & 1 deletion src/sdk/python/wasm_guests/python_guest/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"

[project]
name = "hyperlight-sandbox-python-guest"
version = "0.6.0"
version = "0.7.0"
description = "Packaged Hyperlight Wasm Python guest exposed as python_guest.path"
readme = "README.md"
license = "Apache-2.0"
Expand Down
4 changes: 2 additions & 2 deletions src/wasm_sandbox/guests/javascript/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src/wasm_sandbox/guests/javascript/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "hyperlight-sandbox-js-guest",
"version": "0.6.0",
"version": "0.7.0",
"private": true,
"type": "module",
"scripts": {
Expand Down
12 changes: 6 additions & 6 deletions uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading