chore: release 0.7.0#758
Conversation
Summary of ChangesHello, 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
Using Gemini Code AssistThe 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
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 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
|
4752943 to
559043b
Compare
There was a problem hiding this comment.
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.
…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)
559043b to
68249fa
Compare
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), atomickv_cas, O(1)HostStatequota counters, and the Gemini review fixups landed since 0.6.0 was tagged.Changes
[Unreleased]rolled into[0.7.0]with consolidated sections — duplicate Added/Changed blocks (from feat(kernel)!: migrate to per-domain WIT host ABI #752 + feat(net): outbound TCP host fns (full std::net::TcpStream parity) #746 accumulation) merged into a single canonical set,wasi:*elimination moved from Changed to Breaking, three new entries for the Gemini feat(kernel)!: migrate to per-domain WIT host ABI #752 follow-up commits (tokio::process::Child, strict fs-mkdir, wasmtime 45 bump). Order: Breaking, Added, Changed, Fixed.Test Plan
Automated
cargo check --workspacepassesManual
v0.7.0after mergeChecklist
[0.7.0]