-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathCargo.toml
More file actions
77 lines (62 loc) · 1.96 KB
/
Cargo.toml
File metadata and controls
77 lines (62 loc) · 1.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
[package]
name = "globlin"
version = "1.0.0"
edition = "2021"
authors = ["Ricardo Schlueter"]
description = "A high-performance glob pattern matcher - 2-3x faster drop-in replacement for glob"
license = "MIT"
repository = "https://github.com/CapSoftware/globlin"
[lib]
crate-type = ["cdylib", "rlib"]
[dependencies]
# NAPI-RS for Node.js bindings
napi = { version = "2.16", features = ["async", "napi8", "tokio_rt"] }
napi-derive = "2.16"
# Async runtime
tokio = { version = "1.35", features = ["fs", "sync", "rt-multi-thread"] }
# Pattern matching - custom implementation (cannot use globset)
regex = "1.10"
fancy-regex = "0.13" # For look-ahead/look-behind support (used in extglob negation)
# Filesystem traversal - starting with walkdir
walkdir = "2.4"
# Parallel walking (optional, for parallel: true mode)
jwalk = "0.8"
rayon = "1.8"
# Utilities
once_cell = "1.19"
thiserror = "1.0"
lru = "0.16"
bumpalo = "3.14" # Arena allocator for temporary allocations
compact_str = "0.8" # Small string optimization
smallvec = { version = "1.13", features = ["union"] } # Stack-allocated small vectors
ahash = "0.8" # Faster hashing for HashSet/HashMap
# Platform-specific I/O optimizations (Linux)
[target.'cfg(target_os = "linux")'.dependencies]
libc = "0.2" # For getdents64 syscall and kernel version detection
# Platform-specific I/O optimizations (macOS)
[target.'cfg(target_os = "macos")'.dependencies]
libc = "0.2" # For getdirentries64 syscall
dispatch = "0.2" # Grand Central Dispatch for parallel walking
[build-dependencies]
napi-build = "2.1"
[dev-dependencies]
criterion = "0.5"
tempfile = "3"
num_cpus = "1.16"
# ignore crate removed - requires Rust 1.85+ (edition2024) which Docker images don't have
[[bench]]
name = "glob_bench"
harness = false
[[bench]]
name = "walker_comparison"
harness = false
[[bench]]
name = "component_bench"
harness = false
[[bin]]
name = "profile_glob"
path = "src/bin/profile_glob.rs"
[profile.release]
lto = true
codegen-units = 1
strip = true