CI / Build CPU-Only (Explicit) (push) Canceled after 0s
CI / Python Bindings (maturin) (macos-latest) (push) Canceled after 0s
CI / Python Bindings (maturin) (ubuntu-latest) (push) Canceled after 0s
CI / WASM Build + Size Check (push) Canceled after 0s
CI / Distributed Training Tests (push) Canceled after 0s
CI / CI Success (push) Canceled after 0s
Documentation / Build API Documentation (push) Canceled after 0s
Documentation / Build User Guide (push) Canceled after 0s
CI / Format Check (push) Canceled after 0s
CI / Clippy Check (push) Canceled after 0s
CI / Build (macos-latest) (push) Canceled after 0s
CI / Build (ubuntu-latest) (push) Canceled after 0s
CI / Test (macos-latest) (push) Canceled after 0s
CI / Test (ubuntu-latest) (push) Canceled after 0s
Performance Benchmarks / Run Benchmarks (push) Canceled after 0s
rtx-cfd (18,715 lines) and rtx-fea (36,576 lines) both exist and nothing connects them -- rtx-fea is commented out of rtx-cfd's dependencies. This is the coupling layer, and it is the piece Prof. Charbel Farhat's 2026 Guggenheim Medal citation is actually about. It depends on NEITHER solver. The properties that make a partitioned coupling correct -- conservation of force, moment and interface work -- are statements about the transfer operators alone, so they can be validated now, on solvers whose canonical-benchmark validation is still outstanding. Adapters to the concrete solvers belong above this. TRANSFER (transfer.rs). Weights satisfy two constraints: sum(w_i) = 1 partition of unity -> force conserved sum(w_i x_i) = x_face linear reproduction -> MOMENT conserved The second is the one that gets skipped. Inverse-distance weighting satisfies the first and generally violates the second, conserving force while corrupting moment -- which shows up as slow spurious rotation rather than as an obvious error. Underdetermined for >4 nodes, so it takes the minimum-norm solution w = A^T (A A^T)^+ b. That is a PSEUDO-inverse, and not for defensiveness. A wetted surface is a surface, so its nodes are usually planar, and for a planar patch the z constraint row is an affine multiple of the ones row -- A A^T is genuinely rank-deficient. The constraint is redundant there, not unsatisfiable. An ordinary inverse rejects the most ordinary interface there is; I found this because my first test fixture was collinear and the code correctly refused it. Constraints are then verified against the weights actually obtained, since a pseudo-inverse returns a least-squares answer whether or not the system was consistent. Motion transfer uses the TRANSPOSE of the load operator, which makes interface work conserved identically: (Hf).v = f.(H^T v). Any other pairing leaks energy every step, and the leak looks like physics until it destabilises. COUPLING (coupling.rs). Staggered and Aitken-relaxed subiteration. The decisive tests reproduce the added-mass effect: at a gain of 2.5 the fixed-relaxation scheme DIVERGES and is reported as CouplingDiverged rather than as an exhausted budget, and Aitken recovers the same case. A partitioned coupling that cannot reproduce its own classic failure mode is not being tested hard enough. Aitken is exact for a linear fixed point, so convergence is asserted at <=4 iterations -- pinning that this is the real delta-squared formula and not an under-relaxation that happens to work. SCOPE, stated up front in the crate docs: small-displacement transpiration coupling on a fixed mesh. Deliberately not ALE and not embedded-boundary, so the Discrete Geometric Conservation Law does not yet apply -- the mesh does not move. Large motion needs an embedded boundary treatment; that is the next phase, not an oversight. External comparator named at entry: Turek-Hron FSI2/FSI3, not yet reached. 26 tests written red-first; cargo test/fmt/clippy -D warnings clean. Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
858 lines
41 KiB
TOML
858 lines
41 KiB
TOML
[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<T> 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<T> 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<T> 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<T> 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" }
|