perf(sqlx): strip default features — workspace uses none of macros / migrate / any / json
sqlx 0.8's default feature set pulls in `any`, `macros`, `migrate`, and `json`. Grepping the workspace confirms none of these are used — the code calls sqlx::query() / query_scalar() at runtime, implements its own migration sequencing in crates/storage/src/migrations.rs, is sqlite-only (no `any` needed), and never derives FromRow / applies sqlx proc-macros. Dropping them keeps only what's needed: runtime-tokio + sqlite. Why it matters disproportionately on Windows: the `macros` feature pulls sqlx-macros → sqlx-macros-core → proc-macro2 / syn / quote / async-trait / url / heck / dotenvy / sha2 / filetime. Each proc-macro crate on Windows MSVC compiles to a .dll with a full linker invocation (slower ABI than Linux/macOS proc-macro .so). Net: tens of seconds shaved off every cold-cache CI run, compounding with the cache-path fix in the next commit. kon-mcp was already lean (default-features = false); matching that shape across the workspace now. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -42,7 +42,9 @@ arboard = "3.6.1"
|
||||
# SqlitePool is named directly from src-tauri/src/lib.rs (the AppState
|
||||
# stores it). Must be unconditional, not Linux-only — naming a type from
|
||||
# a transitive dep requires the dep be listed here too.
|
||||
sqlx = { version = "0.8", features = ["sqlite", "runtime-tokio"] }
|
||||
# See crates/storage/Cargo.toml — default-features = false drops macros /
|
||||
# migrate / any / json which this crate doesn't use. Only names SqlitePool.
|
||||
sqlx = { version = "0.8", default-features = false, features = ["runtime-tokio", "sqlite"] }
|
||||
uuid = { version = "1", features = ["v4"] }
|
||||
|
||||
[target.'cfg(target_os = "linux")'.dependencies]
|
||||
|
||||
Reference in New Issue
Block a user