1
0
Fork 0
mirror of https://github.com/BLAKE3-team/BLAKE3 synced 2024-05-07 09:46:16 +02:00
BLAKE3/Cargo.toml
Jack O'Connor 6fbc1a679d version 0.3.0
Changes since version 0.2.3:
- The optimized assembly implementations are now built by default. They
  perform better than the intrinsics implementations, and they compile
  much more quickly. Bringing the default behavior in line with reported
  benchmark figures should also simplify things for people running their
  own benchmarks. Previously this crate only built Rust intrinsics
  implementations by default, and the assembly implementations were
  gated by the (slightly confusingly named) "c" feature. Now the "c"
  feature is gone, and applications that need the old behavior can use
  the new "pure" feature. Mainly this will be applications that don't
  want to require a C compiler. Note that the `b3sum` crate previously
  activated the "c" feature by default, so its behavior hasn't changed.
2020-03-30 00:36:13 -04:00

89 lines
3.6 KiB
INI

[package]
name = "blake3"
version = "0.3.0"
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"]
# 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. Enabling the "pure" feature
# disables all FFI to C and assembly implementations, leaving only the Rust
# intrinsics implementations for SSE4.1 and AVX2. This removes the dependency
# on a C compiler/assembler, which can be helpful for certain applications.
# Library crates should generally avoid this feature, so that each binary crate
# is free make its own decision about build dependencies.
pure = []
# 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. ----------
# 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.
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_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.8.1"
crypto-mac = "0.7.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.48"