Skip to content

feat(components): add signed runtime components across bindings - #224

Draft
Goldziher wants to merge 1 commit into
mainfrom
feat/components
Draft

feat(components): add signed runtime components across bindings#224
Goldziher wants to merge 1 commit into
mainfrom
feat/components

Conversation

@Goldziher

Copy link
Copy Markdown
Member

Summary

  • add first-class component contracts and feature-profiled component builds to Alef configuration and code generation
  • add a stable C ABI crate plus a runtime for signed manifest verification, content-addressed caching, dynamic loading, and typed contract tables
  • add alef component build, package, verify, and lock workflows for CI-produced artifacts
  • expose component load, prefetch, status, and cache-path APIs across Alef's native bindings
  • emit explicit unsupported errors for WebAssembly and mobile targets where downloaded executable code is outside the v1 support policy

Security and distribution

  • CI retains the Ed25519 private signing key
  • generated binding packages contain crate-scoped lock data with trusted public keys and exact artifact metadata
  • downloads are size- and SHA-256-pinned, signature-verified, protected against archive traversal, and atomically installed into a content-addressed cache
  • dynamic libraries remain pinned while component handles and contract tables are in use

Binding coverage

  • direct native runtime: Python, Node.js, Ruby, PHP, Elixir, R, Dart/FRB, and Swift
  • shared C manager ABI: C, Go, Java/Panama, Kotlin/JVM, C#, Zig, and Dart/FFI
  • Rustler-backed: Gleam
  • explicit v1 unsupported surfaces: WebAssembly, Kotlin Android, Android JNI, and Apple mobile

Validation

  • cargo test --workspace
  • cargo test component --lib (60 passed)
  • task lint
  • cargo fmt --all -- --check
  • git diff --check
  • generated C host smoke test against a real signed component: download, verification, cache, load, status, and prefetch all succeeded

@Goldziher

Copy link
Copy Markdown
Member Author

Review status: not mergeable in its current form. This draft conflicts with current main and predates the 0.60.2 binding-safety, ownership, failure-atomicity, naming, Jinja, and file-modularization changes. Please rebase the feature branch onto current main after the 0.60.2 stabilization lands, resolve the root-flat crate architecture question, regenerate the schema through the version workflow, and rerun the full binding/component security matrix. I am leaving it as a draft rather than merging an 8,136-line conflicted change into the active release branch.

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