| [package] |
| name = "blake3" |
| version = "0.3.7" |
| authors = ["Jack O'Connor <oconnor663@gmail.com>"] |
| description = "the BLAKE3 hash function" |
| repository = "https://github.com/BLAKE3-team/BLAKE3" |
| license = "CC0-1.0 OR Apache-2.0" |
| documentation = "https://docs.rs/blake3" |
| readme = "README.md" |
| edition = "2018" |
| |
| [features] |
| default = ["std"] |
| |
| # The NEON implementation does not participate in dynamic feature detection, |
| # which is currently x86-only. If "neon" is on, NEON support is assumed. Note |
| # that AArch64 always supports NEON, but support on ARMv7 varies. The NEON |
| # implementation uses C intrinsics and requires a C compiler. |
| neon = [] |
| |
| # This crate uses libstd for std::io trait implementations, and also for |
| # runtime CPU feature detection. This feature is enabled by default. If you use |
| # --no-default-features, the only way to use the SIMD implementations in this |
| # crate is to enable the corresponding instruction sets statically for the |
| # entire build, with e.g. RUSTFLAGS="-C target-cpu=native". |
| std = ["digest/std"] |
| |
| # The "rayon" feature (defined below as an optional dependency) enables the |
| # join::RayonJoin type, which can be used with Hasher::update_with_join to |
| # perform multi-threaded hashing. However, even if this feature is enabled, all |
| # other APIs remain single-threaded. |
| |
| # ---------- Features below this line are for internal testing only. ---------- |
| |
| # By default on x86_64, this crate uses Samuel Neves' hand-written assembly |
| # implementations for SSE4.1, AVX2, and AVX512. (These provide both the best |
| # runtime performance, and the fastest build times.) And by default on 32-bit |
| # x86, this crate uses Rust intrinsics implementations for SSE4.1 and AVX2, and |
| # a C intrinsics implementation for AVX-512. In both cases, if a C compiler is |
| # not detected, or if AVX-512 support is missing from the detected compiler, |
| # build.rs automatically falls back to a pure Rust build. This feature forces |
| # that fallback, for testing purposes. (Note that in CI testing, we set the |
| # BLAKE3_CI environment variable, which instructs build.rs to error out rather |
| # than doing an automatic fallback.) |
| pure = [] |
| |
| # As described above, on x86_64 this crate use assembly implementations by |
| # default. Enabling the "prefer_intrinsics" feature makes this crate use |
| # intrinsics implementations on both 32-bit and 64-bit x86, again for testing |
| # purposes. |
| prefer_intrinsics = [] |
| |
| # Disable individual instruction sets. CI testing uses these flags to simulate |
| # different levels of hardware SIMD support. Note that code for the |
| # corresponding instruction set is still compiled; only detection is disabled. |
| # |
| # As noted above, these flags are *for testing only* and are not stable. It's |
| # possible that some users might find that their particular use case performs |
| # better if e.g. AVX-512 is disabled, because of issues like CPU downlocking. |
| # If that comes up, and if disabling the instruction set here at the feature |
| # level turns out to be the right approach, then we can design a stable |
| # feature. Until then, we reserve the right to break these features in a patch |
| # release. |
| no_sse2 = [] |
| no_sse41 = [] |
| no_avx2 = [] |
| no_avx512 = [] |
| |
| [package.metadata.docs.rs] |
| # Document blake3::join::RayonJoin on docs.rs. |
| features = ["rayon"] |
| |
| [dependencies] |
| arrayref = "0.3.5" |
| arrayvec = { version = "0.5.1", default-features = false, features = ["array-sizes-33-128"] } |
| constant_time_eq = "0.1.5" |
| rayon = { version = "1.2.1", optional = true } |
| cfg-if = "0.1.10" |
| digest = "0.9.0" |
| crypto-mac = "0.8.0" |
| |
| [dev-dependencies] |
| hex = "0.4.2" |
| page_size = "0.4.1" |
| rand = "0.7.2" |
| rand_chacha = "0.2.1" |
| reference_impl = { path = "./reference_impl" } |
| |
| [build-dependencies] |
| cc = "1.0.4" |