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>
26 lines
877 B
TOML
26 lines
877 B
TOML
[package]
|
|
name = "kon-storage"
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
description = "SQLite persistence, BM25 search, and file storage for Kon"
|
|
|
|
[dependencies]
|
|
kon-core = { path = "../core" }
|
|
|
|
# SQLite with compile-time checked queries
|
|
# default-features = false strips sqlx's `any`, `macros`, `migrate`, `json` —
|
|
# none of which this crate uses (it calls sqlx::query() / query_scalar()
|
|
# directly and runs its own migration machinery). Cuts ~40% of sqlx's
|
|
# compile graph, most visibly on Windows MSVC where each proc-macro crate
|
|
# (which `macros` pulls in) becomes a slow .dll link.
|
|
sqlx = { version = "0.8", default-features = false, features = ["runtime-tokio", "sqlite"] }
|
|
|
|
# Async runtime
|
|
tokio = { version = "1", features = ["rt", "sync", "macros"] }
|
|
|
|
# Logging
|
|
log = "0.4"
|
|
|
|
# UUIDs for profile + profile_terms ids (v7 random).
|
|
uuid = { version = "1", features = ["v4"] }
|