forest-filecoin 0.16.7

Rust Filecoin implementation.
Documentation
[package]
name = "forest-filecoin"
version = "0.16.7"
authors = ["ChainSafe Systems <info@chainsafe.io>"]
repository = "https://github.com/ChainSafe/forest"
edition = "2021"
license = "MIT OR Apache-2.0"
description = "Rust Filecoin implementation."

[dependencies]
ahash = "0.8"
anes = "0.2"
anyhow = "1.0"
argon2 = "0.5"
async-compression = { version = "0.4", features = ["tokio", "zstd"] }
async-fs = "2"
async-recursion = "1.0"
async-trait = "0.1"
asynchronous-codec = "0.6"
axum = { version = "0.7", features = ['ws'] }
backoff = { version = "0.4", features = ['tokio'] }
base64 = "0.21"
bigdecimal = "0.4.0"
blake2b_simd = "1.0"
bls-signatures = { version = "0.15", default-features = false, features = [
  "multicore",
  "blst-portable",
] } # prevent SIGINT on CI runners by using portable assembly
blstrs = { version = "0.7", features = ["portable"] }
boa_engine = "0.17.0"
boa_interner = "0.17.0"
boa_parser = "0.17.0"
boa_runtime = "0.17.0"
byteorder = "1.5.0"
bytes = "1.2"
cbor4ii = { version = "0.2.14", default-features = false, features = ["use_alloc", "use_std"] }
cfg-if = "1"
cfg-vis = "0.3.0"
chrono = { version = "0.4", default-features = false, features = ["clock"] }
cid = { version = "0.10", default-features = false, features = ["std"] }
clap = { version = "4.4", features = ["derive"] }
colored = "2.0"
console-subscriber = { version = "0.2", features = ["parking_lot"] }
convert_case = "0.6.0"
crossbeam-channel = "0.5"
crypto_secretbox = "0.1.1"
daemonize-me = "2.0"
data-encoding = "2.3"
data-encoding-macro = "0.1"
derive_more = "0.99.17"
dialoguer = "0.11"
digest = "0.10.5"
directories = "5"
ethereum-types = "0.14.1"
fil_actor_account_state = { version = "9.4.0" }
fil_actor_cron_state = { version = "9.4.0" }
fil_actor_datacap_state = { version = "9.4.0" }
fil_actor_init_state = { version = "9.4.0" }
fil_actor_interface = { version = "9.4.0" }
fil_actor_market_state = { version = "9.4.0" }
fil_actor_miner_state = { version = "9.4.0" }
fil_actor_power_state = { version = "9.4.0" }
fil_actor_reward_state = { version = "9.4.0" }
fil_actor_system_state = { version = "9.4.0" }
fil_actor_verifreg_state = { version = "9.4.0" }
fil_actors_shared = { version = "9.4.0", features = ["json"] }
filecoin-proofs-api = { version = "16.0", default-features = false }
flume = "0.11"
fs_extra = "1.2"
futures = "0.3"
futures-util = "0.3"
fvm2 = { package = "fvm", version = "~2.7", default-features = false }
fvm3 = { package = "fvm", default-features = false, version = "~3.8", features = ["arb"] }
fvm4 = { package = "fvm", default-features = false, version = "~4.1.2", features = ["arb"] }
fvm_ipld_blockstore = "0.2"
fvm_ipld_encoding = "0.4"
fvm_shared2 = { package = "fvm_shared", version = "~2.6" }
fvm_shared3 = { package = "fvm_shared", version = "~3.6", features = ["testing", "proofs"] }
fvm_shared4 = { package = "fvm_shared", version = "~4.1.2", features = ["testing", "proofs"] }
gethostname = "0.4"
git-version = "0.3"
group = "0.13"
hex = { version = "0.4", features = ["serde"] }
http = "1.0"
http0 = { package = "http", version = "0.2" }
human-repr = "1.0"
human_bytes = "0.4"
humantime = "2.1.0"
# TODO(aatifsyed): bump this to 1.0 after https://github.com/paritytech/jsonrpsee/pull/1266
# Tracking issue: https://github.com/ChainSafe/forest/issues/3961
hyper = { version = "0.14", features = ["full"] }
indexmap = { version = "2.1", features = ["serde"] }
indicatif = { version = "0.17.6", features = ["tokio"] }
integer-encoding = "4.0"
is-terminal = "0.4"
itertools = "0.12.1"
jsonrpc-v2 = { version = "0.12", default-features = false, features = ["easy-errors", "macros", "bytes-v10"] }
jsonrpsee = { version = "0.21.0", features = ["full"] }
jsonwebtoken = "9"
kubert-prometheus-process = "0.1"
libc = "0.2"
libipld = { version = "0.16", default-features = false, features = ["dag-cbor", "dag-json", "derive", "serde-codec"] }
libipld-core = { version = "0.16", features = ['arb', 'serde-codec'] }
libipld-macro = "0.16"
libp2p = { version = "0.53", default-features = false, features = [
  'autonat',
  'gossipsub',
  'kad',
  'identify',
  'ping',
  'mdns',
  'noise',
  'yamux',
  'tcp',
  'dns',
  'request-response',
  'metrics',
  'tokio',
  'macros',
  'serde',
  'rsa',
  'ecdsa',
  'ed25519',
  'secp256k1',
] }
libsecp256k1 = "0.7"
lru = "0.12"
memmap2 = "0.9"
memory-stats = "1.1"
mimalloc = { version = "0.1.39", optional = true, default-features = false }
multiaddr = "0.18"
multimap = "0.10.0"
nom = "7.1.3"
nonempty = { version = "0.9.0", features = ["serialize"] }
nonzero_ext = "0.3.0"
num = "0.4.0"
num-bigint = "0.4"
num-derive = "0.4"
num-rational = "0.4"
num-traits = "0.2"
num_cpus = "1.14"
once_cell = "1.15"
parity-db = { version = "0.4.13", default-features = false }
parking_lot = { version = "0.12", features = ["deadlock_detection"] }
pathfinding = "4.9.1"
pin-project-lite = "0.2"
positioned-io = "0.3.3"
pretty_assertions = "1.3.0"
prometheus-client = "0.22"
quick-protobuf = "0.8"
quick-protobuf-codec = "0.2"
rand = "0.8"
rand_distr = "0.4"
raw_sync_2 = "0.1"
rayon = "1.8"
regex = "1.10"
reqwest = { version = "0.11.24", default-features = false, features = [
  "stream",
  "rustls-tls",
  "json",
] } # use rustls instead of native (openSSL) tls to drop the number of build dependencies
rlimit = "0.10.1"
rs-car-ipfs = "0.3"
rustyline = "13"
scopeguard = "1.1.0"
semver = "1.0"
serde = { version = "1.0", default-features = false, features = ["derive"] }
serde_ipld_dagcbor = "0.4.1"
serde_json = "1.0"
serde_tuple = "0.5"
serde_with = { version = "3.6.1", features = ["chrono_0_4"] }
serde_yaml = "0.9"
sha2 = { version = "0.10.5", default-features = false }
shared_memory = "0.12"
similar = "2.2.1"
slotmap = "1.0"
smallvec = "1.13"
smart-default = "0.7.1"
stacker = "0.1.15"
static_assertions = "1.1.0"
statrs = "0.16"
strum = { version = "0.26", features = ["derive"] }
strum_macros = "0.26"
tabled = "0.15"
tap = "1"
tar = "0.4"
tempfile = "3.10"
thiserror = "1.0"
ticker = "0.1"
tikv-jemallocator = { version = "0.5", optional = true }
tokio = { version = "1", features = ['full'] }
tokio-stream = { version = "0.1", features = ["fs", "io-util"] }
tokio-tungstenite = "0.21.0"
tokio-util = { version = "0.7.9", features = ["compat", "io-util"] }
toml = "0.8"
tower = { version = "0.4", features = ["full"] }
tracing = "0.1"
tracing-appender = "0.2"
tracing-chrome = "0.7.1"
tracing-loki = { version = "0.2", default-features = false, features = ["compat-0-2-1", "rustls"] }
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
unsigned-varint = { version = "0.8", features = ["codec"] }
url = { version = "2.3", features = ["serde"] }
uuid = { version = "1.7", features = ["v4"] }
walkdir = "2"
zstd = "0.13"

[target.'cfg(unix)'.dependencies]
termios = "0.3"

[dev-dependencies]
ariadne = "0.4.0"
assert_cmd = "2"
bimap = "0.6.3"
cargo_metadata = "0.18.0"
criterion = { version = "0.5.1", features = ["async_tokio", "csv"] }
cs_serde_bytes = "0.12.2"
derive-quickcheck-arbitrary = "0.1.1"
fvm3 = { package = "fvm", default-features = false, version = "~3.8", features = ["arb"] }
fvm_shared3 = { package = "fvm_shared", version = "~3.6", default-features = false, features = ["arb"] }
http-range-header = "0.4.0"
libp2p = { version = "0.53", features = ['tcp', 'noise', 'yamux', 'request-response', 'tokio'] }
libp2p-swarm-test = "0.3"
num-bigint = { version = "0.4", features = ['quickcheck'] }
petgraph = "0.6.4"
predicates = "3.1"
proc-macro2 = { version = "1.0.78", default-features = false, features = ["span-locations"] }
quickcheck = "1"
quickcheck_async = "0.1.1"
quickcheck_macros = "1"
ra_ap_syntax = "0.0.202"
regex-automata = "0.4"
syn = { version = "2.0.51", default-features = false, features = [
  "full",
  "parsing",
  "visit",
  "printing",
  "extra-traits",
] }
tokio-test = "0.4.2"

# This needs to be set as default. Otherwise, a regular build or test will produce
# gargantuan artifacts (around 70G for all tests). For a debugging session, you can
# temporarily comment it out.
[profile.dev]
debug = 0
split-debuginfo = "unpacked"

[profile.quick]
inherits = "release"
opt-level = 1
lto = "off"

[profile.release]
# https://doc.rust-lang.org/cargo/reference/profiles.html#strip
strip = true
# The FVM relies on catching panics. See: https://github.com/ChainSafe/forest/issues/3153
panic = "unwind"
overflow-checks = true

# These should be refactored (probably removed) in #2984
[features]
default = ["jemalloc"]
doctest-private = []   # see lib.rs::doctest_private
benchmark-private = [] # see lib.rs::benchmark_private

# Allocator
rustalloc = []
jemalloc = ["dep:tikv-jemallocator"]
mimalloc = ["dep:mimalloc"]

[[bench]]
name = "example-benchmark"
harness = false
required-features = ["benchmark-private"]

[[bench]]
name = "car-index"
harness = false
required-features = ["benchmark-private"]

[package.metadata.docs.rs]
# See https://docs.rs/about/metadata
rustdoc-args = ["--document-private-items"]