Use serde 1.0.221 instead of serde_derive hackery (#38137)

serde 1.0.221 introduced serde_core into the build graph, which should
render explicitly depending on serde_derive for faster build times an
obsolote method.

Besides, I'm not even sure if that worked for us. My hunch is that at
least one of our deps would have `serde` with derive feature enabled..
and then, most of the crates using `serde_derive` explicitly were also
depending on gpui, which depended on `serde`.. thus, we wouldn't have
gained anything from explicit dep on `serde_derive`

Release Notes:

- N/A
This commit is contained in:
Piotr Osiewicz
2025-09-14 14:01:04 +02:00
committed by GitHub
parent 2b1f7d5763
commit 37239fd66b
40 changed files with 144 additions and 53 deletions
Generated
+18 -20
View File
@@ -2646,7 +2646,6 @@ dependencies = [
"project",
"schemars",
"serde",
"serde_derive",
"settings",
"telemetry",
"util",
@@ -3357,7 +3356,6 @@ dependencies = [
"semantic_version",
"semver",
"serde",
"serde_derive",
"serde_json",
"session",
"settings",
@@ -3413,7 +3411,6 @@ dependencies = [
"rpc",
"schemars",
"serde",
"serde_derive",
"serde_json",
"settings",
"smallvec",
@@ -5783,7 +5780,6 @@ dependencies = [
"schemars",
"search",
"serde",
"serde_derive",
"serde_json",
"settings",
"text",
@@ -6503,7 +6499,6 @@ dependencies = [
"project",
"schemars",
"serde",
"serde_derive",
"serde_json",
"settings",
"strum 0.27.1",
@@ -7474,7 +7469,6 @@ dependencies = [
"seahash",
"semantic_version",
"serde",
"serde_derive",
"serde_json",
"slotmap",
"smallvec",
@@ -12706,7 +12700,6 @@ dependencies = [
"schemars",
"search",
"serde",
"serde_derive",
"serde_json",
"settings",
"smallvec",
@@ -13623,7 +13616,6 @@ dependencies = [
"runtimelib",
"schemars",
"serde",
"serde_derive",
"serde_json",
"settings",
"smol",
@@ -14730,18 +14722,28 @@ dependencies = [
[[package]]
name = "serde"
version = "1.0.219"
version = "1.0.221"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6"
checksum = "341877e04a22458705eb4e131a1508483c877dca2792b3781d4e5d8a6019ec43"
dependencies = [
"serde_core",
"serde_derive",
]
[[package]]
name = "serde_core"
version = "1.0.221"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0c459bc0a14c840cb403fc14b148620de1e0778c96ecd6e0c8c3cacb6d8d00fe"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
version = "1.0.219"
version = "1.0.221"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00"
checksum = "d6185cf75117e20e62b1ff867b9518577271e58abe0037c40bb4794969355ab0"
dependencies = [
"proc-macro2",
"quote",
@@ -14770,15 +14772,15 @@ dependencies = [
[[package]]
name = "serde_json"
version = "1.0.140"
version = "1.0.144"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373"
checksum = "56177480b00303e689183f110b4e727bb4211d692c62d4fcd16d02be93077d40"
dependencies = [
"indexmap",
"itoa",
"memchr",
"ryu",
"serde",
"serde_core",
]
[[package]]
@@ -14878,7 +14880,6 @@ dependencies = [
"rust-embed",
"schemars",
"serde",
"serde_derive",
"serde_json",
"serde_json_lenient",
"serde_path_to_error",
@@ -16465,7 +16466,6 @@ dependencies = [
"release_channel",
"schemars",
"serde",
"serde_derive",
"settings",
"smol",
"sysinfo",
@@ -16568,7 +16568,6 @@ dependencies = [
"refineable",
"schemars",
"serde",
"serde_derive",
"serde_json",
"serde_json_lenient",
"serde_repr",
@@ -18068,7 +18067,6 @@ dependencies = [
"schemars",
"search",
"serde",
"serde_derive",
"serde_json",
"settings",
"task",
@@ -20098,7 +20096,7 @@ dependencies = [
"security-framework-sys",
"semver",
"serde",
"serde_derive",
"serde_core",
"serde_json",
"sha1",
"simd-adler32",
+2 -3
View File
@@ -617,9 +617,8 @@ rustls-platform-verifier = "0.5.0"
scap = { git = "https://github.com/zed-industries/scap", rev = "808aa5c45b41e8f44729d02e38fd00a2fe2722e7", default-features = false }
schemars = { version = "1.0", features = ["indexmap2"] }
semver = "1.0"
serde = { version = "1.0", features = ["derive", "rc"] }
serde_derive = { version = "1.0", features = ["deserialize_in_place"] }
serde_json = { version = "1.0", features = ["preserve_order", "raw_value"] }
serde = { version = "1.0.221", features = ["derive", "rc"] }
serde_json = { version = "1.0.144", features = ["preserve_order", "raw_value"] }
serde_json_lenient = { version = "0.2", features = [
"preserve_order",
"raw_value",
@@ -31,6 +31,10 @@ pub fn init(cx: &mut App) {
#[derive(Deserialize)]
struct ReleaseNotesBody {
#[expect(
unused,
reason = "This field was found to be unused with serde library bump; it's left as is due to insufficient context on PO's side, but it *may* be fine to remove"
)]
title: String,
release_notes: String,
}
-1
View File
@@ -37,7 +37,6 @@ postage.workspace = true
project.workspace = true
schemars.workspace = true
serde.workspace = true
serde_derive.workspace = true
settings.workspace = true
telemetry.workspace = true
util.workspace = true
+1 -1
View File
@@ -1,7 +1,7 @@
use anyhow::Result;
use gpui::App;
use schemars::JsonSchema;
use serde_derive::{Deserialize, Serialize};
use serde::{Deserialize, Serialize};
use settings::{Settings, SettingsKey, SettingsSources, SettingsUi};
#[derive(Deserialize, Debug)]
-1
View File
@@ -52,7 +52,6 @@ sea-orm = { version = "1.1.0-rc.1", features = ["sqlx-postgres", "postgres-array
semantic_version.workspace = true
semver.workspace = true
serde.workspace = true
serde_derive.workspace = true
serde_json.workspace = true
sha2.workspace = true
sqlx = { version = "0.8", features = ["runtime-tokio-rustls", "postgres", "json", "time", "uuid", "any"] }
@@ -5,7 +5,7 @@ use anyhow::Result;
use async_trait::async_trait;
use gpui::{BackgroundExecutor, SharedString, TestAppContext};
use rand::prelude::*;
use serde_derive::{Deserialize, Serialize};
use serde::{Deserialize, Serialize};
use std::{
ops::{Deref, DerefMut, Range},
rc::Rc,
+4
View File
@@ -157,5 +157,9 @@ impl UserBackfiller {
struct GithubUser {
id: i32,
created_at: DateTime<Utc>,
#[expect(
unused,
reason = "This field was found to be unused with serde library bump; it's left as is due to insufficient context on PO's side, but it *may* be fine to remove"
)]
name: Option<String>,
}
-1
View File
@@ -49,7 +49,6 @@ release_channel.workspace = true
rpc.workspace = true
schemars.workspace = true
serde.workspace = true
serde_derive.workspace = true
serde_json.workspace = true
settings.workspace = true
smallvec.workspace = true
+1 -1
View File
@@ -24,7 +24,7 @@ use rpc::{
ErrorCode, ErrorExt,
proto::{self, ChannelVisibility, PeerId},
};
use serde_derive::{Deserialize, Serialize};
use serde::{Deserialize, Serialize};
use settings::Settings;
use smallvec::SmallVec;
use std::{mem, sync::Arc};
+4
View File
@@ -127,6 +127,10 @@ struct Notification<'a, T> {
#[derive(Debug, Clone, Deserialize)]
struct AnyNotification<'a> {
#[expect(
unused,
reason = "Part of the JSON-RPC protocol - we expect the field to be present in a valid JSON-RPC notification"
)]
jsonrpc: &'a str,
method: String,
#[serde(default)]
+4
View File
@@ -115,6 +115,10 @@ pub struct ExampleToml {
pub url: String,
pub revision: String,
pub language_extension: Option<String>,
#[expect(
unused,
reason = "This field was found to be unused with serde library bump; it's left as is due to insufficient context on PO's side, but it *may* be fine to remove"
)]
pub insert_id: Option<String>,
#[serde(default = "default_true")]
pub require_lsp: bool,
-1
View File
@@ -27,7 +27,6 @@ schemars.workspace = true
search.workspace = true
settings.workspace = true
serde.workspace = true
serde_derive.workspace = true
text.workspace = true
theme.workspace = true
ui.workspace = true
@@ -1,6 +1,6 @@
use anyhow::Result;
use schemars::JsonSchema;
use serde_derive::{Deserialize, Serialize};
use serde::{Deserialize, Serialize};
use settings::{Settings, SettingsKey, SettingsSources, SettingsUi};
#[derive(Deserialize, Debug, Clone, Copy, PartialEq)]
@@ -16,25 +16,53 @@ use git::{
#[derive(Debug, Deserialize)]
struct CommitDetails {
#[expect(
unused,
reason = "This field was found to be unused with serde library bump; it's left as is due to insufficient context on PO's side, but it *may* be fine to remove"
)]
commit: Commit,
author: Option<User>,
}
#[derive(Debug, Deserialize)]
struct Commit {
#[expect(
unused,
reason = "This field was found to be unused with serde library bump; it's left as is due to insufficient context on PO's side, but it *may* be fine to remove"
)]
author: Author,
}
#[derive(Debug, Deserialize)]
struct Author {
#[expect(
unused,
reason = "This field was found to be unused with serde library bump; it's left as is due to insufficient context on PO's side, but it *may* be fine to remove"
)]
name: String,
#[expect(
unused,
reason = "This field was found to be unused with serde library bump; it's left as is due to insufficient context on PO's side, but it *may* be fine to remove"
)]
email: String,
#[expect(
unused,
reason = "This field was found to be unused with serde library bump; it's left as is due to insufficient context on PO's side, but it *may* be fine to remove"
)]
date: String,
}
#[derive(Debug, Deserialize)]
struct User {
#[expect(
unused,
reason = "This field was found to be unused with serde library bump; it's left as is due to insufficient context on PO's side, but it *may* be fine to remove"
)]
pub login: String,
#[expect(
unused,
reason = "This field was found to be unused with serde library bump; it's left as is due to insufficient context on PO's side, but it *may* be fine to remove"
)]
pub id: u64,
pub avatar_url: String,
}
@@ -25,22 +25,38 @@ fn pull_request_number_regex() -> &'static Regex {
#[derive(Debug, Deserialize)]
struct CommitDetails {
#[expect(
unused,
reason = "This field was found to be unused with serde library bump; it's left as is due to insufficient context on PO's side, but it *may* be fine to remove"
)]
commit: Commit,
author: Option<User>,
}
#[derive(Debug, Deserialize)]
struct Commit {
#[expect(
unused,
reason = "This field was found to be unused with serde library bump; it's left as is due to insufficient context on PO's side, but it *may* be fine to remove"
)]
author: Author,
}
#[derive(Debug, Deserialize)]
struct Author {
#[expect(
unused,
reason = "This field was found to be unused with serde library bump; it's left as is due to insufficient context on PO's side, but it *may* be fine to remove"
)]
email: String,
}
#[derive(Debug, Deserialize)]
struct User {
#[expect(
unused,
reason = "This field was found to be unused with serde library bump; it's left as is due to insufficient context on PO's side, but it *may* be fine to remove"
)]
pub id: u64,
pub avatar_url: String,
}
-1
View File
@@ -48,7 +48,6 @@ postage.workspace = true
project.workspace = true
schemars.workspace = true
serde.workspace = true
serde_derive.workspace = true
serde_json.workspace = true
settings.workspace = true
strum.workspace = true
+1 -1
View File
@@ -1,7 +1,7 @@
use editor::EditorSettings;
use gpui::Pixels;
use schemars::JsonSchema;
use serde_derive::{Deserialize, Serialize};
use serde::{Deserialize, Serialize};
use settings::{Settings, SettingsKey, SettingsSources, SettingsUi};
use ui::scrollbars::{ScrollbarVisibility, ShowScrollbar};
use workspace::dock::DockPosition;
-1
View File
@@ -114,7 +114,6 @@ schemars.workspace = true
seahash = "4.1"
semantic_version.workspace = true
serde.workspace = true
serde_derive.workspace = true
serde_json.workspace = true
slotmap = "1.0.6"
smallvec.workspace = true
-1
View File
@@ -112,7 +112,6 @@ pub mod private {
pub use inventory;
pub use schemars;
pub use serde;
pub use serde_derive;
pub use serde_json;
}
@@ -1,7 +1,7 @@
use std::sync::Arc;
use schemars::JsonSchema;
use serde_derive::{Deserialize, Serialize};
use serde::{Deserialize, Serialize};
/// The fallback fonts that can be configured for a given font.
/// Fallback fonts family names are stored here.
+2 -2
View File
@@ -1,7 +1,7 @@
use gpui::{Action, actions};
use gpui_macros::register_action;
use schemars::JsonSchema;
use serde_derive::Deserialize;
use serde::Deserialize;
#[test]
fn test_action_macros() {
@@ -19,7 +19,7 @@ fn test_action_macros() {
#[serde(deny_unknown_fields)]
struct AnotherAction;
#[derive(PartialEq, Clone, gpui::private::serde_derive::Deserialize)]
#[derive(PartialEq, Clone, gpui::private::serde::Deserialize)]
#[serde(deny_unknown_fields)]
struct RegisterableAction {}
-1
View File
@@ -29,7 +29,6 @@ project.workspace = true
schemars.workspace = true
search.workspace = true
serde.workspace = true
serde_derive.workspace = true
serde_json.workspace = true
settings.workspace = true
smallvec.workspace = true
@@ -1,7 +1,7 @@
use editor::EditorSettings;
use gpui::Pixels;
use schemars::JsonSchema;
use serde_derive::{Deserialize, Serialize};
use serde::{Deserialize, Serialize};
use settings::{Settings, SettingsKey, SettingsSources, SettingsUi};
use ui::scrollbars::{ScrollbarVisibility, ShowScrollbar};
-1
View File
@@ -40,7 +40,6 @@ project.workspace = true
runtimelib.workspace = true
schemars.workspace = true
serde.workspace = true
serde_derive.workspace = true
serde_json.workspace = true
settings.workspace = true
smol.workspace = true
+1 -1
View File
@@ -1,6 +1,6 @@
use gpui::App;
use schemars::JsonSchema;
use serde_derive::{Deserialize, Serialize};
use serde::{Deserialize, Serialize};
use settings::{Settings, SettingsKey, SettingsSources, SettingsUi};
/// Settings for configuring REPL display and behavior.
-1
View File
@@ -29,7 +29,6 @@ release_channel.workspace = true
rust-embed.workspace = true
schemars.workspace = true
serde.workspace = true
serde_derive.workspace = true
serde_json.workspace = true
settings_ui_macros.workspace = true
serde_json_lenient.workspace = true
+3 -1
View File
@@ -1588,7 +1588,7 @@ mod tests {
use super::*;
// This is so the SettingsUi macro can still work properly
use crate as settings;
use serde_derive::Deserialize;
use serde::Deserialize;
use settings_ui_macros::{SettingsKey, SettingsUi};
use unindent::Unindent;
@@ -2232,7 +2232,9 @@ mod tests {
#[derive(Debug, Deserialize)]
struct JournalSettings {
#[expect(unused)]
pub path: String,
#[expect(unused)]
pub hour_format: HourFormat,
}
@@ -56,7 +56,15 @@ pub struct SupermavenDownloadResponse {
#[derive(Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SupermavenUser {
#[expect(
unused,
reason = "This field was found to be unused with serde library bump; it's left as is due to insufficient context on PO's side, but it *may* be fine to remove"
)]
id: String,
#[expect(
unused,
reason = "This field was found to be unused with serde library bump; it's left as is due to insufficient context on PO's side, but it *may* be fine to remove"
)]
email: String,
api_key: String,
}
-1
View File
@@ -29,7 +29,6 @@ libc.workspace = true
release_channel.workspace = true
schemars.workspace = true
serde.workspace = true
serde_derive.workspace = true
settings.workspace = true
sysinfo.workspace = true
smol.workspace = true
+1 -1
View File
@@ -4,7 +4,7 @@ use alacritty_terminal::vte::ansi::{
use collections::HashMap;
use gpui::{AbsoluteLength, App, FontFallbacks, FontFeatures, FontWeight, Pixels, px};
use schemars::JsonSchema;
use serde_derive::{Deserialize, Serialize};
use serde::{Deserialize, Serialize};
use settings::{SettingsKey, SettingsSources, SettingsUi};
use std::path::PathBuf;
-1
View File
@@ -31,7 +31,6 @@ parking_lot.workspace = true
refineable.workspace = true
schemars = { workspace = true, features = ["indexmap2"] }
serde.workspace = true
serde_derive.workspace = true
serde_json.workspace = true
serde_json_lenient.workspace = true
serde_repr.workspace = true
+1 -1
View File
@@ -1,5 +1,5 @@
use gpui::Hsla;
use serde_derive::Deserialize;
use serde::Deserialize;
use crate::{
AccentContent, amber, blue, cyan, gold, grass, indigo, iris, jade, lime, orange, pink, purple,
+1 -1
View File
@@ -1,7 +1,7 @@
#![allow(missing_docs)]
use gpui::Hsla;
use serde_derive::Deserialize;
use serde::Deserialize;
use crate::{
PlayerColorContent, amber, blue, jade, lime, orange, pink, purple, red, try_parse_color,
+16
View File
@@ -21,8 +21,20 @@ const ZED_THEME_SCHEMA_URL: &str = "https://zed.dev/schema/themes/v0.2.0.json";
#[derive(Debug, Deserialize)]
struct FamilyMetadata {
#[expect(
unused,
reason = "This field was found to be unused with serde library bump; it's left as is due to insufficient context on PO's side, but it *may* be fine to remove"
)]
pub name: String,
#[expect(
unused,
reason = "This field was found to be unused with serde library bump; it's left as is due to insufficient context on PO's side, but it *may* be fine to remove"
)]
pub author: String,
#[expect(
unused,
reason = "This field was found to be unused with serde library bump; it's left as is due to insufficient context on PO's side, but it *may* be fine to remove"
)]
pub themes: Vec<ThemeMetadata>,
/// Overrides for specific syntax tokens.
@@ -31,6 +43,10 @@ struct FamilyMetadata {
/// to an exact set of scopes when it is not otherwise possible
/// to rely on the default mappings in the theme importer.
#[serde(default)]
#[expect(
unused,
reason = "This field was found to be unused with serde library bump; it's left as is due to insufficient context on PO's side, but it *may* be fine to remove"
)]
pub syntax: IndexMap<String, Vec<String>>,
}
+20
View File
@@ -6,12 +6,32 @@ use crate::vscode::VsCodeTokenColor;
#[derive(Deserialize, Debug)]
pub struct VsCodeTheme {
#[serde(rename = "$schema")]
#[expect(
unused,
reason = "This field was found to be unused with serde library bump; it's left as is due to insufficient context on PO's side, but it *may* be fine to remove"
)]
pub schema: Option<String>,
pub name: Option<String>,
#[expect(
unused,
reason = "This field was found to be unused with serde library bump; it's left as is due to insufficient context on PO's side, but it *may* be fine to remove"
)]
pub author: Option<String>,
#[expect(
unused,
reason = "This field was found to be unused with serde library bump; it's left as is due to insufficient context on PO's side, but it *may* be fine to remove"
)]
pub maintainers: Option<Vec<String>>,
#[serde(rename = "semanticClass")]
#[expect(
unused,
reason = "This field was found to be unused with serde library bump; it's left as is due to insufficient context on PO's side, but it *may* be fine to remove"
)]
pub semantic_class: Option<String>,
#[expect(
unused,
reason = "This field was found to be unused with serde library bump; it's left as is due to insufficient context on PO's side, but it *may* be fine to remove"
)]
#[serde(rename = "semanticHighlighting")]
pub semantic_highlighting: Option<bool>,
pub colors: Colors,
-1
View File
@@ -38,7 +38,6 @@ regex.workspace = true
schemars.workspace = true
search.workspace = true
serde.workspace = true
serde_derive.workspace = true
serde_json.workspace = true
settings.workspace = true
task.workspace = true
+1 -1
View File
@@ -3,7 +3,7 @@ use gpui::{Action, Context, Window, actions};
use language::Point;
use schemars::JsonSchema;
use search::{BufferSearchBar, SearchOptions, buffer_search};
use serde_derive::Deserialize;
use serde::Deserialize;
use settings::Settings;
use std::{iter::Peekable, str::Chars};
use util::serde::default_true;
+1 -1
View File
@@ -38,7 +38,7 @@ use normal::search::SearchSubmit;
use object::Object;
use schemars::JsonSchema;
use serde::Deserialize;
use serde_derive::Serialize;
use serde::Serialize;
use settings::{
Settings, SettingsKey, SettingsSources, SettingsStore, SettingsUi, update_settings_file,
};
+2 -1
View File
@@ -114,6 +114,7 @@ sea-orm = { version = "1", features = ["runtime-tokio-rustls", "sqlx-postgres",
sea-query-binder = { version = "0.7", default-features = false, features = ["postgres-array", "sqlx-postgres", "sqlx-sqlite", "with-bigdecimal", "with-chrono", "with-json", "with-rust_decimal", "with-time", "with-uuid"] }
semver = { version = "1", features = ["serde"] }
serde = { version = "1", features = ["alloc", "derive", "rc"] }
serde_core = { version = "1", default-features = false, features = ["alloc", "rc", "result", "std"] }
serde_json = { version = "1", features = ["alloc", "preserve_order", "raw_value", "unbounded_depth"] }
sha1 = { version = "0.10", features = ["compress"] }
simd-adler32 = { version = "0.3" }
@@ -249,7 +250,7 @@ sea-orm = { version = "1", features = ["runtime-tokio-rustls", "sqlx-postgres",
sea-query-binder = { version = "0.7", default-features = false, features = ["postgres-array", "sqlx-postgres", "sqlx-sqlite", "with-bigdecimal", "with-chrono", "with-json", "with-rust_decimal", "with-time", "with-uuid"] }
semver = { version = "1", features = ["serde"] }
serde = { version = "1", features = ["alloc", "derive", "rc"] }
serde_derive = { version = "1", features = ["deserialize_in_place"] }
serde_core = { version = "1", default-features = false, features = ["alloc", "rc", "result", "std"] }
serde_json = { version = "1", features = ["alloc", "preserve_order", "raw_value", "unbounded_depth"] }
sha1 = { version = "0.10", features = ["compress"] }
simd-adler32 = { version = "0.3" }