-
Notifications
You must be signed in to change notification settings - Fork 2.8k
Expand file tree
/
Copy pathCargo.toml
More file actions
84 lines (77 loc) · 3.1 KB
/
Cargo.toml
File metadata and controls
84 lines (77 loc) · 3.1 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
[workspace]
members = ["crates/*"]
resolver = "2"
[workspace.package]
version = "2.4.0-dev"
edition = "2024"
rust-version = "1.85" # Keep in sync with README.md, rust-toolchain.toml, and tools/install_rust_msrv.sh
license = "Apache-2.0"
# Shared dependencies that can be inherited. This just helps a little with
# making sure our crates don't directly depend on different versions of things,
# although we can't help it if our transitive dependencies pull in more.
#
# Each crate can add on specific features freely as it inherits.
[workspace.dependencies]
bytemuck = "1.25"
bitfield-struct = "0.12.1"
indexmap.version = "2.10.0"
hashbrown.version = "0.15.5"
num-bigint = "0.4"
num-complex = "0.4"
nalgebra = "0.33"
numpy = "0.28"
ndarray = "0.16"
smallvec = "1.15"
thiserror = "2.0"
rustworkx-core = "0.17"
fixedbitset = "0.5.7"
approx = "0.5"
itertools = "0.14.0"
ahash = "0.8.12"
rayon = "1.10"
nom = "8.0"
nom-unicode = "0.4"
nom-language = "0.1"
rand = "0.9"
rand_pcg = "0.9"
rand_distr = "0.5"
num-traits = "0.2"
uuid = { version = "1.21", features = ["v4", "fast-rng"], default-features = false }
anyhow = "1.0"
binrw = "0.15"
# Most of the crates don't need the feature `extension-module`, since only `qiskit-pyext` builds an
# actual C extension (the feature disables linking in `libpython`, which is forbidden in Python
# distributions). We only activate that feature when building the C extension module; we still need
# it disabled for Rust-only tests to avoid linker errors with it not being loaded. See
# https://pyo3.rs/main/features#extension-module for more.
pyo3 = { version = "0.28.1", features = ["abi3-py310"] }
# These are our own crates.
qiskit-accelerate = { path = "crates/accelerate" }
qiskit-bindgen = { path = "crates/bindgen" }
qiskit-circuit = { path = "crates/circuit" }
qiskit-circuit-library = { path = "crates/circuit_library" }
qiskit-qasm2 = { path = "crates/qasm2" }
qiskit-qasm3 = { path = "crates/qasm3" }
qiskit-qpy = { path = "crates/qpy" }
qiskit-cext = { path = "crates/cext" }
qiskit-transpiler = { path = "crates/transpiler" }
qiskit-quantum-info = { path = "crates/quantum_info" }
qiskit-synthesis = {path = "crates/synthesis" }
[workspace.lints.clippy]
# The lint forbids things like `if a < b {} else if a == b {}`, and suggests matching on `a.cmp(&b)`
# which uses the `::std::cmp::Ordering` enum as a return. Both styles are acceptable, and the `if`
# chain can be more legible to people.
comparison-chain = "allow"
# Forbid `{,e}print{,ln}!` calls. These can be allowed locally if absolutely required, but the
# vast majority of these are debug statements that we forget about.
print_stdout = "deny"
print_stderr = "deny"
[workspace.lints.rust]
# In Rust 2021, the bodies of `unsafe fn` may use `unsafe` functions themselves without marking
# them. This is an overload of the word: `unsafe fn` is documenting something for the caller, but
# that doesn't mean the entire function body is unsafe. Denying this lint (which becomes
# warn-by-default in Rust 2024) means `unsafe fn` bodies still must use `unsafe {}` like normal.
unsafe_op_in_unsafe_fn = "deny"
[profile.release]
lto = 'fat'
codegen-units = 1