-
Notifications
You must be signed in to change notification settings - Fork 16
/
Cargo.toml
92 lines (81 loc) · 2.83 KB
/
Cargo.toml
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
[package]
name = "fusion-blossom"
version = "0.2.12"
authors = ["Yue Wu <[email protected]>"]
edition = "2021"
license = "MIT"
description = "A fast minimum-weight perfect matching solver for quantum error correction"
readme = "README.md"
homepage = "https://fusionblossom.com"
repository = "https://github.com/yuewuo/fusion-blossom"
keywords = ["QEC", "quantum-computing", "error-correction", "visualization"]
categories = ["science"]
exclude = ["tutorial/*", "benchmark/*", "visualize/data/persist/*", ".github/*"]
default-run = "fusion_blossom"
# see https://doc.rust-lang.org/1.39.0/cargo/reference/manifest.html#the-documentation-field-optional
[badges]
maintenance = { status = "actively-developed" }
[lib]
name = "fusion_blossom"
path = "src/lib.rs"
crate-type = ["lib", "cdylib"]
[[bin]]
name = "fusion_blossom"
path = "src/main.rs"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
# profiling: see scripts/NOTES.md
# embed debug symbols
[profile.release]
debug = true
[features]
# to enable a feature, use `--features xxx`
default = []
blossom_v = [
] # automatically enabled when file `blossomV/PerfectMatching.h` exists
remove_blossom_v = [] # disable blossom V library even if required files exist
i32_weight = [
] # use i32 instead of i64 as weight type, to be the same as blossom V library
u32_index = [
] # use u32 instead of usize as index type, to save memory by at most half
ordered_conflicts = [
] # sort conflict events, by default do not sort for better performance
disable_visualizer = [] # disable all visualizer behavior
unsafe_pointer = [
] # use raw pointers to access data without lock when appropriate; fusion blossom requires very little synchronization
dangerous_pointer = [
"unsafe_pointer",
] # use raw pointers instead of Arc and Weak, require "unsafe_pointer" feature
python_binding = ["pyo3"] # bind to Python
qecp_integrate = ["qecp"]
[dependencies]
rand_xoshiro = "0.6.0"
libc = "0.2.124"
cfg-if = "1.0.0"
priority-queue = "1.2.1"
parking_lot = { version = "0.12.1", features = ["hardware-lock-elision"] }
serde = { version = "1.0.117", features = ["derive", "rc"] }
serde_json = "1.0.59"
chrono = "0.4.19"
derivative = "2.2.0"
urlencoding = "2.1.0"
clap = { version = "4.2.4", features = ["cargo", "derive"] }
pbr = "1.0.4"
rayon = "1.7.0"
weak-table = "0.3.2"
rand = "0.8.5"
core_affinity = "0.8.0"
pyo3 = { version = "0.18.3", features = [
"extension-module",
"multiple-pymethods",
"abi3-py37",
], optional = true }
lazy_static = "1.4.0"
petgraph = "0.6.3"
qecp = { version = "0.2.7", features = ["fusion-blossom"], optional = true }
nonzero = "0.2.0"
[build-dependencies]
cc = "1.0.66"
[dev-dependencies]
[package.metadata.docs.rs]
rustdoc-args = ["--html-in-header", "katex-header.html"]
# to run locally: `RUSTDOCFLAGS="--html-in-header katex-header.html" cargo doc --no-deps`