From feb8ebdf1a1be09d5bddc406e5c1df872782cb50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Audiger?= Date: Fri, 16 Jan 2026 20:39:21 +0100 Subject: [PATCH 1/2] build: remove unused bincode dependency MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérémy Audiger --- .github/dependabot.yml | 6 -- Cargo.lock | 2 - .../brioche-packed-userland-exec/Cargo.toml | 1 - .../brioche-packed-userland-exec/src/linux.rs | 2 +- crates/runnable-core/Cargo.toml | 1 - crates/runnable-core/src/lib.rs | 68 ++----------------- 6 files changed, 8 insertions(+), 72 deletions(-) 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/runnable-core/Cargo.toml b/crates/runnable-core/Cargo.toml index 91706c1..a1e7d6f 100644 --- a/crates/runnable-core/Cargo.toml +++ b/crates/runnable-core/Cargo.toml @@ -5,7 +5,6 @@ edition.workspace = true rust-version.workspace = true [dependencies] -bincode = "2.0.0-rc.3" brioche-resources = { path = "../brioche-resources" } bstr = "1.12.1" schemars = "1.2.0" diff --git a/crates/runnable-core/src/lib.rs b/crates/runnable-core/src/lib.rs index 424cecc..73c9149 100644 --- a/crates/runnable-core/src/lib.rs +++ b/crates/runnable-core/src/lib.rs @@ -8,14 +8,7 @@ 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, schemars::JsonSchema)] #[serde(rename_all = "camelCase")] pub struct Runnable { pub command: Template, @@ -33,14 +26,7 @@ pub struct Runnable { pub source: Option, } -#[derive( - Debug, - serde::Serialize, - serde::Deserialize, - schemars::JsonSchema, - bincode::Encode, - bincode::Decode, -)] +#[derive(Debug, serde::Serialize, serde::Deserialize, schemars::JsonSchema)] #[serde(rename_all = "snake_case")] #[serde(tag = "type")] pub enum ArgValue { @@ -52,15 +38,7 @@ 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, schemars::JsonSchema)] #[serde(rename_all = "snake_case")] #[serde(tag = "type")] pub enum EnvValue { @@ -89,16 +67,7 @@ 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, schemars::JsonSchema)] #[serde(rename_all = "camelCase")] pub struct Template { pub components: Vec, @@ -163,15 +132,7 @@ 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, schemars::JsonSchema)] #[serde(rename_all = "snake_case")] #[serde(tag = "type")] pub enum TemplateComponent { @@ -192,29 +153,14 @@ 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, 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, schemars::JsonSchema)] #[serde(rename_all = "snake_case")] #[serde(tag = "type")] pub enum RunnablePath { From 96f0d0f53c5f15624076485810fedd280b2ed383 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Audiger?= Date: Fri, 16 Jan 2026 20:42:11 +0100 Subject: [PATCH 2/2] chore: put schemars behind a feature flag to not expose it to all the crates MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérémy Audiger --- crates/brioche-packer/Cargo.toml | 2 +- crates/runnable-core/Cargo.toml | 8 ++++++-- crates/runnable-core/src/encoding.rs | 1 + crates/runnable-core/src/lib.rs | 21 ++++++++++++++------- 4 files changed, 22 insertions(+), 10 deletions(-) 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 a1e7d6f..fd100d2 100644 --- a/crates/runnable-core/Cargo.toml +++ b/crates/runnable-core/Cargo.toml @@ -4,12 +4,16 @@ version = "0.1.0" edition.workspace = true rust-version.workspace = true +[features] +default = [] +schema = ["dep:schemars", "serde_with/schemars_1"] + [dependencies] 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 73c9149..2647228 100644 --- a/crates/runnable-core/src/lib.rs +++ b/crates/runnable-core/src/lib.rs @@ -8,7 +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)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] +#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[serde(rename_all = "camelCase")] pub struct Runnable { pub command: Template, @@ -26,7 +27,8 @@ pub struct Runnable { pub source: Option, } -#[derive(Debug, serde::Serialize, serde::Deserialize, schemars::JsonSchema)] +#[derive(Debug, serde::Serialize, serde::Deserialize)] +#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] #[serde(rename_all = "snake_case")] #[serde(tag = "type")] pub enum ArgValue { @@ -38,7 +40,8 @@ pub enum ArgValue { } #[serde_with::serde_as] -#[derive(Debug, Clone, serde::Serialize, serde::Deserialize, schemars::JsonSchema)] +#[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 { @@ -67,7 +70,8 @@ pub enum EnvValue { } #[serde_with::serde_as] -#[derive(Debug, Clone, Default, serde::Serialize, serde::Deserialize, schemars::JsonSchema)] +#[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, @@ -132,7 +136,8 @@ impl Template { } #[serde_with::serde_as] -#[derive(Debug, Clone, serde::Serialize, serde::Deserialize, schemars::JsonSchema)] +#[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 { @@ -153,14 +158,16 @@ pub enum TemplateComponent { }, } #[serde_with::serde_as] -#[derive(Debug, serde::Serialize, serde::Deserialize, schemars::JsonSchema)] +#[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)] +#[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 {