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
134
135
[]
= "blake3"
= "1.7.0"
= ["Jack O'Connor <oconnor663@gmail.com>", "Samuel Neves"]
= "the BLAKE3 hash function"
= "https://github.com/BLAKE3-team/BLAKE3"
= "CC0-1.0 OR Apache-2.0 OR Apache-2.0 WITH LLVM-exception"
= "https://docs.rs/blake3"
= "README.md"
= "2021"
[]
= ["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.
= []
# The Wasm SIMD implementation does not participate in dynamic feature detection,
# which is currently x86-only. If "wasm_simd" is on, Wasm SIMD support is assumed.
# Note that not all Wasm implementations support the Wasm SIMD specification.
# This may become the default in the future.
= []
# 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".
= []
# The `rayon` feature (disabled by default, but enabled for docs.rs) adds the
# `update_rayon` and (in combination with `mmap` below) `update_mmap_rayon`
# methods, for multithreaded hashing. However, even if this feature is enabled,
# all other APIs remain single-threaded.
#
# Implementation detail: We take a dependency on rayon-core instead of rayon,
# because it builds faster and still includes all the APIs we need.
= ["dep:rayon-core", "std"]
# The `mmap` feature (disabled by default, but enabled for docs.rs) adds the
# `update_mmap` and (in combination with `rayon` above) `update_mmap_rayon`
# helper methods for memory-mapped IO.
= ["std", "dep:memmap2"]
# Implement the zeroize::Zeroize trait for types in this crate.
= ["dep:zeroize", "arrayvec/zeroize"]
# This crate implements traits from the RustCrypto project, exposed here as the
# "traits-preview" feature. However, these traits aren't stable, and they're
# expected to change in incompatible ways before they reach 1.0. For that
# reason, this crate makes no SemVer guarantees for this feature, and callers
# who use it should expect breaking changes between patch versions of this
# crate. (The "*-preview" feature name follows the conventions of the RustCrypto
# "signature" crate.)
= ["dep:digest"]
# ---------- Features below this line are undocumented and unstable. ----------
# The following features are mainly intended for testing and benchmarking, and
# they might change or disappear at any time without a major version bump.
# It wasn't originally intended to expose "digest" as its own feature, but the
# traits-preview feature above predated the "dep:" syntax in Cargo. Version
# 1.5.2 of this crate started using "dep:" syntax, but that broke some callers
# in the wild (https://solana.stackexchange.com/q/17787/29050). This feature
# unbreaks those callers. When Cargo gains the ability to deprecate features,
# this feature will be deprecated. Note that the relevant trait implementations
# are still gated by "traits-preview".
= ["dep:digest"]
# 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.)
= []
# 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.
= []
# 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 downclocking.
# 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.
= []
= []
= []
= []
= []
[]
# Document the rayon/mmap methods and the Serialize/Deserialize/Zeroize impls on docs.rs.
= ["mmap", "rayon", "serde", "zeroize"]
[]
= "0.3.5"
= { = "0.7.4", = false }
= { = "0.3.1", = false }
= "1.0.0"
= { = "0.10.1", = [ "mac" ], = true }
= { = "0.9", = true }
= { = "1.12.1", = true }
= { = "1.0", = false, = ["derive"], = true }
= { = "1", = false, = true }
[]
= "0.12.0"
= "0.4.2"
= "0.6.0"
= "0.9.0"
= "0.9.0"
= { = "./reference_impl" }
= "3.8.0"
= "1.0.107"
= "0.2.2"
[]
= "1.1.12"