mirror of
https://github.com/rustfs/rustfs.git
synced 2026-10-24 00:31:54 +08:00
* chore(deps): refresh workspace dependencies Run cargo update and cargo upgrade twice from origin/main. Co-Authored-By: heihutu <heihutu@gmail.com> Co-Authored-By: zhi22915 <qiuzgang@gmail.com> * fix(deps): pin Pulsar 6.9.0 until recovery is bounded Keep Pulsar on 6.9.0 after reproducing background recovery and lookup activity after delivery timeout and target destruction in 6.9.1. Use an exact requirement to prevent a later cargo update from selecting the affected release. Co-Authored-By: heihutu <heihutu@gmail.com> Co-Authored-By: zhi22915 <qiuzgang@gmail.com> --------- Co-authored-by: heihutu <heihutu@gmail.com> Co-authored-by: zhi22915 <qiuzgang@gmail.com>
424 lines
17 KiB
TOML
424 lines
17 KiB
TOML
# Copyright 2024 RustFS Team
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
[workspace]
|
|
members = [
|
|
"rustfs", # Core file system implementation
|
|
"crates/audit", # Audit target management system with multi-target fan-out
|
|
"crates/checksums", # client checksums
|
|
"crates/common", # Shared utilities and data structures
|
|
"crates/data-usage", # Shared data usage models and algorithms
|
|
"crates/config", # Configuration management
|
|
"crates/connect-symbol-catalog", # Release-only CPU profile symbol catalog generator
|
|
"crates/credentials", # Credential management system
|
|
"crates/crypto", # Cryptography and security features
|
|
"crates/ecstore", # Erasure coding storage implementation
|
|
"crates/e2e_test", # End-to-end test suite
|
|
"crates/filemeta", # File metadata management
|
|
"crates/heal", # Erasure set and object healing
|
|
"crates/heal-contracts", # Heal request/response channel contracts
|
|
"crates/iam", # Identity and Access Management
|
|
"crates/keystone", # OpenStack Keystone integration
|
|
"crates/license", # License and entitlement provider contracts
|
|
"crates/lifecycle", # Lifecycle rule evaluation contracts
|
|
"crates/kms", # Key Management Service
|
|
"crates/lock", # Distributed locking implementation
|
|
"crates/log-analyzer", # Offline log fault-analysis core (rustfs diagnose)
|
|
"crates/madmin", # Management dashboard and admin API interface
|
|
"crates/notify", # Notification system for events
|
|
"crates/obs", # Observability utilities
|
|
"crates/object-capacity", # Capacity scan and refresh core
|
|
"crates/object-data-cache", # Long-term object body cache engine
|
|
"crates/policy", # Policy management
|
|
"crates/protocols", # Protocol implementations (FTPS, SFTP, etc.)
|
|
"crates/protos", # Protocol buffer definitions
|
|
"crates/rio", # Rust I/O utilities and abstractions
|
|
"crates/rio-v2", # MinIO on-disk format compatibility I/O layer (feature-gated, ships in no default build)
|
|
"crates/replication", # Replication contracts and wire formats
|
|
"crates/concurrency", # Concurrency management for RustFS - timeout, locking, backpressure, and I/O scheduling
|
|
"crates/s3-client", # S3 client for engine-side consumption of remote S3 endpoints (tiering, transition targets)
|
|
"crates/s3-types", # S3 event type definitions
|
|
"crates/s3-ops", # S3 operation definitions and mapping
|
|
"crates/s3select-api", # S3 Select API interface
|
|
"crates/s3select-query", # S3 Select query engine
|
|
"crates/scanner", # Scanner for data integrity checks and health monitoring
|
|
"crates/scanner-metrics", # Scanner metrics and cycle telemetry
|
|
"crates/security-governance", # Security governance contracts
|
|
"crates/extension-schema", # Extension schema contracts
|
|
"crates/signer", # client signer
|
|
"crates/storage-api", # Storage API contracts
|
|
"crates/test-utils", # Shared test bootstrap helpers (dev-dependency only)
|
|
"crates/targets", # Target-specific configurations and utilities
|
|
"crates/trusted-proxies", # Trusted proxies management
|
|
"crates/tls-runtime", # Project-wide TLS runtime foundation
|
|
"crates/utils", # Utility functions and helpers
|
|
"crates/io-metrics", # I/O metrics collection for performance analysis
|
|
"crates/io-core", # Buffered Bytes, mmap-then-copy, and aligned pread I/O helpers
|
|
"crates/zip", # ZIP file handling and compression
|
|
]
|
|
resolver = "3"
|
|
|
|
[workspace.package]
|
|
edition = "2024"
|
|
license = "Apache-2.0"
|
|
repository = "https://github.com/rustfs/rustfs"
|
|
rust-version = "1.99.0"
|
|
version = "1.0.2"
|
|
homepage = "https://rustfs.com"
|
|
description = "RustFS is a high-performance distributed object storage software built using Rust, one of the most popular languages worldwide. "
|
|
keywords = ["RustFS", "Minio", "object-storage", "filesystem", "s3"]
|
|
categories = ["web-programming", "development-tools", "filesystem", "network-programming"]
|
|
authors = ["RustFS Team"]
|
|
|
|
[workspace.lints.rust]
|
|
unsafe_code = "deny"
|
|
|
|
[workspace.lints.clippy]
|
|
all = "warn"
|
|
needless_collect = "warn"
|
|
redundant_clone = "warn"
|
|
|
|
[workspace.dependencies]
|
|
# RustFS Internal Crates
|
|
rustfs = { path = "./rustfs", version = "1.0.2" }
|
|
rustfs-heal = { path = "crates/heal", version = "1.0.2" }
|
|
rustfs-heal-contracts = { path = "crates/heal-contracts", version = "1.0.2" }
|
|
rustfs-scanner-metrics = { path = "crates/scanner-metrics", version = "1.0.2" }
|
|
rustfs-audit = { path = "crates/audit", version = "1.0.2" }
|
|
rustfs-checksums = { path = "crates/checksums", version = "1.0.2" }
|
|
rustfs-common = { path = "crates/common", version = "1.0.2" }
|
|
rustfs-data-usage = { path = "crates/data-usage", version = "1.0.2" }
|
|
rustfs-config = { path = "./crates/config", version = "1.0.2" }
|
|
rustfs-concurrency = { path = "./crates/concurrency", version = "1.0.2" }
|
|
rustfs-credentials = { path = "crates/credentials", version = "1.0.2" }
|
|
rustfs-crypto = { path = "crates/crypto", version = "1.0.2" }
|
|
rustfs-ecstore = { path = "crates/ecstore", version = "1.0.2" }
|
|
rustfs-filemeta = { path = "crates/filemeta", version = "1.0.2" }
|
|
rustfs-iam = { path = "crates/iam", version = "1.0.2" }
|
|
rustfs-keystone = { path = "crates/keystone", version = "1.0.2" }
|
|
rustfs-license = { path = "crates/license", version = "1.0.2" }
|
|
rustfs-lifecycle = { path = "crates/lifecycle", version = "1.0.2" }
|
|
rustfs-kms = { path = "crates/kms", version = "1.0.2" }
|
|
rustfs-lock = { path = "crates/lock", version = "1.0.2" }
|
|
rustfs-madmin = { path = "crates/madmin", version = "1.0.2" }
|
|
rustfs-notify = { path = "crates/notify", version = "1.0.2" }
|
|
rustfs-io-metrics = { path = "crates/io-metrics", version = "1.0.2" }
|
|
rustfs-io-core = { path = "crates/io-core", version = "1.0.2" }
|
|
rustfs-object-capacity = { path = "crates/object-capacity", version = "1.0.2" }
|
|
rustfs-object-data-cache = { path = "crates/object-data-cache", version = "1.0.2", default-features = false }
|
|
rustfs-log-analyzer = { path = "crates/log-analyzer", version = "1.0.2" }
|
|
rustfs-obs = { path = "crates/obs", version = "1.0.2" }
|
|
rustfs-policy = { path = "crates/policy", version = "1.0.2" }
|
|
rustfs-protos = { path = "crates/protos", version = "1.0.2" }
|
|
rustfs-protocols = { path = "crates/protocols", version = "1.0.2" }
|
|
rustfs-replication = { path = "crates/replication", version = "1.0.2" }
|
|
rustfs-rio = { path = "crates/rio", version = "1.0.2" }
|
|
rustfs-rio-v2 = { path = "crates/rio-v2", version = "1.0.2" }
|
|
rustfs-s3-client = { path = "crates/s3-client", version = "1.0.2" }
|
|
rustfs-s3-types = { path = "crates/s3-types", version = "1.0.2" }
|
|
rustfs-s3-ops = { path = "crates/s3-ops", version = "1.0.2" }
|
|
rustfs-s3select-api = { path = "crates/s3select-api", version = "1.0.2" }
|
|
rustfs-s3select-query = { path = "crates/s3select-query", version = "1.0.2" }
|
|
rustfs-scanner = { path = "crates/scanner", version = "1.0.2" }
|
|
rustfs-security-governance = { path = "crates/security-governance", version = "1.0.2" }
|
|
rustfs-extension-schema = { path = "crates/extension-schema", version = "1.0.2" }
|
|
rustfs-signer = { path = "crates/signer", version = "1.0.2" }
|
|
rustfs-storage-api = { path = "crates/storage-api", version = "1.0.2" }
|
|
rustfs-trusted-proxies = { path = "crates/trusted-proxies", version = "1.0.2" }
|
|
rustfs-targets = { path = "crates/targets", version = "1.0.2" }
|
|
rustfs-test-utils = { path = "crates/test-utils", version = "1.0.2" }
|
|
rustfs-tls-runtime = { path = "crates/tls-runtime", version = "1.0.2" }
|
|
rustfs-utils = { path = "crates/utils", version = "1.0.2" }
|
|
rustfs-zip = { path = "./crates/zip", version = "1.0.2" }
|
|
|
|
# Async Runtime and Networking
|
|
async-channel = "2.5.0"
|
|
async_zip = { default-features = false, version = "0.0.19" }
|
|
mysql_async = { default-features = false, version = "0.37.1" }
|
|
async-compression = { version = "0.4.50" }
|
|
async-trait = "0.1.92"
|
|
async-nats = { version = "0.50.0", default-features = false }
|
|
axum = "0.8.9"
|
|
futures = "0.3.34"
|
|
futures-core = "0.3.34"
|
|
futures-lite = "2.6.1"
|
|
futures-util = "0.3.34"
|
|
pollster = "1.0.1"
|
|
pulsar = { default-features = false, version = "=6.9.0" }
|
|
lapin = { default-features = false, version = "4.12.2" }
|
|
hyper = { version = "1.12.0" }
|
|
h2 = { version = "0.4.20" }
|
|
hyper-rustls = { default-features = false, version = "0.27.10" }
|
|
hyper-util = { version = "0.1.21" }
|
|
http = "1.5.0"
|
|
http-body = "1.1.0"
|
|
http-body-util = "0.1.5"
|
|
memchr = "2.8.3"
|
|
minlz = "1.2.3"
|
|
reqwest = "0.13.5"
|
|
rustfs-kafka-async = { version = "1.4.0" }
|
|
socket2 = { version = "0.6.5" }
|
|
tokio = { version = "1.53.3" }
|
|
tokio-rustls = { default-features = false, version = "0.26.6" }
|
|
tokio-stream = { version = "0.1.19" }
|
|
tokio-test = "0.4.6"
|
|
tokio-util = { version = "0.7.20" }
|
|
tonic = { version = "0.14.6" }
|
|
tonic-prost = { version = "0.14.6" }
|
|
tonic-prost-build = { version = "0.14.6" }
|
|
tower = { version = "0.5.3" }
|
|
tower-http = { version = "0.7.1" }
|
|
h3 = "0.0.8"
|
|
h3-quinn = "0.0.10"
|
|
quinn = { version = "0.11.12", default-features = false, features = [
|
|
"futures-io",
|
|
"runtime-tokio",
|
|
"rustls-aws-lc-rs",
|
|
] }
|
|
|
|
# Serialization and Data Formats
|
|
apache-avro = { version = "0.22.0", features = ["snappy", "zstandard"] }
|
|
bytes = { version = "1.12.1" }
|
|
bytesize = "2.7.0"
|
|
byteorder = "1.5.0"
|
|
flatbuffers = "25.12.19"
|
|
form_urlencoded = "1.2.2"
|
|
prost = "0.14.4"
|
|
quick-xml = "0.42.0"
|
|
rmp = { version = "0.8.15" }
|
|
rmp-serde = { version = "1.3.1" }
|
|
serde = { version = "1.0.229" }
|
|
serde_ignored = { version = "0.1" }
|
|
serde_with = { version = "3", default-features = false, features = ["macros", "std"] }
|
|
serde_json = { version = "1.0.154" }
|
|
serde_urlencoded = "0.7.1"
|
|
|
|
# Cryptography and Security
|
|
# NOTE: These direct cryptography dependencies use RC versions because the
|
|
# matching stable releases are not available yet, while previous stable lines
|
|
# have incompatible APIs. Keep them exact-pinned and monitor upstream for stable
|
|
# releases.
|
|
aes-gcm = { version = "0.11.1" }
|
|
argon2 = { version = "0.6.0" }
|
|
blake2 = "0.11.0"
|
|
chacha20poly1305 = { version = "0.11.0" }
|
|
crc-fast = "1.10.0"
|
|
hmac = { version = "0.13.0" }
|
|
jsonwebtoken = { version = "11.1.0" }
|
|
openidconnect = { default-features = false, version = "4.0" }
|
|
pbkdf2 = "0.13.0"
|
|
p256 = { version = "0.14.0", features = ["ecdsa", "pkcs8"] }
|
|
rsa = { version = "=0.10.0-rc.18" }
|
|
rustls = { default-features = false, version = "0.23.46" }
|
|
rustls-native-certs = "0.8"
|
|
rustls-pki-types = "1.15.1"
|
|
x509-parser = "0.18.1"
|
|
sha1 = "0.11.0"
|
|
sha2 = "0.11.1"
|
|
subtle = "2.6"
|
|
zeroize = { version = "1.9.1" }
|
|
proptest = "1"
|
|
|
|
# Time and Date
|
|
chrono = { version = "0.4.45" }
|
|
humantime = "2.4.0"
|
|
jiff = { version = "0.2.38" }
|
|
time = { version = "0.3.55" }
|
|
|
|
# Database
|
|
deadpool-postgres = { version = "0.14" }
|
|
tokio-postgres = { default-features = false, version = "0.7.18" }
|
|
tokio-postgres-rustls = "0.14.0"
|
|
|
|
# Utilities and Tools
|
|
anyhow = "1.0.104"
|
|
arc-swap = "1.9.2"
|
|
rustfs-tokio-tar = { version = "0.7.1" }
|
|
# Candidate Snowball parser versions exercised by rustfs-zip compatibility fixtures.
|
|
tar-codec = "0.0.15"
|
|
tar-framing = "0.0.15"
|
|
atoi = "3.1.0"
|
|
atomic_enum = "0.3.0"
|
|
aws-config = { version = "1.12.0" }
|
|
aws-credential-types = { version = "1.3.0" }
|
|
aws-sdk-kms = { default-features = false, version = "1.123.0" }
|
|
aws-sdk-s3 = { default-features = false, version = "1.152.0" }
|
|
aws-sdk-sts = { default-features = false, version = "1.119.0" }
|
|
aws-smithy-async = { version = "1.3.0" }
|
|
aws-smithy-http-client = { default-features = false, version = "1.5.0" }
|
|
aws-smithy-runtime-api = { version = "1.19.0" }
|
|
aws-smithy-types = { version = "1.8.1" }
|
|
base64-simd = "0.8.0"
|
|
brotli = "9.0.0"
|
|
clap = { version = "4.6.7" }
|
|
const-str = { version = "1.1.0" }
|
|
convert_case = "0.12.0"
|
|
criterion = { version = "0.8" }
|
|
crossbeam-queue = "0.3.14"
|
|
crossbeam-channel = "0.5.17"
|
|
crossbeam-deque = "0.8.8"
|
|
crossbeam-utils = "0.8.23"
|
|
datafusion = { default-features = false, version = "55.2.0" }
|
|
derive_builder = "0.20.2"
|
|
ed25519-dalek = "3.0.0"
|
|
enumset = "1.1.14"
|
|
faster-hex = "1.0.0"
|
|
flate2 = "1.1.10"
|
|
glob = "0.3.4"
|
|
google-cloud-storage = "1.20.0"
|
|
google-cloud-auth = "1.17.0"
|
|
hashbrown = { version = "0.17.1" }
|
|
# Base32 for RFC 6238 TOTP shared secrets (RFC 4648 unpadded, the alphabet
|
|
# every authenticator app expects). Already in the graph transitively.
|
|
data-encoding = "2.11.1"
|
|
hex-simd = "0.8.0"
|
|
highway = { version = "1.3.0" }
|
|
hostname = "0.4.2"
|
|
ipnetwork = { version = "0.21.1" }
|
|
lazy_static = "1.5.1"
|
|
libc = "0.2.190"
|
|
libsystemd = "0.7.2"
|
|
local-ip-address = "0.6.13"
|
|
log = "0.4"
|
|
memmap2 = "0.9.11"
|
|
lz4 = "1.28.1"
|
|
matchit = "0.9.2"
|
|
md-5 = "0.11.0"
|
|
mime_guess = "2.0.5"
|
|
moka = { version = "0.12.16" }
|
|
netif = "0.1.6"
|
|
num_cpus = { version = "1.17.0" }
|
|
nvml-wrapper = "0.13.0"
|
|
object = { version = "=0.40.0", default-features = false }
|
|
parking_lot = "0.12.5"
|
|
path-absolutize = "4.0.1"
|
|
percent-encoding = "2.3.2"
|
|
# Server-side QR rendering for TOTP enrollment, so neither the console nor the
|
|
# CLI needs its own QR encoder. No default features: the image/render backends
|
|
# pull in an image stack this only needs SVG and text output from.
|
|
qrcode-rs = { version = "2.2.0", default-features = false, features = ["std", "svg"] }
|
|
pin-project-lite = "0.2.17"
|
|
pretty_assertions = "1.4.1"
|
|
rand = { version = "0.10.3" }
|
|
ratelimit = "2.0.0"
|
|
rayon = "1.12.0"
|
|
rustfs-erasure-codec = { version = "9.0.0" }
|
|
reed-solomon-simd = "3.1.0"
|
|
regex = { version = "1.13.1" }
|
|
rumqttc = { package = "rumqttc-next", version = "0.34.0" }
|
|
redis = { version = "1.7.1" }
|
|
rustify = { version = "0.7", default-features = false }
|
|
rustix = { version = "1.1.5" }
|
|
rust-embed = { version = "8.13.0" }
|
|
rustc-hash = { version = "2.1.3" }
|
|
s3s = { git = "https://github.com/s3s-project/s3s", rev = "5761ddfe4c509fcac87e3b99fd5bd9e176b442c0", features = ["minio"] }
|
|
s3s-sigv4 = { git = "https://github.com/s3s-project/s3s", rev = "5761ddfe4c509fcac87e3b99fd5bd9e176b442c0" }
|
|
serial_test = "4.0.1"
|
|
shadow-rs = { default-features = false, version = "2.0.0" }
|
|
siphasher = "1.0.4"
|
|
smallvec = { version = "1.16.3" }
|
|
compact_str = "0.10.0"
|
|
snap = "1.1.2"
|
|
starshard = { version = "2.4.0" }
|
|
strum = { version = "0.28.0" }
|
|
sysinfo = "0.39.6"
|
|
temp-env = "0.3.6"
|
|
tempfile = "3.27.0"
|
|
test-case = "3.4.0"
|
|
thiserror = "2.0.21"
|
|
tracing = { version = "0.1.44" }
|
|
tracing-appender = "0.2.5"
|
|
tracing-core = "0.1.36"
|
|
tracing-error = "0.2.1"
|
|
tracing-opentelemetry = { version = "0.34.0" }
|
|
tracing-subscriber = { version = "0.3.23" }
|
|
transform-stream = "0.3.1"
|
|
url = "2.5.8"
|
|
urlencoding = "2.1.3"
|
|
uuid = { version = "1.28.0" }
|
|
vaultrs = { version = "0.8.0" }
|
|
tar = "0.4.46"
|
|
walkdir = "2.5.0"
|
|
winapi-util = "0.1.11"
|
|
windows = { version = "0.62.2" }
|
|
windows-sys = "0.61.2"
|
|
xxhash-rust = { version = "0.8.19" }
|
|
zip = "9.0.3"
|
|
zstd = "0.14.2"
|
|
|
|
# Observability and Metrics
|
|
metrics = "0.24.6"
|
|
metrics-util = "0.20"
|
|
dial9 = { version = "0.5.4", default-features = false }
|
|
opentelemetry = { version = "0.33.1" }
|
|
opentelemetry-appender-tracing = { version = "0.33.1" }
|
|
opentelemetry-otlp = { version = "0.33.1" }
|
|
opentelemetry-proto = { version = "0.33.1", default-features = false, features = ["metrics", "gen-tonic-messages"] }
|
|
opentelemetry_sdk = { version = "0.33.1" }
|
|
opentelemetry-semantic-conventions = { version = "0.33.1" }
|
|
opentelemetry-stdout = { version = "0.33.1" }
|
|
pyroscope = { version = "2.1.2" }
|
|
|
|
# FTP and SFTP
|
|
libunftp = { version = "0.23.1" }
|
|
unftp-core = "0.1.0"
|
|
suppaftp = { version = "12.2.1" }
|
|
rcgen = { version = "0.14.10", default-features = false, features = ["aws_lc_rs", "crypto", "pem"] }
|
|
russh = { version = "0.64.1" }
|
|
russh-sftp = "3.0.1"
|
|
|
|
# WebDAV
|
|
dav-server = "0.11.0"
|
|
|
|
# Performance Analysis and Memory Profiling
|
|
rustfs-mimalloc = { version = "0.5.6" }
|
|
# Preserve Unicode focus filters until rustfs/backlog#2302 is resolved.
|
|
hotpath = { version = "0.28.6", default-features = false }
|
|
# Snapshot testing for output format regression detection
|
|
insta = { version = "1.49" }
|
|
|
|
[workspace.metadata.cargo-shear]
|
|
ignored = ["hotpath", "rustfs"]
|
|
|
|
[profile.dev]
|
|
# Full debuginfo roughly doubles compile+link time and produces multi-GB
|
|
# target dirs (slow CI cache save/restore, slow artifact upload). Line tables
|
|
# keep meaningful backtraces. For local debugging with full debuginfo, run:
|
|
# CARGO_PROFILE_DEV_DEBUG=full cargo build
|
|
debug = "line-tables-only"
|
|
|
|
# To further speed up the process, completely disable debug information for dependencies.
|
|
[profile.dev.package."*"]
|
|
debug = false
|
|
# When you really need to debug, you can enable full debugging information using the `--profile debugging` option.
|
|
[profile.debugging]
|
|
inherits = "dev"
|
|
debug = true
|
|
|
|
[profile.release]
|
|
opt-level = 3
|
|
lto = "thin"
|
|
codegen-units = 1
|
|
debug = 0
|
|
strip = "symbols"
|
|
split-debuginfo = "off"
|
|
|
|
[profile.production]
|
|
inherits = "release"
|
|
|
|
[profile.profiling]
|
|
inherits = "release"
|
|
debug = true
|
|
strip = "none"
|