deps(deps): added workspace dependency catalog and updated crate manifests

- Added a workspace dependency catalog in `Cargo.toml` for internal and external crates.
- Replaced explicit dependency specs and pinned versions with workspace references in crate manifests.
- Removed inline dependency overrides such as feature flags, renames, and package metadata.
- Consolidated platform-specific target deps (`libc`, `winreg`, `windows-sys`, `parking_lot`) to workspace entries.
This commit is contained in:
can1357
2026-05-12 13:43:04 +02:00
parent d37d48d11d
commit 900a42e8d9
5 changed files with 409 additions and 184 deletions
+277 -25
View File
@@ -49,8 +49,16 @@ split-debuginfo = "unpacked"
opt-level = 2
debug = false
[workspace.lints.rust]
# ──────────────────────────────────────────────────────────────────────────────
# Rust Lint Levels
# ──────────────────────────────────────────────────────────────────────────────
mismatched_lifetime_syntaxes = "allow"
[workspace.lints.clippy]
# ──────────────────────────────────────────────────────────────────────────────
# Base Lint Levels
# ──────────────────────────────────────────────────────────────────────────────
all = { level = "warn", priority = -1 }
correctness = { level = "deny", priority = -1 }
nursery = { level = "warn", priority = -1 }
@@ -59,54 +67,298 @@ perf = { level = "warn", priority = -1 }
style = { level = "warn", priority = -1 }
suspicious = { level = "deny", priority = -1 }
# ──────────────────────────────────────────────────────────────────────────────
# Meta: Lint Attributes
allow_attributes_without_reason = "warn"
# ──────────────────────────────────────────────────────────────────────────────
allow_attributes_without_reason = "warn" # Enforce reason for all #[allow]
# ──────────────────────────────────────────────────────────────────────────────
# Safety & Unsafe Code
# ──────────────────────────────────────────────────────────────────────────────
borrow_as_ptr = "allow"
cast_ptr_alignment = "allow"
ptr_as_ptr = "allow"
ref_as_ptr = "allow"
undocumented_unsafe_blocks = "warn"
unsafe_derive_deserialize = "allow"
# ──────────────────────────────────────────────────────────────────────────────
# Numeric Casts & Conversions
cast_lossless = "allow"
cast_possible_truncation = "allow"
cast_possible_wrap = "allow"
cast_precision_loss = "allow"
cast_sign_loss = "allow"
# ──────────────────────────────────────────────────────────────────────────────
cast_lossless = "allow" # u32 as u64 - 'as' is cleaner than From
cast_possible_truncation = "allow" # u64 as u32 - often intentional
cast_possible_wrap = "allow" # u32 as i32 - can be intentional
cast_precision_loss = "allow" # f64 as f32 - sometimes acceptable
cast_sign_loss = "allow" # i32 as u32 - sometimes needed
tuple_array_conversions = "allow" # Non-Into conversion is more clear
# ──────────────────────────────────────────────────────────────────────────────
# Floating Point
# ──────────────────────────────────────────────────────────────────────────────
float_cmp = "allow" # Tests mostly do this + we know what we're doing
# ──────────────────────────────────────────────────────────────────────────────
# Functions & Closures
inline_always = "allow"
must_use_candidate = "allow"
# ──────────────────────────────────────────────────────────────────────────────
inline_always = "allow" # Needed for performance-critical code
must_use_candidate = "allow" # Not every function needs #[must_use]
needless_pass_by_value = "allow"
redundant_closure_for_method_calls = "allow"
return_self_not_must_use = "allow"
redundant_closure_for_method_calls = "allow" # .map(ToString::to_string) can be clearer
return_self_not_must_use = "allow" # Builder pattern methods
# ──────────────────────────────────────────────────────────────────────────────
# Structs & Types
missing_fields_in_debug = "allow"
struct_excessive_bools = "allow"
# ──────────────────────────────────────────────────────────────────────────────
inconsistent_struct_constructor = "allow"
missing_fields_in_debug = "allow" # Not every field needs to be in Debug output
struct_excessive_bools = "allow" # Usually with builders
# ──────────────────────────────────────────────────────────────────────────────
# Pattern Matching
match_same_arms = "allow"
match_wildcard_for_single_variants = "allow"
option_if_let_else = "allow"
# ──────────────────────────────────────────────────────────────────────────────
match_same_arms = "allow" # Can be intentional for clarity
match_wildcard_for_single_variants = "allow" # _ can be clearer than listing variants
option_if_let_else = "allow" # match/if-let-else often clearer
# ──────────────────────────────────────────────────────────────────────────────
# Imports & Module Organization
# ──────────────────────────────────────────────────────────────────────────────
enum_glob_use = "allow"
items_after_statements = "allow"
wildcard_imports = "allow"
items_after_statements = "allow" # Sometimes more readable
wildcard_imports = "allow" # Cleaner for preludes and test modules
# ──────────────────────────────────────────────────────────────────────────────
# Variables & Type Inference
similar_names = "allow"
# ──────────────────────────────────────────────────────────────────────────────
let_underscore_untyped = "allow" # Type obvious from context
similar_names = "allow" # 'req' and 'res' together are fine
# ──────────────────────────────────────────────────────────────────────────────
# Literals & Formatting
unreadable_literal = "allow"
# ──────────────────────────────────────────────────────────────────────────────
unreadable_literal = "allow" # 10_000_000 vs 0xDEADBEEF is context dependent
verbose_bit_mask = "allow" # Explicit bit patterns can be clearer than hex
# ──────────────────────────────────────────────────────────────────────────────
# Code Style
default_trait_access = "allow"
significant_drop_tightening = "allow"
# ──────────────────────────────────────────────────────────────────────────────
default_trait_access = "allow" # Default::default() sometimes clearer
significant_drop_tightening = "allow" # We pay attention to this already
# ──────────────────────────────────────────────────────────────────────────────
# Documentation
missing_errors_doc = "allow"
missing_panics_doc = "allow"
# ──────────────────────────────────────────────────────────────────────────────
missing_errors_doc = "allow" # Documenting every error return is often redundant
missing_panics_doc = "allow" # Not every panic needs docs, especially assert!
# ──────────────────────────────────────────────────────────────────────────────
# Complexity
too_many_lines = "allow"
too_many_arguments = "allow"
# ──────────────────────────────────────────────────────────────────────────────
too_many_arguments = "allow" # Argument count is rarely the real complexity signal
too_many_lines = "allow" # Arbitrary limits don't account for necessary complexity
[workspace.dependencies]
# ──────────────────────────────────────────────────────────────────────────────
# Internal Libraries
# ──────────────────────────────────────────────────────────────────────────────
pi-ast = { path = "crates/pi-ast" }
pi-iso = { path = "crates/pi-iso" }
pi-shell = { path = "crates/pi-shell" }
brush-core = { path = "crates/brush-core-vendored" }
brush-builtins = { path = "crates/brush-builtins-vendored" }
# ──────────────────────────────────────────────────────────────────────────────
# Async Runtime & Concurrency
# ──────────────────────────────────────────────────────────────────────────────
async-trait = "0.1"
dashmap = "6.1"
parking_lot = "0.12.5"
rayon = "1.12"
tokio = { version = "1", features = ["full"] }
tokio-util = { version = "0.7", features = ["full"] }
# ──────────────────────────────────────────────────────────────────────────────
# Serialization & Data Formats
# ──────────────────────────────────────────────────────────────────────────────
serde = { version = "1.0", features = ["derive"] }
serde_json = { version = "1.0", features = ["preserve_order"] }
toml = "1.1"
# ──────────────────────────────────────────────────────────────────────────────
# Error Handling
# ──────────────────────────────────────────────────────────────────────────────
anyhow = "1.0"
# ──────────────────────────────────────────────────────────────────────────────
# CLI & Configuration
# ──────────────────────────────────────────────────────────────────────────────
clap = { version = "4", features = ["derive"] }
# ──────────────────────────────────────────────────────────────────────────────
# Text Processing & Parsing
# ──────────────────────────────────────────────────────────────────────────────
regex = "1"
similar = "3.1.0"
unicode-segmentation = "1.13"
unicode-width = "0.2"
# ──────────────────────────────────────────────────────────────────────────────
# Data Structures - Collections
# ──────────────────────────────────────────────────────────────────────────────
phf = { version = "0.13", features = ["macros"] }
smallvec = { version = "1.15.1", features = [
"serde",
"write",
"union",
"const_new",
] }
# ──────────────────────────────────────────────────────────────────────────────
# Hashing
# ──────────────────────────────────────────────────────────────────────────────
xxhash-rust = { version = "0.8", features = ["xxh64"] }
# ──────────────────────────────────────────────────────────────────────────────
# Memory Management & Allocators
# ──────────────────────────────────────────────────────────────────────────────
memmap2 = "0.9"
mimalloc = "0.1"
# ──────────────────────────────────────────────────────────────────────────────
# System & Platform
# ──────────────────────────────────────────────────────────────────────────────
libc = "0.2"
os_pipe = "1"
windows-sys = { version = "0.61", features = [
"Win32_Foundation",
"Win32_Storage_FileSystem",
"Win32_Storage_ProjectedFileSystem",
"Win32_System_Com",
"Win32_System_LibraryLoader",
"Win32_System_IO",
"Win32_System_Ioctl",
] }
winreg = "0.56"
# ──────────────────────────────────────────────────────────────────────────────
# Node.js Bindings (NAPI)
# ──────────────────────────────────────────────────────────────────────────────
napi = { version = "3", features = ["napi10", "tokio_rt", "tokio_time"] }
napi-build = "2"
napi-derive = "3"
# ──────────────────────────────────────────────────────────────────────────────
# Terminal & PTY
# ──────────────────────────────────────────────────────────────────────────────
arboard = { version = "3.6.1", features = ["wayland-data-control"] }
icy_sixel = "0.5"
portable-pty = "0.9"
# ──────────────────────────────────────────────────────────────────────────────
# Search & File Walking
# ──────────────────────────────────────────────────────────────────────────────
globset = "0.4"
grep-matcher = "0.1"
grep-regex = "0.1"
grep-searcher = "0.1"
ignore = "0.4"
# ──────────────────────────────────────────────────────────────────────────────
# Image Processing & Syntax Highlighting
# ──────────────────────────────────────────────────────────────────────────────
image = { version = "0.25", default-features = false, features = [
"png",
"jpeg",
"gif",
"webp",
] }
inferno = { version = "0.12", default-features = false }
syntect = { version = "5.3", default-features = false, features = [
"default-syntaxes",
"default-themes",
"regex-fancy",
] }
webp = "0.3"
# ──────────────────────────────────────────────────────────────────────────────
# Markup Conversion
# ──────────────────────────────────────────────────────────────────────────────
html-to-markdown-rs = { version = "2.24", default-features = false }
# ──────────────────────────────────────────────────────────────────────────────
# Tokenization
# ──────────────────────────────────────────────────────────────────────────────
tiktoken-rs = "0.11"
# ──────────────────────────────────────────────────────────────────────────────
# Shell Parsing
# ──────────────────────────────────────────────────────────────────────────────
brush-parser = "0.3"
# ──────────────────────────────────────────────────────────────────────────────
# AST & Tree-Sitter
# ──────────────────────────────────────────────────────────────────────────────
ast-grep-core = { version = "0.39", default-features = false, features = [
"tree-sitter",
] }
tree-sitter = "0.25"
tree-sitter-astro = { version = "0.1.1", package = "tree-sitter-astro-next" }
tree-sitter-bash = "0.25"
tree-sitter-c = "0.24"
tree-sitter-c-sharp = "0.23"
tree-sitter-clojure = "0.1"
tree-sitter-cmake = "0.7.1"
tree-sitter-cpp = "0.23"
tree-sitter-css = "0.25"
tree-sitter-dart = "0.2"
tree-sitter-diff = "0.1"
tree-sitter-dockerfile = { version = "0.2.0", package = "tree-sitter-dockerfile-updated" }
tree-sitter-elixir = "0.3"
tree-sitter-erlang = "0.16.0"
tree-sitter-go = "0.25"
tree-sitter-graphql = "0.1.0"
tree-sitter-haskell = "0.23"
tree-sitter-hcl = "1.1"
tree-sitter-html = "0.23"
tree-sitter-ini = "1.4.0"
tree-sitter-java = "0.23"
tree-sitter-javascript = "0.25"
tree-sitter-json = "0.24"
tree-sitter-julia = "0.23"
tree-sitter-just = "0.2.0"
tree-sitter-kotlin = { version = "0.4", package = "tree-sitter-kotlin-sg" }
tree-sitter-lua = "0.5"
tree-sitter-make = "1.1"
tree-sitter-md = "0.5"
tree-sitter-nix = "0.3"
tree-sitter-objc = "3.0"
tree-sitter-ocaml = "0.24.2"
tree-sitter-odin = "1.3"
tree-sitter-perl = { version = "0.1.0", package = "tree-sitter-perl-next" }
tree-sitter-php = "0.24"
tree-sitter-powershell = "0.26.4"
tree-sitter-proto = "0.4.0"
tree-sitter-python = "0.25"
tree-sitter-r = "1.2.0"
tree-sitter-regex = "0.25"
tree-sitter-ruby = "0.23"
tree-sitter-rust = "0.24"
tree-sitter-scala = "0.26"
tree-sitter-solidity = "1.2"
tree-sitter-sql = { version = "0.3.11", package = "tree-sitter-sequel" }
tree-sitter-starlark = "1.3"
tree-sitter-svelte = { version = "0.1.1", package = "tree-sitter-svelte-next" }
tree-sitter-swift = "0.7"
tree-sitter-tlaplus = "1.5"
tree-sitter-toml-ng = "0.7"
tree-sitter-typescript = "0.23"
tree-sitter-verilog = "1.0"
tree-sitter-vue = { version = "0.1.0", package = "tree-sitter-vue-next" }
tree-sitter-xml = "0.7"
tree-sitter-yaml = "0.7"
tree-sitter-zig = "1.1"
# ──────────────────────────────────────────────────────────────────────────────
# Unsorted (added by `cargo add` - move into a section above)
# ──────────────────────────────────────────────────────────────────────────────
+62 -62
View File
@@ -10,65 +10,65 @@ repository.workspace = true
workspace = true
[dependencies]
anyhow = "1.0"
ast-grep-core = { version = "0.39", default-features = false, features = ["tree-sitter"] }
globset = "0.4"
ignore = "0.4"
phf = { version = "0.13", features = ["macros"] }
serde = { version = "1.0", features = ["derive"] }
tree-sitter = "0.25"
tree-sitter-astro = { version = "0.1.1", package = "tree-sitter-astro-next" }
tree-sitter-bash = "0.25"
tree-sitter-c = "0.24"
tree-sitter-clojure = "0.1"
tree-sitter-cmake = "0.7.1"
tree-sitter-c-sharp = "0.23"
tree-sitter-cpp = "0.23"
tree-sitter-dart = "0.2"
tree-sitter-css = "0.25"
tree-sitter-diff = "0.1"
tree-sitter-dockerfile = { version = "0.2.0", package = "tree-sitter-dockerfile-updated" }
tree-sitter-elixir = "0.3"
tree-sitter-erlang = "0.16.0"
tree-sitter-go = "0.25"
tree-sitter-graphql = "0.1.0"
tree-sitter-haskell = "0.23"
tree-sitter-hcl = "1.1"
tree-sitter-html = "0.23"
tree-sitter-ini = "1.4.0"
tree-sitter-java = "0.23"
tree-sitter-javascript = "0.25"
tree-sitter-json = "0.24"
tree-sitter-just = "0.2.0"
tree-sitter-julia = "0.23"
tree-sitter-kotlin = { version = "0.4", package = "tree-sitter-kotlin-sg" }
tree-sitter-lua = "0.5"
tree-sitter-make = "1.1"
tree-sitter-md = "0.5"
tree-sitter-nix = "0.3"
tree-sitter-objc = "3.0"
tree-sitter-ocaml = "0.24.2"
tree-sitter-odin = "1.3"
tree-sitter-perl = { version = "0.1.0", package = "tree-sitter-perl-next" }
tree-sitter-php = "0.24"
tree-sitter-powershell = "0.26.4"
tree-sitter-proto = "0.4.0"
tree-sitter-python = "0.25"
tree-sitter-r = "1.2.0"
tree-sitter-regex = "0.25"
tree-sitter-ruby = "0.23"
tree-sitter-rust = "0.24"
tree-sitter-scala = "0.26"
tree-sitter-solidity = "1.2"
tree-sitter-sql = { version = "0.3.11", package = "tree-sitter-sequel" }
tree-sitter-starlark = "1.3"
tree-sitter-svelte = { version = "0.1.1", package = "tree-sitter-svelte-next" }
tree-sitter-swift = "0.7"
tree-sitter-toml-ng = "0.7"
tree-sitter-tlaplus = "1.5"
tree-sitter-typescript = "0.23"
tree-sitter-verilog = "1.0"
tree-sitter-vue = { version = "0.1.0", package = "tree-sitter-vue-next" }
tree-sitter-xml = "0.7"
tree-sitter-yaml = "0.7"
tree-sitter-zig = "1.1"
anyhow.workspace = true
ast-grep-core.workspace = true
globset.workspace = true
ignore.workspace = true
phf.workspace = true
serde.workspace = true
tree-sitter.workspace = true
tree-sitter-astro.workspace = true
tree-sitter-bash.workspace = true
tree-sitter-c.workspace = true
tree-sitter-clojure.workspace = true
tree-sitter-cmake.workspace = true
tree-sitter-c-sharp.workspace = true
tree-sitter-cpp.workspace = true
tree-sitter-dart.workspace = true
tree-sitter-css.workspace = true
tree-sitter-diff.workspace = true
tree-sitter-dockerfile.workspace = true
tree-sitter-elixir.workspace = true
tree-sitter-erlang.workspace = true
tree-sitter-go.workspace = true
tree-sitter-graphql.workspace = true
tree-sitter-haskell.workspace = true
tree-sitter-hcl.workspace = true
tree-sitter-html.workspace = true
tree-sitter-ini.workspace = true
tree-sitter-java.workspace = true
tree-sitter-javascript.workspace = true
tree-sitter-json.workspace = true
tree-sitter-just.workspace = true
tree-sitter-julia.workspace = true
tree-sitter-kotlin.workspace = true
tree-sitter-lua.workspace = true
tree-sitter-make.workspace = true
tree-sitter-md.workspace = true
tree-sitter-nix.workspace = true
tree-sitter-objc.workspace = true
tree-sitter-ocaml.workspace = true
tree-sitter-odin.workspace = true
tree-sitter-perl.workspace = true
tree-sitter-php.workspace = true
tree-sitter-powershell.workspace = true
tree-sitter-proto.workspace = true
tree-sitter-python.workspace = true
tree-sitter-r.workspace = true
tree-sitter-regex.workspace = true
tree-sitter-ruby.workspace = true
tree-sitter-rust.workspace = true
tree-sitter-scala.workspace = true
tree-sitter-solidity.workspace = true
tree-sitter-sql.workspace = true
tree-sitter-starlark.workspace = true
tree-sitter-svelte.workspace = true
tree-sitter-swift.workspace = true
tree-sitter-toml-ng.workspace = true
tree-sitter-tlaplus.workspace = true
tree-sitter-typescript.workspace = true
tree-sitter-verilog.workspace = true
tree-sitter-vue.workspace = true
tree-sitter-xml.workspace = true
tree-sitter-yaml.workspace = true
tree-sitter-zig.workspace = true
+7 -15
View File
@@ -10,24 +10,16 @@ repository.workspace = true
workspace = true
[dependencies]
async-trait = "0.1"
tokio = { version = "1", features = ["fs", "process", "rt", "macros", "io-util"] }
similar = "3.1.0"
async-trait.workspace = true
similar.workspace = true
tokio.workspace = true
[target.'cfg(unix)'.dependencies]
libc = "0.2"
libc.workspace = true
[target.'cfg(target_os = "linux")'.dependencies]
parking_lot = "0.12.5"
parking_lot.workspace = true
[target.'cfg(windows)'.dependencies]
parking_lot = "0.12.5"
windows-sys = { version = "0.61", features = [
"Win32_Foundation",
"Win32_Storage_FileSystem",
"Win32_Storage_ProjectedFileSystem",
"Win32_System_Com",
"Win32_System_LibraryLoader",
"Win32_System_IO",
"Win32_System_Ioctl",
] }
parking_lot.workspace = true
windows-sys.workspace = true
+46 -60
View File
@@ -13,67 +13,53 @@ crate-type = ["cdylib"]
workspace = true
[dependencies]
mimalloc = "0.1"
tokio = { version = "1", features = ["full"] }
tokio-util = { version = "0.7", features = ["full"] }
napi = { version = "3", features = ["napi10", "tokio_rt", "tokio_time"] }
napi-derive = "3"
pi-shell = { path = "../pi-shell" }
parking_lot = "0.12.5"
dashmap = "6.1"
clap = { version = "4", features = ["derive"] }
portable-pty = "0.9"
grep-regex = "0.1"
grep-searcher = "0.1"
grep-matcher = "0.1"
globset = "0.4"
ignore = "0.4"
rayon = "1.12"
ast-grep-core = { version = "0.39", default-features = false, features = [
"tree-sitter",
] }
pi-ast = { path = "../pi-ast" }
pi-iso = { path = "../pi-iso" }
inferno = { version = "0.12", default-features = false }
image = { version = "0.25", default-features = false, features = [
"png",
"jpeg",
"gif",
"webp",
] }
webp = "0.3"
arboard = { version = "3.6.1", features = ["wayland-data-control"] }
icy_sixel = "0.5"
unicode-segmentation = "1.13"
unicode-width = "0.2"
syntect = { version = "5.3", default-features = false, features = [
"default-syntaxes",
"default-themes",
"regex-fancy",
] }
html-to-markdown-rs = { version = "2.24", default-features = false }
phf = { version = "0.13", features = ["macros"] }
smallvec = { version = "1.15.1", features = [
"serde",
"write",
"union",
"const_new",
] }
memmap2 = "0.9"
xxhash-rust = { version = "0.8", features = ["xxh64"] }
regex = "1"
tiktoken-rs = "0.11"
similar = "3.1.0"
serde = { version = "1.0", features = ["derive"] }
serde_json = { version = "1.0", features = ["preserve_order"] }
anyhow = "1.0"
toml = "1.1"
anyhow.workspace = true
arboard.workspace = true
ast-grep-core.workspace = true
clap.workspace = true
dashmap.workspace = true
globset.workspace = true
grep-matcher.workspace = true
grep-regex.workspace = true
grep-searcher.workspace = true
html-to-markdown-rs.workspace = true
icy_sixel.workspace = true
ignore.workspace = true
image.workspace = true
inferno.workspace = true
memmap2.workspace = true
mimalloc.workspace = true
napi.workspace = true
napi-derive.workspace = true
parking_lot.workspace = true
phf.workspace = true
pi-ast.workspace = true
pi-iso.workspace = true
pi-shell.workspace = true
portable-pty.workspace = true
rayon.workspace = true
regex.workspace = true
serde.workspace = true
serde_json.workspace = true
similar.workspace = true
smallvec.workspace = true
syntect.workspace = true
tiktoken-rs.workspace = true
tokio.workspace = true
tokio-util.workspace = true
toml.workspace = true
unicode-segmentation.workspace = true
unicode-width.workspace = true
webp.workspace = true
xxhash-rust.workspace = true
[target.'cfg(unix)'.dependencies]
libc = "0.2"
libc.workspace = true
[target.'cfg(windows)'.dependencies]
winreg = "0.56"
winreg.workspace = true
[build-dependencies]
napi-build = "2"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
napi-build.workspace = true
serde.workspace = true
serde_json.workspace = true
+17 -22
View File
@@ -10,29 +10,24 @@ repository.workspace = true
workspace = true
[dependencies]
anyhow = "1.0"
tokio = { version = "1", features = ["full"] }
tokio-util = { version = "0.7", features = ["full"] }
brush-core = { version = "0.5.0", path = "../brush-core-vendored" }
brush-builtins = { version = "0.2.0", path = "../brush-builtins-vendored" }
brush-parser = "0.3"
clap = { version = "4", features = ["derive"] }
os_pipe = "1"
serde = { version = "1.0", features = ["derive"] }
serde_json = { version = "1.0", features = ["preserve_order"] }
toml = "1.1"
regex = "1"
xxhash-rust = { version = "0.8", features = ["xxh64"] }
anyhow.workspace = true
brush-builtins.workspace = true
brush-core.workspace = true
brush-parser.workspace = true
clap.workspace = true
os_pipe.workspace = true
regex.workspace = true
serde.workspace = true
serde_json.workspace = true
tokio.workspace = true
tokio-util.workspace = true
toml.workspace = true
xxhash-rust.workspace = true
[target.'cfg(unix)'.dependencies]
libc = "0.2"
libc.workspace = true
[target.'cfg(windows)'.dependencies]
winreg = "0.56"
smallvec = "1.15"
windows-sys = { version = "0.61", features = [
"Win32_Foundation",
"Win32_Storage_ProjectedFileSystem",
"Win32_System_Com",
"Win32_System_LibraryLoader",
] }
smallvec.workspace = true
windows-sys.workspace = true
winreg.workspace = true