# 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 "cli/rustfs-gui", # Graphical user interface client "crates/appauth", # Application authentication and authorization "crates/common", # Shared utilities and data structures "crates/config", # Configuration management "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/iam", # Identity and Access Management "crates/lock", # Distributed locking implementation "crates/madmin", # Management dashboard and admin API interface "crates/notify", # Notification system for events "crates/obs", # Observability utilities "crates/protos", # Protocol buffer definitions "crates/rio", # Rust I/O utilities and abstractions "crates/s3select-api", # S3 Select API interface "crates/s3select-query", # S3 Select query engine "crates/signer", # client signer "crates/utils", # Utility functions and helpers "crates/workers", # Worker thread pools and task scheduling "crates/zip", # ZIP file handling and compression "crates/ahm", ] resolver = "2" [workspace.package] edition = "2024" license = "Apache-2.0" repository = "https://github.com/rustfs/rustfs" rust-version = "1.85" version = "0.0.5" 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"] [workspace.lints.rust] unsafe_code = "deny" [workspace.lints.clippy] all = "warn" [patch.crates-io] rustfs-utils = { path = "crates/utils" } rustfs-filemeta = { path = "crates/filemeta" } rustfs-rio = { path = "crates/rio" } [workspace.dependencies] rustfs-ahm = { path = "crates/ahm", version = "0.0.5" } rustfs-s3select-api = { path = "crates/s3select-api", version = "0.0.5" } rustfs-appauth = { path = "crates/appauth", version = "0.0.5" } rustfs-common = { path = "crates/common", version = "0.0.5" } rustfs-crypto = { path = "crates/crypto", version = "0.0.5" } rustfs-ecstore = { path = "crates/ecstore", version = "0.0.5" } rustfs-iam = { path = "crates/iam", version = "0.0.5" } rustfs-lock = { path = "crates/lock", version = "0.0.5" } rustfs-madmin = { path = "crates/madmin", version = "0.0.5" } rustfs-policy = { path = "crates/policy", version = "0.0.5" } rustfs-protos = { path = "crates/protos", version = "0.0.5" } rustfs-s3select-query = { path = "crates/s3select-query", version = "0.0.5" } rustfs = { path = "./rustfs", version = "0.0.5" } rustfs-zip = { path = "./crates/zip", version = "0.0.5" } rustfs-config = { path = "./crates/config", version = "0.0.5" } rustfs-obs = { path = "crates/obs", version = "0.0.5" } rustfs-notify = { path = "crates/notify", version = "0.0.5" } rustfs-utils = { path = "crates/utils", version = "0.0.5" } rustfs-rio = { path = "crates/rio", version = "0.0.5" } rustfs-filemeta = { path = "crates/filemeta", version = "0.0.5" } rustfs-signer = { path = "crates/signer", version = "0.0.5" } rustfs-workers = { path = "crates/workers", version = "0.0.5" } aes-gcm = { version = "0.10.3", features = ["std"] } arc-swap = "1.7.1" argon2 = { version = "0.5.3", features = ["std"] } atoi = "2.0.0" async-channel = "2.5.0" async-recursion = "1.1.1" async-trait = "0.1.88" async-compression = { version = "0.4.0" } atomic_enum = "0.3.0" aws-sdk-s3 = "1.96.0" axum = "0.8.4" axum-extra = "0.10.1" axum-server = { version = "0.7.2", features = ["tls-rustls"] } base64-simd = "0.8.0" base64 = "0.22.1" brotli = "8.0.1" bytes = { version = "1.10.1", features = ["serde"] } bytesize = "2.0.1" byteorder = "1.5.0" cfg-if = "1.0.1" chacha20poly1305 = { version = "0.10.1" } chrono = { version = "0.4.41", features = ["serde"] } clap = { version = "4.5.41", features = ["derive", "env"] } const-str = { version = "0.6.3", features = ["std", "proc"] } crc32fast = "1.5.0" criterion = { version = "0.5", features = ["html_reports"] } dashmap = "6.1.0" datafusion = "46.0.1" derive_builder = "0.20.2" dioxus = { version = "0.6.3", features = ["router"] } dirs = "6.0.0" enumset = "1.1.7" flatbuffers = "25.2.10" flate2 = "1.1.2" flexi_logger = { version = "0.31.2", features = ["trc", "dont_minimize_extra_stacks"] } form_urlencoded = "1.2.1" futures = "0.3.31" futures-core = "0.3.31" futures-util = "0.3.31" glob = "0.3.2" hex = "0.4.3" hex-simd = "0.8.0" highway = { version = "1.3.0" } hmac = "0.12.1" hyper = "1.6.0" hyper-util = { version = "0.1.15", features = [ "tokio", "server-auto", "server-graceful", ] } hyper-rustls = "0.27.7" http = "1.3.1" http-body = "1.0.1" humantime = "2.2.0" ipnetwork = { version = "0.21.1", features = ["serde"] } jsonwebtoken = "9.3.1" keyring = { version = "3.6.2", features = [ "apple-native", "windows-native", "sync-secret-service", ] } lazy_static = "1.5.0" libsystemd = { version = "0.7.2" } local-ip-address = "0.6.5" lz4 = "1.28.1" matchit = "0.8.4" md-5 = "0.10.6" mime_guess = "2.0.5" netif = "0.1.6" nix = { version = "0.30.1", features = ["fs"] } nu-ansi-term = "0.50.1" num_cpus = { version = "1.17.0" } nvml-wrapper = "0.11.0" object_store = "0.11.2" once_cell = "1.21.3" opentelemetry = { version = "0.30.0" } opentelemetry-appender-tracing = { version = "0.30.1", features = [ "experimental_use_tracing_span_context", "experimental_metadata_attributes", "spec_unstable_logs_enabled" ] } opentelemetry_sdk = { version = "0.30.0" } opentelemetry-stdout = { version = "0.30.0" } opentelemetry-otlp = { version = "0.30.0", default-features = false, features = [ "grpc-tonic", "gzip-tonic", "trace", "metrics", "logs", "internal-logs" ] } opentelemetry-semantic-conventions = { version = "0.30.0", features = [ "semconv_experimental", ] } parking_lot = "0.12.4" path-absolutize = "3.1.1" path-clean = "1.0.1" blake3 = { version = "1.8.2" } pbkdf2 = "0.12.2" percent-encoding = "2.3.1" pin-project-lite = "0.2.16" prost = "0.13.5" quick-xml = "0.38.0" rand = "0.9.1" rdkafka = { version = "0.38.0", features = ["tokio"] } reed-solomon-simd = { version = "3.0.1" } regex = { version = "1.11.1" } reqwest = { version = "0.12.22", default-features = false, features = [ "rustls-tls", "charset", "http2", "system-proxy", "stream", "json", "blocking", ] } rfd = { version = "0.15.4", default-features = false, features = [ "xdg-portal", "tokio", ] } rmp = "0.8.14" rmp-serde = "1.3.0" rsa = "0.9.8" rumqttc = { version = "0.24" } rust-embed = { version = "8.7.2" } rust-i18n = { version = "3.1.5" } rustfs-rsc = "2025.506.1" rustls = { version = "0.23.29" } rustls-pki-types = "1.12.0" rustls-pemfile = "2.2.0" s3s = { version = "0.12.0-minio-preview.2" } shadow-rs = { version = "1.2.0", default-features = false } serde = { version = "1.0.219", features = ["derive"] } serde_json = { version = "1.0.140", features = ["raw_value"] } serde-xml-rs = "0.8.1" serde_urlencoded = "0.7.1" sha1 = "0.10.6" sha2 = "0.10.9" siphasher = "1.0.1" smallvec = { version = "1.15.1", features = ["serde"] } snafu = "0.8.6" snap = "1.1.1" socket2 = "0.6.0" strum = { version = "0.27.1", features = ["derive"] } sysinfo = "0.36.0" sysctl = "0.6.0" tempfile = "3.20.0" temp-env = "0.3.6" test-case = "3.3.1" thiserror = "2.0.12" time = { version = "0.3.41", features = [ "std", "parsing", "formatting", "macros", "serde", ] } tokio = { version = "1.46.1", features = ["fs", "rt-multi-thread"] } tokio-rustls = { version = "0.26.2", default-features = false } tokio-stream = { version = "0.1.17" } tokio-tar = "0.3.1" tokio-test = "0.4.4" tokio-util = { version = "0.7.15", features = ["io", "compat"] } tonic = { version = "0.13.1", features = ["gzip"] } tonic-build = { version = "0.13.1" } tower = { version = "0.5.2", features = ["timeout"] } tower-http = { version = "0.6.6", features = ["cors"] } tracing = "0.1.41" tracing-core = "0.1.34" tracing-error = "0.2.1" tracing-subscriber = { version = "0.3.19", features = ["env-filter", "time"] } tracing-appender = "0.2.3" tracing-opentelemetry = "0.31.0" transform-stream = "0.3.1" url = "2.5.4" urlencoding = "2.1.3" uuid = { version = "1.17.0", features = [ "v4", "fast-rng", "macro-diagnostics", ] } wildmatch = { version = "2.4.0", features = ["serde"] } winapi = { version = "0.3.9" } xxhash-rust = { version = "0.8.15", features = ["xxh64", "xxh3"] } zip = "2.4.2" zstd = "0.13.3" anyhow = "1.0.98" [profile.wasm-dev] inherits = "dev" opt-level = 1 [profile.server-dev] inherits = "dev" [profile.android-dev] inherits = "dev" [profile.release] opt-level = 3 [profile.production] inherits = "release" lto = "fat" codegen-units = 1 [profile.profiling] inherits = "release" debug = true