# WHENEVER YOU CHANGE SOMETHING HERE, DO THE SAME THING IN `Cargo_nightly.toml`!!! [package] name = "pauli_tracker" version = "0.4.5" authors = ["Jannis Ruh "] edition = "2021" rust-version = "1.65.0" # needed for GATs license = "MIT OR Apache-2.0" repository = "https://github.com/taeruh/pauli_tracker" description = "A library to track Pauli gates through Clifford circuits." keywords = ["quantum", "clifford", "pauli", "mbqc"] categories = ["simulation"] readme = "README.md" exclude = ["Cargo_nightly.toml", "todo.txt", "xtask"] [lib] crate-type = ["lib"] [features] circuit = ["dep:rand"] experimental = [] serde = [ "dep:serde", "hashbrown/serde", "bitvec?/serde", "bitvec_simd?/use_serde", "bit-vec?/serde", ] # about the specified dependency version: # - we use the newest major version if possible: if we expose an item from a dependency, # then bumping the dependencies major version is a breaking change, therefore, if we # don't have to bump the dependency's version, we wait until we really want to # increase our major version because of some other reasons # - we use the lowest possible minor version (manually search it with a binary-like # search and test with `./target/debug/xtask ci locked`); this is okay because we # test it in our CI (test locked) and it provides maximal flexibility to users. # However, note that we are not testing all versions in the possible range from our # specified minimal version to the latest version. This means that there might be # versions within the allowed range that do not compile. That is in general a problem # and the only way out would be to define exact versions with "=", but that is too # strict. However, this kind of breakage should be rare if the libraries follow the # SemVer rules, as best as possible, and users don't use stuff like wildcard imports. # Specifying the lowest possible minor versions, increases the chance for such # breakages, but since this is rather a SemVer failure, I think this is better then # restricting when this library can be used (through too tight dependency version # bounds) # - we tend to use a higher patch version (because these are bug fixes or internal # improvements), i.e., when adding a dependency or updating its major and/or minor # versions, we select the highest possible patch version (because finding the minimal # working patch version seems rather unnecessary - why would someone want to restrict # a dependency to a smaller patch version (except if the patch breaks something, but # then it should be fixed soon)) # the above is of course unnecessary for dev-dependencies, xtask, ..., just use whatever # works [dependencies] thiserror = "1.0.63" itertools = "0.13.0" hashbrown = "0.14.0" serde = { version = "1.0.208", optional = true, features = ["derive"] } bitvec = { version = "1.0.1", optional = true } bitvec_simd = { version = "0.20.0", optional = true } bit-vec = { version = "0.6.2", optional = true } rand = { version = "0.8.0", optional = true } [package.metadata.docs.rs] all-features = true # we use cfg_attr(docsrs, <(nightly-)attribute>) to use (nightly)-attributes when # building the docs (note that Docs.rs builds the docs with the nightly toolchain) rustdoc-args = ["--cfg", "docsrs"] [dev-dependencies] criterion = "0.5.1" proptest = "1.5.0" coverage-helper = "0.2.2" rand_pcg = "0.3.1" rustc-hash = { version = "2.0.0" } [[bench]] name = "paler" harness = false