diff --git a/.github/dependabot.yml b/.github/dependabot.yml index b3f43b6..149576c 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -17,12 +17,6 @@ updates: allow: - dependency-type: direct - dependency-type: indirect - ignore: - # Bincode is unmaintained and considered complete (sans CVE fixes). v3 - # exists but is effectively an empty crate. For context, see: - # https://crates.io/crates/bincode/3.0.0 - - dependency-name: bincode - update-types: ["version-update:semver-major"] groups: cargo: patterns: diff --git a/Cargo.lock b/Cargo.lock index db34207..bea0cd6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -246,7 +246,6 @@ dependencies = [ name = "brioche-packed-userland-exec" version = "0.1.1" dependencies = [ - "bincode", "brioche-pack", "brioche-resources", "bstr", @@ -992,7 +991,6 @@ checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" name = "runnable-core" version = "0.1.0" dependencies = [ - "bincode", "brioche-resources", "bstr", "schemars 1.2.0", diff --git a/crates/brioche-packed-userland-exec/Cargo.toml b/crates/brioche-packed-userland-exec/Cargo.toml index 61544ae..e010bdf 100644 --- a/crates/brioche-packed-userland-exec/Cargo.toml +++ b/crates/brioche-packed-userland-exec/Cargo.toml @@ -5,7 +5,6 @@ edition.workspace = true rust-version.workspace = true [dependencies] -bincode = "2.0.0-rc.3" brioche-pack = { workspace = true } brioche-resources = { path = "../brioche-resources" } bstr = "1.12.1" diff --git a/crates/brioche-packed-userland-exec/src/linux.rs b/crates/brioche-packed-userland-exec/src/linux.rs index f0d9b1f..8f2f64c 100644 --- a/crates/brioche-packed-userland-exec/src/linux.rs +++ b/crates/brioche-packed-userland-exec/src/linux.rs @@ -181,7 +181,7 @@ fn error_summary(error: &PackedError) -> &'static str { brioche_pack::ExtractPackError::MalformedMarker => { "malformed marker at the end of the packed program" } - brioche_pack::ExtractPackError::InvalidPack(_) => "failed to parse pack: bincode error", + brioche_pack::ExtractPackError::InvalidPack(_) => "failed to deserialize pack data", brioche_pack::ExtractPackError::TryFromIntError(_) => "integer conversion error", }, PackedError::PackResourceDirError(error) => match error { diff --git a/crates/brioche-packer/Cargo.toml b/crates/brioche-packer/Cargo.toml index fa73c5c..bd2141b 100644 --- a/crates/brioche-packer/Cargo.toml +++ b/crates/brioche-packer/Cargo.toml @@ -14,7 +14,7 @@ color-eyre = "0.6.5" eyre = "0.6.12" globset = "0.4.18" goblin = "0.10.4" -runnable-core = { path = "../runnable-core" } +runnable-core = { path = "../runnable-core", features = ["schema"] } schemars = "1.2.0" serde = { version = "1.0.228", features = ["derive"] } serde_json = { version = "1.0.149" } diff --git a/crates/runnable-core/Cargo.toml b/crates/runnable-core/Cargo.toml index 91706c1..fd100d2 100644 --- a/crates/runnable-core/Cargo.toml +++ b/crates/runnable-core/Cargo.toml @@ -4,13 +4,16 @@ version = "0.1.0" edition.workspace = true rust-version.workspace = true +[features] +default = [] +schema = ["dep:schemars", "serde_with/schemars_1"] + [dependencies] -bincode = "2.0.0-rc.3" brioche-resources = { path = "../brioche-resources" } bstr = "1.12.1" -schemars = "1.2.0" +schemars = { version = "1.2.0", optional = true } serde = { version = "1.0.228", features = ["derive"] } -serde_with = { version = "3.16.1", features = ["schemars_1"] } +serde_with = "3.16.1" thiserror = "2.0.17" tick-encoding = "0.1.3" diff --git a/crates/runnable-core/src/encoding.rs b/crates/runnable-core/src/encoding.rs index 26af19d..96f999f 100644 --- a/crates/runnable-core/src/encoding.rs +++ b/crates/runnable-core/src/encoding.rs @@ -32,6 +32,7 @@ where } } +#[cfg(feature = "schema")] impl serde_with::schemars_1::JsonSchemaAs for TickEncoded { fn schema_name() -> Cow<'static, str> { "TickEncoded".into() diff --git a/crates/runnable-core/src/lib.rs b/crates/runnable-core/src/lib.rs index 424cecc..2647228 100644 --- a/crates/runnable-core/src/lib.rs +++ b/crates/runnable-core/src/lib.rs @@ -8,14 +8,8 @@ pub mod encoding; pub const FORMAT: &str = "application/vnd.brioche.runnable-v0.1.0+json"; #[serde_with::serde_as] -#[derive( - Debug, - serde::Serialize, - serde::Deserialize, - schemars::JsonSchema, - bincode::Encode, - bincode::Decode, -)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] +#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[serde(rename_all = "camelCase")] pub struct Runnable { pub command: Template, @@ -33,14 +27,8 @@ pub struct Runnable { pub source: Option, } -#[derive( - Debug, - serde::Serialize, - serde::Deserialize, - schemars::JsonSchema, - bincode::Encode, - bincode::Decode, -)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] +#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[serde(rename_all = "snake_case")] #[serde(tag = "type")] pub enum ArgValue { @@ -52,15 +40,8 @@ pub enum ArgValue { } #[serde_with::serde_as] -#[derive( - Debug, - Clone, - serde::Serialize, - serde::Deserialize, - schemars::JsonSchema, - bincode::Encode, - bincode::Decode, -)] +#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] +#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[serde(rename_all = "snake_case")] #[serde(tag = "type")] pub enum EnvValue { @@ -89,16 +70,8 @@ pub enum EnvValue { } #[serde_with::serde_as] -#[derive( - Debug, - Clone, - Default, - serde::Serialize, - serde::Deserialize, - schemars::JsonSchema, - bincode::Encode, - bincode::Decode, -)] +#[derive(Debug, Clone, Default, serde::Serialize, serde::Deserialize)] +#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[serde(rename_all = "camelCase")] pub struct Template { pub components: Vec, @@ -163,15 +136,8 @@ impl Template { } #[serde_with::serde_as] -#[derive( - Debug, - Clone, - serde::Serialize, - serde::Deserialize, - schemars::JsonSchema, - bincode::Encode, - bincode::Decode, -)] +#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] +#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[serde(rename_all = "snake_case")] #[serde(tag = "type")] pub enum TemplateComponent { @@ -192,29 +158,16 @@ pub enum TemplateComponent { }, } #[serde_with::serde_as] -#[derive( - Debug, - serde::Serialize, - serde::Deserialize, - schemars::JsonSchema, - bincode::Encode, - bincode::Decode, -)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] +#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[serde(rename_all = "camelCase")] pub struct RunnableSource { pub path: RunnablePath, } #[serde_with::serde_as] -#[derive( - Debug, - Clone, - serde::Serialize, - serde::Deserialize, - schemars::JsonSchema, - bincode::Encode, - bincode::Decode, -)] +#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] +#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[serde(rename_all = "snake_case")] #[serde(tag = "type")] pub enum RunnablePath {