Skip to content

Implement perry/container and perry/container-compose modules#6

Draft
yumin-chen wants to merge 4 commits intofeat/container-composefrom
feat/perry-container-9089138075552882678
Draft

Implement perry/container and perry/container-compose modules#6
yumin-chen wants to merge 4 commits intofeat/container-composefrom
feat/perry-container-9089138075552882678

Conversation

@yumin-chen
Copy link
Copy Markdown

Implementation of the perry/container and perry/container-compose TypeScript modules. This includes a complete Rust reimplementation of OCI-compatible container orchestration, a generic backend architecture, and full compiler integration.

Major components:

  1. perry-container-compose Crate: A standalone library and CLI providing Docker Compose-like functionality with automatic runtime detection and full compose-spec support.
  2. Standard Library Expansion: New FFI bridge in perry-stdlib that exposes container lifecycle and orchestration functions to TypeScript.
  3. Compiler Integration: Updated HIR lowering and codegen to recognize the new native modules and emit efficient LLVM call instructions.
  4. Security & Verification: Built-in support for Sigstore/cosign verification and Harden Chainguard base images for shell capabilities.
  5. Testing: Over 30 unit and property tests verifying topological sort, YAML/JSON round-trips, name generation, and registry safety.

PR created automatically by Jules for task 9089138075552882678 started by @yumin-chen

yumin-chen and others added 3 commits April 15, 2026 13:57
Implement the `perry/container` and `perry/container-compose` TypeScript
modules backed by a new Rust-based orchestration engine and FFI bridge.

Key changes:
- Created `perry-container-compose` crate with full compose-spec support.
- Implemented capability-based OCI backend discovery (Apple, Podman, Docker).
- Added `ComposeEngine` using Kahn's algorithm for deterministic startup.
- Expanded `perry-stdlib` with FFI bindings and handle registries.
- Integrated with Perry HIR lowering and codegen for direct FFI calls.
- Implemented Sigstore/cosign image verification and Chainguard defaults.
- Added comprehensive property-based and unit test suites.
- Fixed duplicate symbol linker error in `perry-runtime`.

Co-authored-by: yumin-chen <10954839+yumin-chen@users.noreply.github.com>
@google-labs-jules
Copy link
Copy Markdown

👋 Jules, reporting for duty! I'm here to lend a hand with this pull request.

When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down.

I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job!

For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!

New to Jules? Learn more at jules.google/docs.


For security, I will only act on instructions from the user who triggered this task.

@yumin-chen yumin-chen marked this pull request as draft April 15, 2026 21:19
@yumin-chen yumin-chen force-pushed the feat/container-compose branch from 1258b4c to bfededb Compare April 15, 2026 22:07
- Full implementation of `perry/container` and `perry/container-compose` FFI bridge in `perry-stdlib`.
- Integrated native module dispatch in codegen and HIR lowering.
- Implemented `BackendAdapter` for OCI orchestration compatibility.
- Added image verification (Sigstore/cosign) and sandboxed capability execution.
- Resolved duplicate symbol linker errors in `perry-runtime`.
- Verified with comprehensive property-based tests.

Co-authored-by: yumin-chen <10954839+yumin-chen@users.noreply.github.com>
@Chen-Software Chen-Software deleted a comment from google-labs-jules bot Apr 15, 2026
@Chen-Software Chen-Software deleted a comment from google-labs-jules bot Apr 15, 2026
@Chen-Software Chen-Software deleted a comment from google-labs-jules bot Apr 15, 2026
@Chen-Software Chen-Software deleted a comment from google-labs-jules bot Apr 16, 2026
@yumin-chen yumin-chen force-pushed the feat/container-compose branch 8 times, most recently from 58c806b to 3c1c1e6 Compare April 16, 2026 13:21
@yumin-chen
Copy link
Copy Markdown
Author

What are the image operations API do we have enough for exist? and pull? image operations must be explicit in the examples -- any image pulling must be explicily done and ContainerUp is not enough

@google-labs-jules
Copy link
Copy Markdown

What are the image operations API do we have enough for exist? and pull? image operations must be explicit in the examples -- any image pulling must be explicily done and ContainerUp is not enough

I have implemented pullImage, listImages, and removeImage in the perry/container module. I've also updated the examples/forgejo-deploy.ts script to include explicit pullImage calls for both Forgejo and PostgreSQL images before calling composeUp, as requested. composeUp (and the underlying ComposeEngine) will still attempt to pull images if they aren't present, but explicit pulling is now the recommended pattern in the examples.

@yumin-chen yumin-chen force-pushed the feat/container-compose branch from 3c1c1e6 to 30a27ae Compare April 16, 2026 17:55
@yumin-chen
Copy link
Copy Markdown
Author

Submit your changes when ready. Are you ready?

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.

1 participant