Fixes #3609. It turns out that `sha2` is a nontrivial dependency for Cranelift in many contexts, partly because it pulls in a number of other crates as well. One option is to remove the hash check under certain circumstances, as implemented in #3616. However, this is undesirable for other reasons: having different dependency options in Wasmtime in particular for crates.io vs. local builds is not really possible, and so either we still have the higher build cost in Wasmtime, or we turn off the checks by default, which goes against the original intent of ensuring developer safety (no mysterious stale-source bugs). This PR uses `SipHash` instead, which is built into the standard library. `SipHash` is deprecated, but it's fixed and deterministic (across runs and across Rust versions), which is what we need, unlike the suggested replacement `std::collections::hash_map::DefaultHasher`. The result is only 64 bits, and is not cryptographically secure, but we never needed that; we just need a simple check to indicate when we forget a `rebuild-isle`.
105 lines
3.5 KiB
TOML
105 lines
3.5 KiB
TOML
[package]
|
|
authors = ["The Cranelift Project Developers"]
|
|
name = "cranelift-codegen"
|
|
version = "0.79.0"
|
|
description = "Low-level code generator library"
|
|
license = "Apache-2.0 WITH LLVM-exception"
|
|
documentation = "https://docs.rs/cranelift-codegen"
|
|
repository = "https://github.com/bytecodealliance/wasmtime"
|
|
categories = ["no-std"]
|
|
readme = "README.md"
|
|
keywords = ["compile", "compiler", "jit"]
|
|
build = "build.rs"
|
|
edition = "2018"
|
|
|
|
[dependencies]
|
|
cranelift-codegen-shared = { path = "./shared", version = "0.79.0" }
|
|
cranelift-entity = { path = "../entity", version = "0.79.0" }
|
|
cranelift-bforest = { path = "../bforest", version = "0.79.0" }
|
|
hashbrown = { version = "0.9.1", optional = true }
|
|
target-lexicon = "0.12"
|
|
log = { version = "0.4.6", default-features = false }
|
|
serde = { version = "1.0.94", features = ["derive"], optional = true }
|
|
bincode = { version = "1.2.1", optional = true }
|
|
gimli = { version = "0.26.0", default-features = false, features = ["write"], optional = true }
|
|
smallvec = { version = "1.6.1" }
|
|
regalloc = { version = "0.0.33" }
|
|
souper-ir = { version = "2.1.0", optional = true }
|
|
# It is a goal of the cranelift-codegen crate to have minimal external dependencies.
|
|
# Please don't add any unless they are essential to the task of creating binary
|
|
# machine code. Integration tests that need external dependencies can be
|
|
# accomodated in `tests`.
|
|
|
|
[dev-dependencies]
|
|
criterion = "0.3"
|
|
|
|
[build-dependencies]
|
|
cranelift-codegen-meta = { path = "meta", version = "0.79.0" }
|
|
cranelift-isle = { path = "../isle/isle", version = "=0.79.0", optional = true }
|
|
miette = { version = "3", features = ["fancy"], optional = true }
|
|
|
|
[features]
|
|
default = ["std", "unwind"]
|
|
|
|
# The "std" feature enables use of libstd. The "core" feature enables use
|
|
# of some minimal std-like replacement libraries. At least one of these two
|
|
# features need to be enabled.
|
|
std = []
|
|
|
|
# The "core" features enables use of "hashbrown" since core doesn't have
|
|
# a HashMap implementation, and a workaround for Cargo #4866.
|
|
core = ["hashbrown"]
|
|
|
|
# This enables some additional functions useful for writing tests, but which
|
|
# can significantly increase the size of the library.
|
|
testing_hooks = []
|
|
|
|
# This enables unwind info generation functionality.
|
|
unwind = ["gimli"]
|
|
|
|
# ISA targets for which we should build.
|
|
# If no ISA targets are explicitly enabled, the ISA target for the host machine is enabled.
|
|
x86 = []
|
|
arm64 = []
|
|
s390x = []
|
|
arm32 = [] # Work-in-progress codegen backend for ARM.
|
|
|
|
# Stub feature that does nothing, for Cargo-features compatibility: the new
|
|
# backend is the default now.
|
|
experimental_x64 = []
|
|
|
|
# Option to enable all architectures.
|
|
all-arch = [
|
|
"x86",
|
|
"arm64",
|
|
"s390x"
|
|
]
|
|
|
|
# For dependent crates that want to serialize some parts of cranelift
|
|
enable-serde = [
|
|
"serde",
|
|
"regalloc/enable-serde",
|
|
"cranelift-entity/enable-serde",
|
|
]
|
|
|
|
# Allow snapshotting regalloc test cases. Useful only to report bad register
|
|
# allocation failures, or for regalloc.rs developers.
|
|
regalloc-snapshot = ["bincode", "regalloc/enable-serde"]
|
|
|
|
# Enable support for the Souper harvester.
|
|
souper-harvest = ["souper-ir", "souper-ir/stringify"]
|
|
|
|
# Recompile ISLE DSL source files into their generated Rust code.
|
|
rebuild-isle = ["cranelift-isle", "miette", "cranelift-codegen-meta/rebuild-isle"]
|
|
|
|
# A hack to skip the ISLE-rebuild logic when testing for determinism
|
|
# with the "Meta deterministic check" CI job.
|
|
completely-skip-isle-for-ci-deterministic-check = []
|
|
|
|
[badges]
|
|
maintenance = { status = "experimental" }
|
|
|
|
[[bench]]
|
|
name = "x64-evex-encoding"
|
|
harness = false
|