-
Notifications
You must be signed in to change notification settings - Fork 19
Expand file tree
/
Copy pathCargo.toml
More file actions
133 lines (110 loc) · 4.67 KB
/
Copy pathCargo.toml
File metadata and controls
133 lines (110 loc) · 4.67 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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
[package]
name = "pathmap"
version = "0.3.0"
edition = "2024"
rust-version = "1.88"
license = "MIT"
description = "A key-value store with prefix compression, structural sharing, and powerful algebraic operations"
repository = "https://github.com/adam-Vandervorst/pathMap/"
keywords = ["trie", "MORK", "path", "algebra"]
categories = ["algorithms", "data-structures", "database-implementations"]
readme = "README.md"
exclude = ["target/", "benches/", "pathmap-book/", ".*", "fuzz/"]
[package.metadata.docs.rs]
rustc-args = ["-C", "target-feature=+aes,+sse2"]
[lib]
name = "pathmap"
path = "src/lib.rs"
[dependencies]
pathmap-derive = { version = "0.2.1", path = "./pathmap-derive" }
maybe-dangling = "0.1.1"
dyn-clone = "1.0.17" # NOTE, we can eliminate this when we eliminate `!slim_ptrs`
local-or-heap = "0.1.0"
reusing-vec = {version = "0.2.0", features = ["smallvec"]}
smallvec = {version = "1.13.2", features = ["union"]}
arrayvec = "0.7.6"
num-traits = "0.2"
tikv-jemallocator = {version = "0.6.0", optional = true}
libz-ng-sys = {version = "1", optional = true } # for any serialzation
rand_distr = { version = "0.5.1", optional = true }
rand = { version = "0.9.0", optional = true }
memmap2 = { version = "0.9.5", optional = true }
fast-slice-utils = { version = "0.1.2", features=[] }
distr-combinators = { version = "0.1.0", optional = true }
[features]
default = ["graft_root_vals", "slim_ptrs", "serialization"]
nightly = ["fast-slice-utils/nightly"] # Uses features in the nightly tool chain for better performance, and the allocator and coroutine APIs
jemalloc = ["dep:tikv-jemallocator"] # Enables [jemalloc](https://jemalloc.net/) as the default allocator. This dramatically improves scaling for write-heavy workloads and is generally recommended. The only reason it is not the default is to avoid interference with the host application allocator.
zipper_tracking = [] #Exports the zipper_tracking module publicly
all_dense_nodes = [] # Exclusively use the DenseByteNode type, which generally performs worse but is useful for compatibility and perf comparisons.
arena_compact = ["dep:memmap2"]
bridge_nodes = [] # Enable the experimental BridgeNode type. Incompatible with `all_dense_nodes` WILL BE REMOVED EVENTUALLY
old_cursor = [] # Enables an old deprecated traversal object that predates the zippers, WILL BE REMOVED EVENTUALLY
random = ["dep:rand", "dep:rand_distr", "dep:distr-combinators"] # Used for creating random paths, tries, and zipper movements
counters = [] # Enable features to inspect performance properties of tries. Mainly useful when tuning performance of the PathMap internals.
graft_root_vals = [] # Enables an experimental change in behavior that causes `graft`, `graft_map`, `make_map`, `take_map`, and `join_map` to treat the value at the focus as part of the operation
slim_ptrs = [] # Enables use of a 64-bit inter-node pointer type (TrieNodeODRc)
slim_dispatch = [] # Experiment. Enables the 64-bit pointers to back the TaggedNodeRef and TaggedNodeRefMut types, WILL BE REMOVED EVENTUALLY
act_counters = ["arena_compact"] # LP: Question: Why isn't this code enabled by just counters + arena_compact???
viz = []
serialization = ["dep:libz-ng-sys"]
zipper_alg = [] # Enables experimental implementations of Zipper-based algebraic operations
[target.'cfg(miri)'.dependencies]
fast-slice-utils = { version = "0.1.2", features = ["miri_safe"] }
[target.'cfg(not(any(miri,target_arch="riscv64")))'.dependencies]
gxhash = {version="3.5"} # for dag_serialization, merkleization, and caching catamorphism
[target.'cfg(any(miri,target_arch="riscv64"))'.dependencies]
xxhash-rust = { version = "0.8.15", features = ["xxh64", "xxh3", "const_xxh3"] } # Replacement for gxhash running under miri
[dev-dependencies]
paste = "1.0"
divan = "0.1.14"
serde = { version = "1.0.163", features = ["derive"]}
csv = "1.1.6"
num = "0.4.3"
rand_distr = { version = "0.5.1" }
rand = { version = "0.9.0" }
tempfile = "3.19.1"
pasture-core = "0.5.0" # For pointcloud benchmark
pasture-io = "0.5.0" # For pointcloud benchmark
[[bench]]
name = "superdense_keys"
harness = false
[[bench]]
name = "sparse_keys"
harness = false
[[bench]]
name = "binary_keys"
harness = false
[[bench]]
name = "cities"
harness = false
[[bench]]
name = "shakespeare"
harness = false
[[bench]]
name = "parallel"
harness = false
[[bench]]
name = "serde"
harness = false
[[bench]]
name = "oeis"
harness = false
[[bench]]
name = "pointcloud"
harness = false
[[bench]]
name = "product_zipper"
harness = false
[[bench]]
name = "sla"
harness = false
[[bench]]
name = "multiplicities"
harness = false
[[bench]]
name = "graft_masked_branches"
harness = false
[workspace]
members = ["pathmap-derive", "examples/sampling", "examples/arena_compact_tests"]
resolver = "2"