Snapshot: V4 plugin API and host integration

This commit is contained in:
Sebastian 2026-08-12 20:39:51 +02:00
commit 29c41a4041
36 changed files with 5463 additions and 253 deletions

View file

@ -1,19 +1,28 @@
[package]
name = "ocs_plugin_api"
version = "0.1.0"
version = "0.2.0"
edition = "2021"
description = "Stable, dependency-free contract for Open CAD Studio add-on packages: plugin manifest, version handshake, and ribbon/CadModule types."
license = "GPL-3.0-only"
[dependencies]
# Serde is used unconditionally by the build-time-generated embedded type
# registry types (`type_registry_types.rs`). The host feature no longer needs
# to enable it explicitly.
serde = { version = "1", features = ["derive"] }
# Pulled in only by the `host` feature, which adds the `acadrust`-typed
# `HostApi` runtime surface. The default crate stays dependency-free so engine
# crates and external tooling can depend on the manifest/ribbon contract cheaply.
acadrust = { git = "https://github.com/HakanSeven12/cadcodec.git", rev = "4736846", optional = true, features = ["serde"] }
#
# acadrust types appear in the HostApi trait object, so the plugin and host
# MUST resolve the exact same acadrust source. The root Cargo.toml pins the
# exact revision via [patch.crates-io]; this crate uses the same version
# requirement so the patch applies consistently across the workspace.
acadrust = { version = "0.4", optional = true, features = ["serde"] }
# Runtime IPC and serialization (host feature only).
interprocess = { version = "2", optional = true }
serde = { version = "1", features = ["derive"], optional = true }
bincode = { version = "1", optional = true }
thiserror = { version = "1", optional = true }
libloading = { version = "0.8", optional = true }
@ -25,4 +34,17 @@ getrandom = { version = "0.2", optional = true }
# Enables the runtime host surface (`HostApi` trait) and the out-of-process
# plugin runtime. The OpenCADStudio binary turns this on; pure-data consumers
# leave it off.
host = ["dep:acadrust", "dep:interprocess", "dep:serde", "dep:bincode", "dep:thiserror", "dep:libloading", "dep:memmap2", "dep:rkyv", "dep:getrandom"]
host = ["dep:acadrust", "dep:interprocess", "dep:bincode", "dep:thiserror", "dep:libloading", "dep:memmap2", "dep:rkyv", "dep:getrandom"]
[build-dependencies]
serde-reflection = "0.6"
serde_json = "1"
serde = { version = "1", features = ["derive"] }
cargo-lock = "11"
# acadrust is scanned at build time to generate the embedded type registry.
# Use the same version requirement as the root Cargo.toml so the
# [patch.crates-io] override applies here too.
acadrust = { version = "0.4", features = ["serde"] }
[dev-dependencies]
serde_json = "1"