Skip to content

RFC 119: Oven-native Rust build facets and Cargo interoperation #1012

Description

@dannymeijer

Intent

RFC 119 is a full v0.6 commitment. Oven must provide a serious, Cargo-independent Rust build system for explicitly supported Rust Loaves without adopting Cargo manifest or publication authority.

Scope

  • Define and implement the complete Oven-native Rust facet: package/crate identities, roots, editions, crate types, binary entrypoints, features, target conditions, profiles, dependency roles, linkage, tests, examples, doctests, and benchmarks.
  • Resolve crate dependencies from crates.io and registered Cargo-compatible sources through explicit providers with locked/offline, trust, integrity, host/target, and feature-resolution facts.
  • Keep build.rs inert: never compile, execute, or interpret it in Oven-native mode. Declare its former cfg/generated/native/tool requirements in Loaf manifests, with publisher-side harvest and explicit native/tool bake units owned by chore - v0.6 Slice 6: Loaf-native ecosystem, build scripts inert #1561.
  • Preserve procedural-macro host execution as a separate contract with typed inputs, outputs, host identity, policy, diagnostics, and receipts.
  • Plan Rust compiler/toolchain, sysroot, linker, and platform packaging directly to produce target-bound Loaf assets.
  • Derive Rust-analyzer-compatible project metadata from Oven facts.
  • Implement explicit Cargo adoption and compatibility: oven cargo remains Cargo-authoritative; an existing Cargo project must opt into Loaf adoption and is never implicitly merged.
  • Establish the complete host, cross-target, workspace, feature, cache, offline, relocation, failure, and Cargo-compatibility conformance matrix.

Boundaries

  • Oven-native Loaves and Loaf assets are not published to crates.io.
  • Cargo manifests, lockfiles, workspace discovery, and arbitrary Cargo execution are not ordinary Loaf semantics.
  • Incan-first authoring remains in force: a Rust facet does not require authored Rust.
  • RFCs 097, 117, and 118 retain the caller ABI, project, artifact, and command-surface contracts.

Delivery

Done when

  • Explicit Rust source Loaves pass the complete RFC 119 conformance corpus without Cargo metadata dependency.
  • Cargo is an explicit adoption or compatibility boundary, never the normal Oven authority.
  • Plans, artifacts, IDE projections, diagnostics, and receipts derive from one Oven graph.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    featureNew feature or request

    Projects

    • Status
      Backlog

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions