[workspace] resolver = "2" # Exclude Tauri app (has different MSRV and dependency requirements) # Also exclude crates with Rust 2024 incompatible dependencies exclude = [ "demos/ui/src-tauri", "crates/meta/rtx", "integration_tests", # Python bindings require different PyO3 version, build with maturin "crates/specialized/rtx-neuro-python", ] members = [ # Meta-crates (user-facing bundles) # "crates/meta/rtx", # Excluded - depends on rtx-distributed (re-enable after testing) "crates/meta/rtx-core", "crates/meta/rtx-training", "crates/meta/rtx-inference-stack", # Core infrastructure (17 crates) "crates/core/rtx-backend", "crates/core/rtx-backend-cuda", "crates/core/rtx-backend-metal", "crates/core/rtx-backend-rocm", "crates/core/rtx-backend-sycl", "crates/core/rtx-backend-cpu", "crates/core/rtx-backend-webgpu", "crates/core/rtx-tensor", "crates/core/rtx-runtime", "crates/core/rtx-autograd", "crates/core/rtx-memory", "crates/core/rtx-kernel", "crates/core/rtx-bindings", "crates/core/rtx-graph", "crates/core/rtx-validation", "crates/core/rtx-losses", "crates/core/rtx-tokenization", "crates/core/rtx-nn", "crates/core/rtx-interpret", "crates/core/rtx-metal", "crates/core/rtx-cubecl", # CubeCL kernel compilation (Rust → GPU) "crates/core/rtx-fusion", # Automatic kernel fusion (stream-based) "crates/core/rtx-lora", # LoRA/QLoRA adapter support "crates/core/rtx-macros", # Derive macros (Module, Config) # Vendor stubs (RNCCL — real impl at github.com/rustyverse/rnccl) "crates/vendor/rnccl/rnccl-core", "crates/vendor/rnccl/rnccl-collectives", "crates/vendor/rnccl/rnccl-transport", "crates/vendor/rnccl/rnccl-bootstrap", # Training & optimization (13 crates + 2 super-crates) "crates/training/rtx-transformers", "crates/training/rtx-distributed", "crates/training/rtx-rl", "crates/training/rtx-compress", "crates/training/rtx-flash-attention", "crates/training/rtx-flash-metal-attention", "crates/training/rtx-preprocessing", "crates/training/rtx-auto", "crates/training/rtx-automeasure", "crates/training/rtx-evolution", "crates/training/rtx-federated", "crates/training/rtx-model-merging", "crates/training/rtx-nas", # Training super-crates (unified APIs) "crates/training/rtx-optim-core", # Compression + Merging unified "crates/training/rtx-search-core", # NAS + Evolution unified # Model architectures (8 crates) "crates/models/rtx-vision", "crates/models/rtx-vision-advanced", "crates/models/rtx-multimodal", "crates/models/rtx-diffuse", "crates/models/rtx-timeseries", "crates/models/rtx-nlg", "crates/models/rtx-llm-tools", "crates/models/rtx-csm", "crates/models/rtx-tts", # Production & deployment (10 crates) "crates/production/rtx-serving-api", "crates/production/rtx-inference", "crates/production/rtx-streaming", "crates/production/rtx-hub", "crates/production/rtx-config", "crates/production/rtx-monitoring", "crates/production/rtx-wasm-inference", "crates/production/rtx-onnx", "crates/production/rtx-onnx-codegen", # Specialized computing (14 crates) "crates/specialized/rtx-synthesis", "crates/specialized/rtx-compiler", "crates/specialized/rtx-geom", "crates/specialized/rtx-polygraph", "crates/specialized/rtx-sklearn-py", "crates/specialized/rtx-ml-classic", "crates/specialized/rtx-platform", "crates/specialized/rtx-science", "crates/specialized/rtx-nmf", "crates/specialized/rtx-fea", "crates/specialized/rtx-cfd", "crates/specialized/rtx-fsi", # Medical imaging crates (MRI2FE parity) "crates/specialized/rtx-medical-core", # Super-crate consolidating medical imaging I/O "crates/specialized/rtx-medical-io", "crates/specialized/rtx-materials", "crates/specialized/rtx-fem-export", "crates/specialized/rtx-mesh-gen", "crates/specialized/rtx-registration", "crates/specialized/rtx-segmentation", "crates/specialized/rtx-mri2fe", # Neuroimaging crates "crates/specialized/rtx-neuro-core", # Super-crate consolidating 16 neuro crates (47K LOC) "crates/specialized/rtx-neuro", "crates/specialized/rtx-neuro-io", "crates/specialized/rtx-neuro-signal", "crates/specialized/rtx-neuro-forward", "crates/specialized/rtx-neuro-inverse", "crates/specialized/rtx-neuro-connectivity", "crates/specialized/rtx-neuro-stats", "crates/specialized/rtx-neuro-anatomy", "crates/specialized/rtx-neuro-db", "crates/specialized/rtx-neuro-lsl", "crates/specialized/rtx-neuro-realtime", "crates/specialized/rtx-neuro-artifacts", "crates/specialized/rtx-neuro-gnn", "crates/specialized/rtx-neuro-pinn", "crates/specialized/rtx-neuro-fem", # "crates/specialized/rtx-neuro-python", # Excluded - build with maturin # Neural operators (FNO, DeepONet) "crates/specialized/rtx-neural-operator", # Physics-Informed Diffusion Models "crates/specialized/rtx-piddm", # Medical Digital Twin "crates/specialized/rtx-digital-twin", # Development & tooling (13 crates) "crates/tooling/rtx-eval", "crates/tooling/rtx-bench", "crates/tooling/rtx-jepa-cli", "crates/tooling/rtx-kernel-bench", # Data management (3 crates) "crates/data/rtx-feature-store", "crates/data/rtx-data-validation", "crates/data/rtx-etl", # Integration tests # "integration_tests", # Excluded from workspace (standalone binary, build separately) # RustyBooks GPU integration "crates/integration/rtx-rustybooks", # ML Framework integrations "crates/integration/rtx-burn", "crates/integration/rtx-candle", # Demos (Virtual Catheter hemodynamics demo) "demos/shared", "demos/rtx-hemodynamics", "demos/server", # Demos (MRE Elastography demo) "demos/mre-shared", "demos/rtx-mre", # Demos (Thermal Ablation Bioheat demo) "demos/bioheat-shared", "demos/rtx-bioheat", # Demos (SlideScope pathology demo) "demos/slidescope-shared", "demos/rtx-slidescope", # Demos (Neural Operator PDE solver demo) "demos/neural-operator-shared", "demos/rtx-neural-operator-demo", # Demos (Physics-Informed Diffusion Model demo) "demos/piddm-shared", "demos/rtx-piddm-demo", # Demos (Medical Digital Twin demo) "demos/digital-twin-shared", "demos/rtx-digital-twin-demo", # Demos (Image Classifier demo) "demos/image-classifier-shared", "demos/rtx-image-classifier-demo", # Demos (Time Series Forecast demo) "demos/timeseries-shared", "demos/rtx-timeseries-demo", # Demos (Portfolio Optimizer demo) "demos/portfolio-shared", "demos/rtx-portfolio-demo", # Demos (Risk Analyzer demo) "demos/risk-analyzer-shared", "demos/rtx-risk-analyzer", # Demos (PINN Benchmark demo) "demos/pinn-benchmark-shared", "demos/rtx-pinn-benchmark", # Demos (Inference Profiler demo) "demos/inference-profiler-shared", "demos/rtx-inference-profiler", # Demos (Object Detector demo) "demos/object-detector-shared", "demos/rtx-object-detector", # Demos (Model Zoo demo) "demos/model-zoo-shared", "demos/rtx-model-zoo", # Demos (Segmentation demo) "demos/segmentation-shared", "demos/rtx-segmentation-demo", # Demos (AlphaFold-Lite - Protein Structure Prediction) "demos/alphafold-shared", "demos/rtx-alphafold-demo", # Demos (CellAtlas - Single-Cell Transcriptomics) "demos/cellatlas-shared", "demos/rtx-cellatlas-demo", # Demos (DrugBinder - Drug-Target Binding Affinity) "demos/drugbinder-shared", "demos/rtx-drugbinder-demo", # Demos (CardioSim - Cardiac Electrophysiology) "demos/cardiosim-shared", "demos/rtx-cardiosim-demo", # Demos (TumorBoard AI - Multi-Modal Medical Imaging) "demos/tumorboard-shared", "demos/rtx-tumorboard-demo", # Demos (QuantumPort - Higher-Order Portfolio Optimization) "demos/quantumport-shared", "demos/rtx-quantumport-demo", # Demos (MarketSim - Financial World Model) "demos/marketsim-shared", "demos/rtx-marketsim-demo", # Demos (RiskFlow - Real-Time Risk Attribution) "demos/riskflow-shared", "demos/rtx-riskflow-demo", # Demos (AlgoArena - Strategy Backtesting Battleground) "demos/algoarena-shared", "demos/rtx-algoarena-demo", # Demos (NeuralOp Studio - Neural Operator Workbench) "demos/neuralop-studio-shared", "demos/rtx-neuralop-studio-demo", # Demos (WorldGen - Video Diffusion World Simulator) "demos/worldgen-shared", "demos/rtx-worldgen-demo", # Demos (EmbodiedSim - Robotics World Model Trainer) "demos/embodied-shared", "demos/rtx-embodied-demo", # Demos (FoundationForge - Model Compression Hub) "demos/forge-shared", "demos/rtx-forge-demo", # Demos (AeroFlow - Aircraft CFD with Neural Operators) "demos/aeroflow-shared", "demos/rtx-aeroflow-demo", # Demos (FederatedMed - Privacy-Preserving Medical AI) "demos/fedmed-shared", "demos/rtx-fedmed-demo", # Demos (WeatherCast - GraphCast-style Weather Prediction) "demos/weathercast-shared", "demos/rtx-weathercast-demo", # Demos (DistributedLLM - Trillion-Parameter Inference) "demos/distllm-shared", "demos/rtx-distllm-demo", # Demos (ClusterViz - Real-Time Cluster Monitor) "demos/clusterviz-shared", "demos/rtx-clusterviz-demo", # Demos (SeismicAI - Earthquake Simulation & Early Warning) "demos/seismic-shared", "demos/rtx-seismic-demo", # Demos (StructuralPINN - Structural Mechanics Solver) "demos/structural-shared", "demos/rtx-structural-demo", ] [workspace.package] version = "1.0.0" edition = "2024" authors = ["RustyTorch Team"] license = "MIT OR Apache-2.0" repository = "https://github.com/rustytorch/rustytorch" # Shared workspace dependencies (unified versions from consolidation) [workspace.dependencies] # RTX internal crates - Core rtx-backend = { path = "crates/core/rtx-backend", version = "1.0.0" } rtx-fusion = { path = "crates/core/rtx-fusion", version = "1.0.0" } rtx-backend-cuda = { path = "crates/core/rtx-backend-cuda", version = "1.0.0" } rtx-backend-metal = { path = "crates/core/rtx-backend-metal", version = "1.0.0" } rtx-backend-rocm = { path = "crates/core/rtx-backend-rocm", version = "1.0.0" } rtx-backend-sycl = { path = "crates/core/rtx-backend-sycl", version = "0.1.0" } rtx-backend-cpu = { path = "crates/core/rtx-backend-cpu", version = "1.0.0" } rtx-backend-webgpu = { path = "crates/core/rtx-backend-webgpu", version = "1.0.0" } rtx-tensor = { path = "crates/core/rtx-tensor", version = "1.0.0", default-features = false } rtx-runtime = { path = "crates/core/rtx-runtime", version = "1.0.0", default-features = false } rtx-autograd = { path = "crates/core/rtx-autograd", version = "1.0.0" } rtx-memory = { path = "crates/core/rtx-memory", version = "1.0.0" } rtx-kernel = { path = "crates/core/rtx-kernel", version = "1.0.0" } rtx-bindings = { path = "crates/core/rtx-bindings", version = "1.0.0" } rtx-graph = { path = "crates/core/rtx-graph", version = "1.0.0" } rtx-validation = { path = "crates/core/rtx-validation", version = "1.0.0" } rtx-losses = { path = "crates/core/rtx-losses", version = "1.0.0" } rtx-tokenization = { path = "crates/core/rtx-tokenization", version = "1.0.0" } rtx-nn = { path = "crates/core/rtx-nn", version = "1.0.0" } rtx-metal = { path = "crates/core/rtx-metal", version = "1.0.0" } rtx-cubecl = { path = "crates/core/rtx-cubecl", version = "1.0.0", default-features = false } rtx-macros = { path = "crates/core/rtx-macros", version = "1.0.0" } # RTX internal crates - Training rtx-transformers = { path = "crates/training/rtx-transformers", version = "1.0.0" } rtx-distributed = { path = "crates/training/rtx-distributed", version = "1.0.0" } rtx-rl = { path = "crates/training/rtx-rl", version = "1.0.0" } rtx-compress = { path = "crates/training/rtx-compress", version = "1.0.0" } rtx-flash-attention = { path = "crates/training/rtx-flash-attention", version = "1.0.0", default-features = false } rtx-flash-metal-attention = { path = "crates/training/rtx-flash-metal-attention", version = "0.1.0" } rtx-preprocessing = { path = "crates/training/rtx-preprocessing", version = "1.0.0" } rtx-auto = { path = "crates/training/rtx-auto", version = "1.0.0" } rtx-automeasure = { path = "crates/training/rtx-automeasure", version = "1.0.0" } rtx-evolution = { path = "crates/training/rtx-evolution", version = "1.0.0" } rtx-federated = { path = "crates/training/rtx-federated", version = "1.0.0" } rtx-model-merging = { path = "crates/training/rtx-model-merging", version = "1.0.0" } rtx-nas = { path = "crates/training/rtx-nas", version = "1.0.0" } # RTX internal crates - Models rtx-vision = { path = "crates/models/rtx-vision", version = "1.0.0" } rtx-vision-advanced = { path = "crates/models/rtx-vision-advanced", version = "1.0.0" } rtx-multimodal = { path = "crates/models/rtx-multimodal", version = "1.0.0" } rtx-diffuse = { path = "crates/models/rtx-diffuse", version = "1.0.0" } rtx-timeseries = { path = "crates/models/rtx-timeseries", version = "1.0.0" } rtx-nlg = { path = "crates/models/rtx-nlg", version = "1.0.0" } rtx-llm-tools = { path = "crates/models/rtx-llm-tools", version = "1.0.0" } rtx-csm = { path = "crates/models/rtx-csm", version = "1.0.0" } # RTX internal crates - Production rtx-serving-api = { path = "crates/production/rtx-serving-api", version = "1.0.0" } rtx-inference = { path = "crates/production/rtx-inference", version = "1.0.0" } rtx-streaming = { path = "crates/production/rtx-streaming", version = "1.0.0" } rtx-hub = { path = "crates/production/rtx-hub", version = "1.0.0" } rtx-config = { path = "crates/production/rtx-config", version = "1.0.0" } rtx-monitoring = { path = "crates/production/rtx-monitoring", version = "1.0.0" } rtx-wasm-inference = { path = "crates/production/rtx-wasm-inference", version = "1.0.0" } rtx-onnx = { path = "crates/production/rtx-onnx", version = "1.0.0" } rtx-onnx-codegen = { path = "crates/production/rtx-onnx-codegen", version = "1.0.0" } # ONNX Runtime (using git main branch for TLS feature support) # The rc.10 release lacks tls-native/tls-rustls features needed for download-binaries # Main branch has the fix: https://github.com/pykeio/ort ort = { git = "https://github.com/pykeio/ort", branch = "main", default-features = false, features = ["std", "ndarray", "download-binaries", "tls-native"] } # RTX internal crates - Specialized rtx-synthesis = { path = "crates/specialized/rtx-synthesis", version = "1.0.0" } rtx-compiler = { path = "crates/specialized/rtx-compiler", version = "1.0.0" } rtx-geom = { path = "crates/specialized/rtx-geom", version = "1.0.0" } rtx-polygraph = { path = "crates/specialized/rtx-polygraph", version = "1.0.0" } rtx-sklearn-py = { path = "crates/specialized/rtx-sklearn-py", version = "1.0.0" } rtx-ml-classic = { path = "crates/specialized/rtx-ml-classic", version = "1.0.0" } rtx-platform = { path = "crates/specialized/rtx-platform", version = "1.0.0" } rtx-science = { path = "crates/specialized/rtx-science", version = "1.0.0" } rtx-nmf = { path = "crates/specialized/rtx-nmf", version = "1.0.0" } rtx-fea = { path = "crates/specialized/rtx-fea", version = "1.0.0" } rtx-cfd = { path = "crates/specialized/rtx-cfd", version = "1.0.0" } rtx-fsi = { path = "crates/specialized/rtx-fsi", version = "1.0.0" } rtx-medical-core = { path = "crates/specialized/rtx-medical-core", version = "1.0.0" } rtx-medical-io = { path = "crates/specialized/rtx-medical-io", version = "1.0.0" } rtx-materials = { path = "crates/specialized/rtx-materials", version = "1.0.0" } rtx-fem-export = { path = "crates/specialized/rtx-fem-export", version = "1.0.0" } rtx-mesh-gen = { path = "crates/specialized/rtx-mesh-gen", version = "1.0.0" } rtx-registration = { path = "crates/specialized/rtx-registration", version = "1.0.0" } rtx-segmentation = { path = "crates/specialized/rtx-segmentation", version = "1.0.0" } rtx-neuro-core = { path = "crates/specialized/rtx-neuro-core", version = "1.0.0" } rtx-neuro = { path = "crates/specialized/rtx-neuro", version = "1.0.0" } rtx-neuro-io = { path = "crates/specialized/rtx-neuro-io", version = "1.0.0" } rtx-neuro-signal = { path = "crates/specialized/rtx-neuro-signal", version = "1.0.0" } rtx-neuro-forward = { path = "crates/specialized/rtx-neuro-forward", version = "1.0.0" } rtx-neuro-inverse = { path = "crates/specialized/rtx-neuro-inverse", version = "1.0.0" } rtx-neuro-anatomy = { path = "crates/specialized/rtx-neuro-anatomy", version = "1.0.0" } rtx-neuro-db = { path = "crates/specialized/rtx-neuro-db", version = "1.0.0" } rtx-neuro-lsl = { path = "crates/specialized/rtx-neuro-lsl", version = "1.0.0" } rtx-neuro-realtime = { path = "crates/specialized/rtx-neuro-realtime", version = "1.0.0" } rtx-neuro-artifacts = { path = "crates/specialized/rtx-neuro-artifacts", version = "1.0.0" } rtx-neuro-gnn = { path = "crates/specialized/rtx-neuro-gnn", version = "0.1.0" } rtx-neuro-pinn = { path = "crates/specialized/rtx-neuro-pinn", version = "0.1.0" } rtx-neuro-fem = { path = "crates/specialized/rtx-neuro-fem", version = "0.1.0" } rtx-neuro-connectivity = { path = "crates/specialized/rtx-neuro-connectivity", version = "1.0.0" } rtx-neuro-stats = { path = "crates/specialized/rtx-neuro-stats", version = "0.1.0" } rtx-neuro-python = { path = "crates/specialized/rtx-neuro-python", version = "1.0.0" } rtx-neural-operator = { path = "crates/specialized/rtx-neural-operator", version = "1.0.0" } rtx-piddm = { path = "crates/specialized/rtx-piddm", version = "1.0.0" } rtx-digital-twin = { path = "crates/specialized/rtx-digital-twin", version = "1.0.0" } # RTX internal crates - Tooling rtx-eval = { path = "crates/tooling/rtx-eval", version = "1.0.0" } rtx-bench = { path = "crates/tooling/rtx-bench", version = "1.0.0" } rtx-kernel-bench = { path = "crates/tooling/rtx-kernel-bench", version = "0.1.0" } # RTX internal crates - Data rtx-feature-store = { path = "crates/data/rtx-feature-store", version = "1.0.0" } rtx-data-validation = { path = "crates/data/rtx-data-validation", version = "1.0.0" } rtx-etl = { path = "crates/data/rtx-etl", version = "1.0.0" } # RTX internal crates - Demos rtx-hemodynamics-shared = { path = "demos/shared", version = "1.0.0" } rtx-hemodynamics = { path = "demos/rtx-hemodynamics", version = "1.0.0" } rtx-hemodynamics-server = { path = "demos/server", version = "1.0.0" } mre-shared = { path = "demos/mre-shared", version = "1.0.0" } rtx-mre = { path = "demos/rtx-mre", version = "1.0.0" } slidescope-shared = { path = "demos/slidescope-shared", version = "0.1.0" } rtx-neural-operator-shared = { path = "demos/neural-operator-shared", version = "1.0.0" } rtx-neural-operator-demo = { path = "demos/rtx-neural-operator-demo", version = "1.0.0" } rtx-slidescope = { path = "demos/rtx-slidescope", version = "0.1.0" } rtx-piddm-shared = { path = "demos/piddm-shared", version = "1.0.0" } rtx-piddm-demo = { path = "demos/rtx-piddm-demo", version = "1.0.0" } rtx-digital-twin-shared = { path = "demos/digital-twin-shared", version = "1.0.0" } rtx-digital-twin-demo = { path = "demos/rtx-digital-twin-demo", version = "1.0.0" } image-classifier-shared = { path = "demos/image-classifier-shared", version = "1.0.0" } rtx-image-classifier-demo = { path = "demos/rtx-image-classifier-demo", version = "1.0.0" } timeseries-shared = { path = "demos/timeseries-shared", version = "1.0.0" } rtx-timeseries-demo = { path = "demos/rtx-timeseries-demo", version = "1.0.0" } portfolio-shared = { path = "demos/portfolio-shared", version = "1.0.0" } rtx-portfolio-demo = { path = "demos/rtx-portfolio-demo", version = "1.0.0" } risk-analyzer-shared = { path = "demos/risk-analyzer-shared", version = "1.0.0" } rtx-risk-analyzer = { path = "demos/rtx-risk-analyzer", version = "1.0.0" } pinn-benchmark-shared = { path = "demos/pinn-benchmark-shared", version = "1.0.0" } rtx-pinn-benchmark = { path = "demos/rtx-pinn-benchmark", version = "1.0.0" } object-detector-shared = { path = "demos/object-detector-shared", version = "1.0.0" } rtx-object-detector = { path = "demos/rtx-object-detector", version = "1.0.0" } model-zoo-shared = { path = "demos/model-zoo-shared", version = "1.0.0" } rtx-model-zoo = { path = "demos/rtx-model-zoo", version = "1.0.0" } segmentation-shared = { path = "demos/segmentation-shared", version = "1.0.0" } rtx-segmentation-demo = { path = "demos/rtx-segmentation-demo", version = "1.0.0" } worldgen-shared = { path = "demos/worldgen-shared", version = "1.0.0" } rtx-worldgen-demo = { path = "demos/rtx-worldgen-demo", version = "1.0.0" } embodied-shared = { path = "demos/embodied-shared", version = "1.0.0" } rtx-embodied-demo = { path = "demos/rtx-embodied-demo", version = "1.0.0" } forge-shared = { path = "demos/forge-shared", version = "1.0.0" } rtx-forge-demo = { path = "demos/rtx-forge-demo", version = "1.0.0" } aeroflow-shared = { path = "demos/aeroflow-shared", version = "1.0.0" } rtx-aeroflow-demo = { path = "demos/rtx-aeroflow-demo", version = "1.0.0" } fedmed-shared = { path = "demos/fedmed-shared", version = "1.0.0" } rtx-fedmed-demo = { path = "demos/rtx-fedmed-demo", version = "1.0.0" } weathercast-shared = { path = "demos/weathercast-shared", version = "1.0.0" } rtx-weathercast-demo = { path = "demos/rtx-weathercast-demo", version = "1.0.0" } distllm-shared = { path = "demos/distllm-shared", version = "1.0.0" } rtx-distllm-demo = { path = "demos/rtx-distllm-demo", version = "1.0.0" } clusterviz-shared = { path = "demos/clusterviz-shared", version = "1.0.0" } rtx-clusterviz-demo = { path = "demos/rtx-clusterviz-demo", version = "1.0.0" } seismic-shared = { path = "demos/seismic-shared", version = "1.0.0" } rtx-seismic-demo = { path = "demos/rtx-seismic-demo", version = "1.0.0" } structural-shared = { path = "demos/structural-shared", version = "1.0.0" } rtx-structural-demo = { path = "demos/rtx-structural-demo", version = "1.0.0" } # Essential dependencies anyhow = "1.0" thiserror = "2" tracing = "0.1" tracing-subscriber = "0.3" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" tokio = { version = "1.43", features = ["full"] } # Math and collections nalgebra = { version = "0.34", features = ["serde-serialize"] } indexmap = { version = "2.0", features = ["serde"] } dashmap = "6.0" rand = "0.8" num-complex = "0.4" half = "2.3" base64 = "0.22" reqwest = { version = "0.12", features = ["json"] } # Async runtime futures = "0.3" async-trait = "0.1" # Time handling chrono = { version = "0.4", features = ["serde"] } # Concurrency parking_lot = "0.12" crossbeam = "0.8" rayon = "1.8" # GPU acceleration (auto-detect CUDA version via nvcc at build time) # f16 feature enables native FP16/BF16 GEMM with Tensor Cores (4-16x faster) cudarc = { version = "0.18.2", features = ["std", "driver", "runtime", "nvrtc", "cublas", "cublaslt", "nccl", "cudnn", "cusparse", "cusolver", "cufile", "curand", "cuda-version-from-build-system", "f16"] } # Dev dependencies tokio-test = "0.4" proptest = "1.4" criterion = { version = "0.5", features = ["html_reports", "csv_output"] } tempfile = "3.0" loom = "0.7" # Benchmarking and analysis dependencies statistical = "1.0" plotters = "0.3" hdrhistogram = "7.5" sysinfo = "0.29" psutil = "3.2" # Additional dependencies uuid = { version = "1.0", features = ["v4", "serde"] } memmap2 = "0.9" rustfft = "6.2" sha2 = "0.10" regex = "1.0" bincode = "1.3" byteorder = "1.5" config = "0.14" clap = { version = "4.5", features = ["derive"] } dialoguer = "0.11" indicatif = "0.17" comfy-table = "7.1" colorful = "0.2" walkdir = "2.5" toml = "0.8" pyo3 = { version = "0.25", features = ["extension-module"] } numpy = "0.25" petgraph = "0.6" # Federated learning specific rand_distr = "0.4" statrs = "0.17" ndarray = "0.15" # ML Framework integrations burn = { version = "0.16", default-features = false, features = ["std"] } burn-tensor = { version = "0.16", default-features = false, features = ["std"] } burn-ndarray = { version = "0.16" } burn-wgpu = { version = "0.16" } candle-core = { version = "0.11", default-features = false } candle-nn = { version = "0.11", default-features = false } candle-transformers = { version = "0.11", default-features = false } safetensors = "0.4" tokenizers = { version = "0.20", default-features = false } bytemuck = "1.14" dirs = "5.0" # CubeCL - Rust GPU kernel compilation (Burn's compute layer) # Enables writing GPU kernels in Rust syntax that compile to CUDA/WebGPU/ROCm/Metal # Updated to 0.9.0-pre.5 for Flash Attention, improved memory management, CUDA 12.8 support # Note: cubecl-linalg replaced by cubecl-matmul and other specialized crates in 0.9.x # All crates pinned to pre.5 for version compatibility # default-features = false to avoid cubecl-cpu which conflicts with zip's lzma # features = ["std"] re-enables stream/async support required by wgpu/cuda backends cubecl = { version = "0.9.0-pre.5", default-features = false, features = ["std"] } cubecl-core = { version = "0.9.0-pre.5", default-features = false, features = ["std"] } cubecl-runtime = { version = "0.9.0-pre.5", default-features = false, features = ["std"] } cubecl-wgpu = { version = "0.9.0-pre.5", default-features = false } cubecl-cuda = { version = "0.9.0-pre.5", default-features = false } cubecl-hip = { version = "0.9.0-pre.5", default-features = false } # ROCm/AMD cubecl-matmul = { version = "0.9.0-pre.5", default-features = false, features = ["std"] } cubecl-reduce = { version = "0.9.0-pre.5", default-features = false, features = ["std"] } cubecl-attention = { version = "0.9.0-pre.5", default-features = false, features = ["std"] } # Database and caching sqlx = { version = "0.8", features = ["runtime-tokio", "tls-rustls", "postgres", "uuid", "chrono", "json"] } redis = { version = "1.0", features = ["tokio-comp", "connection-manager"] } # Tokenization and text processing unicode-segmentation = "1.10" unicode-normalization = "0.1" # Data validation and schema jsonschema = "0.17" # Feature store and vector storage qdrant-client = "1.7" milvus = "0.1" # Audio and image processing for multimodal tokenization image = { version = "0.24", features = ["jpeg", "png", "gif", "webp"] } symphonia = { version = "0.5", features = ["all"] } # HPC-AI integration hpc-channels = { path = "../rustyinfra/network/hpc-channels", features = ["rkyv-codec"] } hpc-parcode = { path = "../parcode" } # RNCCL - Pure Rust collective communications (GPU collectives without NCCL/cudarc dependency) rnccl-core = { path = "../rnccl/rnccl-core" } rnccl-collectives = { path = "../rnccl/rnccl-collectives", default-features = false } rnccl-transport = { path = "../rnccl/rnccl-transport" } rnccl-bootstrap = { path = "../rnccl/rnccl-bootstrap" } # Shared crates (Phase 3 consolidation - deduplication with horizon/stratoswarm) security-common = { path = "../shared/security-common" } observability-common = { path = "../shared/observability-common" } config-common = { path = "../shared/config-common" } error-types = { path = "../shared/error-types" } [workspace.lints.rust] unsafe_code = "allow" # GPU/SIMD/FFI codebase requires unsafe; allow for -D warnings compatibility # Note: missing_docs is enabled per-crate with #![warn(missing_docs)] # We'll enforce documentation in Stage 2 # Allow dead code for API surface that's designed for external use # Many functions/structs are part of the public API but not used internally dead_code = "allow" unused_variables = "allow" # Common in placeholder implementations non_snake_case = "allow" # Mathematical variables often use uppercase (A, B, C, X, Y) unexpected_cfgs = "allow" # Backend-specific cfg values (cuda, metal, rocm) are valid unused_imports = "allow" # Changed to allow for -D warnings compatibility missing_docs = "allow" # Documentation will be enforced in Stage 2 ambiguous_glob_reexports = "allow" # Common pattern in ML libraries for convenience APIs deprecated = "allow" # Internal deprecations during migration to Generic* types unused_assignments = "allow" # Common in iterative algorithms dropping_references = "allow" # drop(&ref) pattern for explicit lock release comments unused_must_use = "allow" # Result<()> from fire-and-forget operations unsafe_op_in_unsafe_fn = "allow" # Rust 2024 requires unsafe{} in unsafe fn; allow for SIMD/GPU code unused_mut = "allow" # Common in macro-generated or conditional-compile code unused_doc_comments = "allow" # Doc comments on non-pub items mismatched_lifetime_syntaxes = "allow" # Named vs elided lifetime style preference unreachable_code = "allow" # Unreachable code in ML fallback paths unreachable_patterns = "allow" # Unreachable patterns in exhaustive matches hidden_glob_reexports = "allow" # Private item shadowing glob reexport async_fn_in_trait = "allow" # async fn in traits, stable since 1.75 non_camel_case_types = "allow" # WASM_SIMD and similar GPU names non_local_definitions = "allow" # impl blocks in macro-generated code are sometimes non-local [workspace.lints.clippy] # Base lint groups with lower priority all = { level = "warn", priority = -1 } pedantic = { level = "warn", priority = -1 } # Allow pedantic lints that are too noisy or stylistic preferences module_name_repetitions = "allow" similar_names = "allow" too_many_lines = "allow" too_many_arguments = "allow" struct_excessive_bools = "allow" struct_field_names = "allow" must_use_candidate = "allow" # Too many false positives missing_errors_doc = "allow" # Will fix in Stage 2 (API docs) missing_panics_doc = "allow" # Will fix in Stage 2 (API docs) doc_markdown = "allow" # Will fix in Stage 2 (API docs) # Allow certain cast warnings that are intentional in ML code cast_possible_truncation = "allow" # Common in indexing ops cast_sign_loss = "allow" # Common in array indexing cast_precision_loss = "allow" # Intentional in f64->f32 conversions cast_lossless = "allow" # Style preference # Allow async/ownership patterns common in ML code unused_async = "allow" # Many async traits require async signature even if not awaiting unused_self = "allow" # Methods often take &self for API consistency return_self_not_must_use = "allow" # Builder pattern returns Self needless_pass_by_value = "allow" # Sometimes clearer API unnecessary_wraps = "allow" # Often for API consistency with fallible versions # Allow style preferences that are context-dependent redundant_closure = "allow" # Sometimes clearer redundant_closure_for_method_calls = "allow" # .map(|x| x.method()) vs .map(Type::method) needless_borrow = "allow" # Style preference needless_borrows_for_generic_args = "allow" # Borrowed slices in generic contexts unreadable_literal = "allow" # ML code often uses specific numeric constants collapsible_if = "allow" # Sometimes more readable when separate match_same_arms = "allow" # Often for documentation/clarity items_after_statements = "allow" # Common pattern in tests blocks_in_conditions = "allow" # Sometimes needed for complex conditions if_not_else = "allow" # Style preference # Allow newer Rust features that aren't stabilized everywhere yet manual_div_ceil = "allow" # div_ceil not stable in all contexts manual_clamp = "allow" # Sometimes explicit is clearer manual_is_multiple_of = "allow" # is_multiple_of not always available # More style/pedantic lints that are context-dependent needless_range_loop = "allow" # Sometimes index access is clearer option_if_let_else = "allow" # Style preference uninlined_format_args = "allow" # Style preference for format strings missing_fields_in_debug = "allow" # Some fields shouldn't be in debug derivable_impls = "allow" # Sometimes explicit is clearer cast_possible_wrap = "allow" # Common in ML indexing ptr_as_ptr = "allow" # FFI code often needs explicit casts cast_ptr_alignment = "allow" # Common in GPU memory operations single_match = "allow" # match vs if-let is style preference format_push_string = "allow" # String formatting style preference no_effect_underscore_binding = "allow" # Common for explicit drops many_single_char_names = "allow" # Common in mathematical code (x, y, z, i, j, k) if_same_then_else = "allow" # Sometimes intentional for clarity single_char_pattern = "allow" # Style preference for string operations used_underscore_binding = "allow" # Sometimes variables are prefixed for documentation implicit_hasher = "allow" # HashMap parameter generalization is overkill manual_memcpy = "allow" # Sometimes explicit loops are clearer case_sensitive_file_extension_comparisons = "allow" # False positives on non-file paths wildcard_imports = "allow" # Common for prelude-style imports float_cmp = "allow" # ML code often compares floats directly doc_overindented_list_items = "allow" # Doc formatting preference nonminimal_bool = "allow" # Sometimes explicit booleans are clearer trivially_copy_pass_by_ref = "allow" # &bool, &u8 can be fine for API consistency match_wildcard_for_single_variants = "allow" # Future-proofing with _ is intentional doc_link_with_quotes = "allow" # Doc formatting style missing_safety_doc = "allow" # Will be addressed in Stage 2 (safety audit) should_implement_trait = "allow" # Sometimes custom impls are intentional let_and_return = "allow" # Sometimes intermediate binding is clearer map_clone = "allow" # Sometimes clearer than using reference type_complexity = "allow" # Complex types are common in ML code format_in_format_args = "allow" # Sometimes clearer to build string first option_option = "allow" # Sometimes needed for APIs ref_option = "allow" # &Option is fine in many contexts assigning_clones = "allow" # clone_into suggestion isn't always clearer iter_without_into_iter = "allow" # iter() without IntoIterator is fine for custom types vec_init_then_push = "allow" # Sometimes clearer than with_capacity chain manual_let_else = "allow" # if-let vs let-else is style preference while_let_loop = "allow" # loop + match vs while-let is style preference if_then_some_else_none = "allow" # Explicit if is sometimes clearer collapsible_else_if = "allow" # Sometimes separate else-if is clearer large_enum_variant = "allow" # ML types often have large variants clone_on_copy = "allow" # Sometimes explicit clone is clearer useless_conversion = "allow" # .into() on same type can be clearer for consistency redundant_else = "allow" # Sometimes else block aids readability default_trait_access = "allow" # Default::default() vs Type::default() is preference manual_range_contains = "allow" # Sometimes explicit comparison is clearer inconsistent_digit_grouping = "allow" # Numeric constant formatting preference iter_cloned_collect = "allow" # Sometimes clearer than .copied() # Additional lints for ML codebase patterns undocumented_unsafe_blocks = "allow" # SAFETY comments will be added in Stage 2 await_holding_lock = "allow" # Common in streaming/inference code map_unwrap_or = "allow" # map().unwrap_or() is readable needless_continue = "allow" # Sometimes explicit continue aids readability excessive_precision = "allow" # ML constants often have specific precision empty_line_after_doc_comments = "allow" # Doc formatting preference cloned_instead_of_copied = "allow" # .cloned() is more general manual_midpoint = "allow" # Manual implementation may be intentional for precision # hidden_glob_reexports is a rustc lint (in [workspace.lints.rust] above), not clippy only_used_in_recursion = "allow" # Recursive algorithms are common field_reassign_with_default = "allow" # Builder pattern style str_to_string = "allow" # String conversion style preference needless_return = "allow" # Sometimes explicit return is clearer borrow_as_ptr = "allow" # FFI code needs explicit conversions redundant_field_names = "allow" # Sometimes explicit is clearer redundant_pattern_matching = "allow" # is_some() vs matches! preference # More pedantic lints that are too strict for ML codebase new_without_default = "allow" # Not all constructors should impl Default self_only_used_in_recursion = "allow" # Recursive algorithms are common match_like_matches_macro = "allow" # Sometimes match is clearer than matches! same_item_push = "allow" # Performance in loop push is often fine comparison_chain = "allow" # Explicit comparisons can be clearer unsafe_derive_deserialize = "allow" # Common in FFI/GPU types with both unnecessary_literal_bound = "allow" # Sometimes explicit bounds are clearer unnecessary_debug_formatting = "allow" # Debug formatting in debug builds is fine single_match_else = "allow" # Sometimes match is clearer than if-let inherent_to_string = "allow" # Sometimes to_string is more descriptive unnecessary_cast = "allow" # Sometimes explicit casts aid clarity unchecked_time_subtraction = "allow" # Time duration math is safe in context ptr_arg = "allow" # &Vec is fine for APIs accepting slices op_ref = "allow" # Operations on references can be clearer unnecessary_unwrap = "allow" # Sometimes explicit unwrap after check is clearer unwrap_or_default = "allow" # .unwrap_or(Type::default()) can be clearer significant_drop_tightening = "allow" # Manual drop scope control is intentional unnecessary_mut_passed = "allow" # API compatibility with mutable patterns iter_on_empty_collections = "allow" # Defensive coding pattern iter_nth_zero = "allow" # .iter().nth(0) can be clearer than .first() # Additional allows for -D warnings compatibility (added by rust-scan 2026-04-25) duplicated_attributes = "allow" # Proc-macro and cfg-specific attribute patterns len_without_is_empty = "allow" # ML types with len() don't always need is_empty() to_string_trait_impl = "allow" # impl ToString directly is fine in some cases suspicious_open_options = "allow" # File creation patterns without truncate flag non_std_lazy_statics = "allow" # lazy_static! still used in many crates mixed_attributes_style = "allow" # Mix of inner/outer attr styles is acceptable manual_slice_fill = "allow" # Explicit loops can be clearer for GPU slices wildcard_in_or_patterns = "allow" # _ | pattern can be clearer zero_repeat_side_effects = "allow" # Intentional in some init patterns bool_to_int_with_if = "allow" # if cond { 1 } else { 0 } is often clearer elidable_lifetime_names = "allow" # Named lifetimes can improve readability explicit_iter_loop = "allow" # for x in v.iter() vs for x in &v is preference format_collect = "allow" # format! in collect() is sometimes clearer iter_filter_is_ok = "allow" # filter(|r| r.is_ok()) is readable manual_string_new = "allow" # String::new() vs "".to_string() preference needless_for_each = "allow" # .for_each() vs for loop is preference ptr_cast_constness = "allow" # *const/*mut casts are intentional semicolon_if_nothing_returned = "allow" # Missing ; after last expr is style unnecessary_box_returns = "allow" # Box returns can be intentional for erasure bind_instead_of_map = "allow" # and_then vs map preference cloned_ref_to_slice_refs = "allow" # .cloned() on ref slices is fine unnecessary_sort_by = "allow" # sort_by vs sort_by_key preference manual_is_finite = "allow" # Finite float checks can be explicit (was manual_is_ascii, renamed in clippy) explicit_counter_loop = "allow" # enumerate() vs counter is preference extra_unused_type_parameters = "allow" # Generic params for API consistency range_plus_one = "allow" # x..=y vs x..y+1 preference pub_underscore_fields = "allow" # _field in pub structs for partial visibility wrong_self_convention = "allow" # is_*/as_*/to_* naming is context-dependent assign_op_pattern = "allow" # a = a + b vs a += b is style preference in math code borrowed_box = "allow" # &Box sometimes needed for API compatibility doc_lazy_continuation = "allow" # Doc list indentation is style preference erasing_op = "allow" # x * 0 can be intentional in matrix init code identity_op = "allow" # x + 0 can be intentional for clarity ignored_unit_patterns = "allow" # let _ = match... patterns are fine legacy_numeric_constants = "allow" # std::f64::MAX vs f64::MAX compatibility needless_late_init = "allow" # late init can be clearer with complex conditions unnecessary_get_then_check = "allow" # contains() vs get().is_some() preference useless_vec = "allow" # vec![x] is sometimes clearer than slice manual_inspect = "allow" # map with passthrough can be clearer than inspect to_string_in_format_args = "allow" # format!("{}", x.to_string()) is sometimes intentional enum_variant_names = "allow" # ParallelType::DataParallel postfix repetition is fine unnecessary_join = "allow" # collect + join is sometimes clearer than collect directly needless_raw_string_hashes = "allow" # r#"..."# with extra hashes is intentional naive_bytecount = "allow" # byte counting in ML data processing # Optimized profiles for workspace [profile.release] lto = "thin" codegen-units = 1 panic = "abort" strip = true [profile.dev] debug = true opt-level = 1 # Faster debug builds incremental = true # Fast compilation profile for development [profile.dev-fast] inherits = "dev" opt-level = 0 debug = false incremental = true [patch.crates-io] pathfinder_simd = { path = "third_party/pathfinder_simd" }