Skip to content

chore: release 0.7.0#758

Merged
joshuajbouw merged 1 commit into
mainfrom
chore/release-0.7.0
May 25, 2026
Merged

chore: release 0.7.0#758
joshuajbouw merged 1 commit into
mainfrom
chore/release-0.7.0

Conversation

@joshuajbouw

@joshuajbouw joshuajbouw commented May 25, 2026

Copy link
Copy Markdown
Contributor

Linked Issue

Closes #757

Summary

Bump all workspace crates from 0.6.0 to 0.7.0. Big release rolling up the per-domain WIT host ABI migration (#752 — wasi-elimination, every host call routed through audited astrid:* interfaces), outbound TCP for capsules (#746), wasmtime 43 → 45 (closes RUSTSEC-2026-0149), atomic kv_cas, O(1) HostState quota counters, and the Gemini review fixups landed since 0.6.0 was tagged.

Changes

Test Plan

Automated

  • cargo check --workspace passes

Manual

  • Tag v0.7.0 after merge
  • Release CI builds cross-platform binaries

Checklist

  • Linked to an issue
  • CHANGELOG.md updated under [0.7.0]

@gemini-code-assist

Copy link
Copy Markdown
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request performs a major version release (0.7.0) for the Astrid workspace. The release focuses on a significant architectural migration to a per-domain WIT host ABI, enhancing security and auditability. It also introduces outbound TCP capabilities for capsules, upgrades the underlying Wasmtime runtime, and cleans up internal storage and manifest structures to improve maintainability and performance.

Highlights

  • Version Bump: Updated all workspace crates and dependencies from 0.6.0 to 0.7.0.
  • WIT Host ABI Migration: Replaced the bundled astrid:[email protected] world with per-domain packages, routing all host calls through typed interfaces with audit envelopes and cancellation tokens.
  • Outbound TCP Support: Enabled persistent TCP connections for capsules via net.connect-tcp with per-capsule allowlist security gating.
  • Wasmtime Upgrade: Updated Wasmtime from 43 to 45.0.0 to address RUSTSEC-2026-0149.
  • Kernel Security: Eliminated wasi:* imports from the kernel, enforcing a strict wasm32-unknown-unknown target for all capsules.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize the Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counterproductive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.


The version bumps to seven point oh, With WIT domains all in a row. No WASI imports left to see, Just safe and typed connectivity.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@joshuajbouw joshuajbouw force-pushed the chore/release-0.7.0 branch from 4752943 to 559043b Compare May 25, 2026 11:46

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request transitions the project to version 0.7.0 and introduces a per-domain WIT host ABI, replacing the bundled capsule world with specific packages like astrid:fs and astrid:net. Key updates include the removal of wasi:* imports, the addition of outbound TCP capabilities, and optimizations to host state storage using the wasmtime ResourceTable. Review feedback identifies that the changelog's claim regarding universal cancellation support is over-broad as it excludes the fs domain, and suggests consolidating redundant documentation entries. Additionally, a consistency issue was identified in the TcpStream implementation where cancellation should return an error instead of an empty vector to prevent confusion with a clean EOF.

Comment thread CHANGELOG.md Outdated
Comment thread CHANGELOG.md Outdated
Comment thread CHANGELOG.md
joshuajbouw added a commit that referenced this pull request May 25, 2026
…s Closed (#760)

## Linked Issue

Closes #759

## Summary

Fix the `TcpStream::read_bytes` / `peek` cancellation hole flagged by
Gemini on #758 (`CHANGELOG.md:48` thread), plus a CHANGELOG
`[Unreleased]` cleanup that consolidates duplicate Added/Changed blocks
from the independent #752 + #746 roll-ups. Goes in before #758 so the
0.7.0 release inherits the corrected behaviour and cleaner CHANGELOG
structure.

## Changes

### `crates/astrid-capsule/src/engine/wasm/host/net/tcp_stream.rs`

- `read_bytes`: `None => Ok(Vec::new())` → `None =>
Err(ErrorCode::Closed)`
- `peek`: `result.unwrap_or(Ok(Vec::new()))` →
`result.unwrap_or(Err(ErrorCode::Closed))`

Both methods previously collapsed cancellation into an empty `Vec<u8>`,
which is indistinguishable from a clean EOF in byte-stream reads
(`std::io::Read::read` / `tokio::io::AsyncReadExt::read` convention).
The framed read path (`read_frame`) and the write side (`write_bytes`,
`shutdown`) already return `Err(ErrorCode::Closed)` on cancellation.
`read_bytes` / `peek` were the outliers.

Capsules with EOF-triggered finalizers (write trailers, send
last-message IPC, flush log, transition to "stream complete" state)
would execute those finalizers under a forced unload when the cancel
fires mid-read. The bug surface is narrow (the capsule has milliseconds
to live) but it's a real correctness hole. Now `Closed` distinguishes
cancellation from EOF; empty `Vec` keeps its "clean EOF" meaning (no
behaviour change for the EOF case).

### `CHANGELOG.md` (`[Unreleased]` consolidation)

- Merged the two `### Added` blocks (one from #752, one from #746) into
a single block. Same for `### Changed`.
- New `### Fixed` entry for the `read_bytes` / `peek` change above.
- No new entries removed — purely a structural cleanup.

## Test Plan

### Automated

- [x] `cargo test -p astrid-capsule --lib` — 272 passed, 0 failed
- [x] `cargo clippy --workspace --all-features -- -D warnings` clean

### Manual

- [x] N/A — the cancellation path only fires on capsule unload,
exercised in integration

## Checklist

- [x] Linked to an issue
- [x] CHANGELOG.md updated under `[Unreleased]`
## Linked Issue

Closes #757

## Summary

Bump all workspace crates from 0.6.0 to 0.7.0. Big release rolling up the
per-domain WIT host ABI migration (#752 — wasi-elimination, every host
call routed through audited astrid:* interfaces), outbound TCP for
capsules (#746), wasmtime 43 → 45 (closes RUSTSEC-2026-0149), atomic
kv_cas, O(1) HostState quota counters, the Gemini review fixups for
#752, and the TcpStream cancellation hole closed in #760.

## Changes

- Workspace version 0.6.0 → 0.7.0
- All 20 workspace dependency versions updated to 0.7.0
- CHANGELOG [Unreleased] rolled into [0.7.0] (consolidation already
  done in #760 — Breaking, Added, Changed, Fixed all single-section)
@joshuajbouw joshuajbouw force-pushed the chore/release-0.7.0 branch from 559043b to 68249fa Compare May 25, 2026 13:06
@joshuajbouw joshuajbouw merged commit f0479a3 into main May 25, 2026
13 checks passed
@joshuajbouw joshuajbouw deleted the chore/release-0.7.0 branch May 25, 2026 13:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

chore: release v0.7.0

1 participant