scirs2_core/
lib.rs

1#![recursion_limit = "512"]
2// TODO: Address deprecated code usage and remove this allow
3#![allow(deprecated)]
4// TODO: Remove dead code or justify why it's kept
5#![allow(dead_code)]
6
7//! # ``SciRS2`` Core (Beta 1)
8//!
9//! Core utilities and common functionality for the ``SciRS2`` library.
10//!
11//! This crate provides shared utilities, error types, and common traits
12//! used across the ``SciRS2`` ecosystem of crates.
13//!
14//! ## Beta 1 Features
15//!
16//! - **Stable APIs**: Core functionality with API stability guarantees for production use
17//! - **Advanced Error Diagnostics**: ML-inspired error pattern recognition and domain-specific recovery strategies
18//! - **Performance Optimizations**: Enhanced SIMD operations, adaptive chunking, and intelligent load balancing
19//! - **GPU Acceleration**: CUDA, Metal MPS, and other backend support for accelerated computing
20//! - **Memory Management**: Efficient memory-mapped arrays and adaptive chunking for large datasets
21//!
22//! ## Overview
23//!
24//! * Common error types and traits
25//! * High-performance numerical operations
26//!   * SIMD-accelerated computations
27//!   * Parallel processing for multi-core systems
28//!   * Memory-efficient algorithms
29//!   * GPU acceleration abstractions
30//! * Caching and memoization for optimized performance
31//! * Type definitions and conversions
32//! * Physical and mathematical constants
33//! * Configuration system
34//! * Input/output utilities
35//! * Validation utilities
36//! * Numeric traits and conversions
37//! * Memory management utilities
38//! * Logging and diagnostics
39//! * Profiling tools
40//! * Random number generation
41//!
42//! ## Performance Optimizations
43//!
44//! The library provides several performance optimization features:
45//!
46//! * **SIMD Operations**: Uses CPU vector instructions for faster array operations
47//! * **Parallel Processing**: Leverages multi-core systems for improved performance
48//! * **GPU Acceleration**: Provides abstractions for GPU computation (CUDA, WebGPU, Metal)
49//! * **Memory-Efficient Algorithms**: Optimizes memory usage for large-scale computations
50//! * **Caching and Memoization**: Avoids redundant computations
51//! * **Profiling and Instrumentation**: Identifies performance bottlenecks
52//! * **Memory Management**: Efficient memory utilization and pooling
53//!
54//! ## Additional Utilities
55//!
56//! * **Logging**: Structured logging for scientific applications
57//! * **Random Number Generation**: Consistent interface for random sampling
58//! * **Type Conversions**: Safe numeric and complex number conversions
59//!
60//! ## Feature Flags
61//!
62//! These features can be controlled via feature flags:
63//!
64//! * `simd`: Enable SIMD acceleration
65//! * `parallel`: Enable parallel processing
66//! * `cache`: Enable caching and memoization functionality
67//! * `validation`: Enable validation utilities
68//! * `logging`: Enable structured logging and diagnostics
69//! * `gpu`: Enable GPU acceleration abstractions
70//! * `memory_management`: Enable advanced memory management
71//! * `memory_efficient`: Enable memory-efficient array operations and views
72//! * `array`: Enable scientific array types (``MaskedArray``, ``RecordArray``)
73//! * `profiling`: Enable performance profiling tools
74//! * `random`: Enable random number generation utilities
75//! * `types`: Enable type conversion utilities
76//! * `linalg`: Enable linear algebra with BLAS/LAPACK bindings
77//! * `cloud`: Enable cloud storage integration (S3, GCS, Azure)
78//! * `jit`: Enable just-in-time compilation with LLVM
79//! * `ml_pipeline`: Enable ML pipeline integration and real-time processing
80//! * `all`: Enable all features except backend-specific ones
81
82// Re-export modules
83pub mod api_freeze;
84pub mod apiversioning;
85#[cfg(feature = "array")]
86pub mod array;
87pub mod array_protocol;
88#[cfg(feature = "types")]
89pub mod batch_conversions;
90#[cfg(feature = "cache")]
91pub mod cache;
92#[cfg(feature = "cloud")]
93pub mod cloud;
94pub mod config;
95pub mod constants;
96pub mod distributed;
97pub mod ecosystem;
98pub mod error;
99#[cfg(feature = "gpu")]
100pub mod gpu;
101#[cfg(feature = "gpu")]
102pub mod gpu_registry;
103pub mod io;
104#[cfg(feature = "jit")]
105pub mod jit;
106#[cfg(feature = "logging")]
107pub mod logging;
108#[cfg(feature = "memory_management")]
109pub mod memory;
110#[cfg(feature = "memory_efficient")]
111pub mod memory_efficient;
112pub mod metrics;
113#[cfg(feature = "ml_pipeline")]
114pub mod ml_pipeline;
115pub mod ndarray_ext;
116pub mod numeric;
117#[cfg(feature = "parallel")]
118pub mod parallel;
119#[cfg(feature = "parallel")]
120pub mod parallel_ops;
121pub mod performance;
122pub mod performance_optimization;
123#[cfg(feature = "profiling")]
124pub mod profiling;
125#[cfg(feature = "random")]
126pub mod random;
127pub mod resource;
128#[cfg(feature = "simd")]
129pub mod simd;
130pub mod simd_ops;
131#[cfg(feature = "testing")]
132pub mod testing;
133// Universal Functions (ufuncs) module
134pub mod error_templates;
135pub mod safe_ops;
136#[cfg(feature = "types")]
137pub mod types;
138#[cfg(feature = "ufuncs")]
139pub mod ufuncs;
140pub mod units;
141pub mod utils;
142pub mod validation;
143
144// Production-level features for enterprise deployments
145pub mod observability;
146pub mod stability;
147pub mod versioning;
148
149// Advanced optimization and AI features
150pub mod neural_architecture_search;
151pub mod quantum_optimization;
152
153// Advanced Mode Ecosystem Integration
154pub mod advanced_ecosystem_integration;
155
156// Advanced JIT Compilation Framework
157pub mod advanced_jit_compilation;
158
159// Advanced Distributed Computing Framework
160pub mod advanced_distributed_computing;
161
162// Advanced Cloud Storage Framework
163// pub mod distributed_storage; // Module not implemented yet
164
165// Advanced Tensor Cores and Automatic Kernel Tuning Framework
166pub mod advanced_tensor_cores;
167
168// Tensor cores optimization modules
169#[cfg(feature = "gpu")]
170pub mod tensor_cores;
171
172// Benchmarking module
173#[cfg(feature = "benchmarking")]
174pub mod benchmarking;
175
176// Re-exports
177#[cfg(feature = "cache")]
178pub use crate::cache::*;
179#[cfg(feature = "cloud")]
180pub use crate::cloud::{
181    CloudConfig, CloudCredentials, CloudError, CloudObjectMetadata, CloudProvider,
182    CloudStorageClient, EncryptionConfig, EncryptionMethod, HttpMethod, ListResult,
183    TransferOptions,
184};
185pub use crate::config::production as config_production;
186pub use crate::config::{
187    get_config, get_config_value, set_config_value, set_global_config, Config, ConfigValue,
188};
189pub use crate::constants::{math, physical, prefixes};
190pub use crate::error::*;
191#[cfg(feature = "gpu")]
192pub use crate::gpu::*;
193pub use crate::io::*;
194#[cfg(feature = "jit")]
195pub use crate::jit::DataType as JitDataType;
196#[cfg(feature = "jit")]
197pub use crate::jit::{
198    CompiledKernel, ExecutionProfile, JitBackend, JitCompiler, JitConfig, JitError, KernelLanguage,
199    KernelSource, OptimizationLevel, TargetArchitecture,
200};
201#[cfg(feature = "logging")]
202pub use crate::logging::*;
203#[cfg(feature = "memory_management")]
204pub use crate::memory::{
205    format_memory_report, generate_memory_report, global_buffer_pool, track_allocation,
206    track_deallocation, track_resize, BufferPool, ChunkProcessor, ChunkProcessor2D,
207    GlobalBufferPool, ZeroCopyView,
208};
209
210#[cfg(feature = "leak_detection")]
211pub use crate::memory::{
212    LeakCheckGuard, LeakDetectionConfig, LeakDetector, LeakReport, LeakType, MemoryCheckpoint,
213    MemoryLeak, ProfilerTool,
214};
215
216#[cfg(feature = "memory_efficient")]
217pub use crate::memory_efficient::{
218    chunk_wise_binary_op, chunk_wise_op, chunk_wise_reduce, create_disk_array, create_mmap,
219    create_temp_mmap, diagonal_view, evaluate, load_chunks, open_mmap, register_fusion,
220    transpose_view, view_as, view_mut_as, AccessMode, AdaptiveChunking, AdaptiveChunkingBuilder,
221    AdaptiveChunkingParams, AdaptiveChunkingResult, ArithmeticOps, ArrayView, BroadcastOps,
222    ChunkIter, ChunkedArray, ChunkingStrategy, DiskBackedArray, FusedOp, LazyArray, LazyOp,
223    LazyOpKind, MemoryMappedArray, MemoryMappedChunkIter, MemoryMappedChunks, MemoryMappedSlice,
224    MemoryMappedSlicing, OpFusion, OutOfCoreArray, ViewMut, ZeroCopyOps,
225};
226
227// Compression-related types are only available with the memory_compression feature
228#[cfg(feature = "memory_compression")]
229pub use crate::memory_efficient::{
230    CompressedMemMapBuilder, CompressedMemMappedArray, CompressionAlgorithm,
231};
232
233// Re-export the parallel memory-mapped array capabilities
234#[cfg(all(feature = "memory_efficient", feature = "parallel"))]
235pub use crate::memory_efficient::MemoryMappedChunksParallel;
236
237#[cfg(feature = "array")]
238pub use crate::array::{
239    is_masked, mask_array, masked_equal, masked_greater, masked_inside, masked_invalid,
240    masked_less, masked_outside, masked_where, record_array_from_typed_arrays,
241    record_array_fromrecords, ArrayError, FieldValue, MaskedArray, Record, RecordArray, NOMASK,
242};
243
244#[cfg(feature = "memory_metrics")]
245pub use crate::memory::metrics::{
246    clear_snapshots,
247    compare_snapshots,
248    // Utility functions
249    format_bytes,
250    format_duration,
251    take_snapshot,
252    MemoryEvent,
253    MemoryEventType,
254    // Core metrics types
255    MemoryMetricsCollector,
256    MemoryMetricsConfig,
257    // Memory snapshots and leak detection
258    MemorySnapshot,
259    SnapshotDiff,
260    // Tracked memory components
261    TrackedBufferPool,
262    TrackedChunkProcessor,
263    TrackedChunkProcessor2D,
264};
265
266#[cfg(feature = "types")]
267pub use crate::batch_conversions::{
268    utils as batch_utils, BatchConversionConfig, BatchConversionResult, BatchConverter,
269    ElementConversionError,
270};
271#[cfg(all(feature = "memory_metrics", feature = "gpu"))]
272pub use crate::memory::metrics::{setup_gpu_memory_tracking, TrackedGpuBuffer, TrackedGpuContext};
273pub use crate::metrics::{
274    global_healthmonitor, global_metrics_registry, Counter, Gauge, HealthCheck, HealthMonitor,
275    HealthStatus, Histogram, MetricPoint, MetricType, MetricValue, Timer,
276};
277#[cfg(feature = "ml_pipeline")]
278pub use crate::ml_pipeline::DataType as MLDataType;
279#[cfg(feature = "ml_pipeline")]
280pub use crate::ml_pipeline::{
281    DataBatch, DataSample, FeatureConstraint, FeatureSchema, FeatureTransformer, FeatureValue,
282    MLPipeline, MLPipelineError, ModelPredictor, ModelType, PipelineConfig, PipelineMetrics,
283    PipelineNode, TransformType,
284};
285pub use crate::numeric::*;
286#[cfg(feature = "parallel")]
287pub use crate::parallel::*;
288#[cfg(feature = "parallel")]
289pub use crate::parallel_ops::{
290    is_parallel_enabled, num_threads, par_chunks, par_chunks_mut, par_join, par_scope,
291};
292// Re-export all parallel traits and types
293#[cfg(feature = "parallel")]
294pub use crate::parallel_ops::*;
295#[cfg(feature = "profiling")]
296pub use crate::profiling::{profiling_memory_tracker, Profiler};
297#[cfg(feature = "random")]
298pub use crate::random::*;
299pub use crate::resource::{
300    get_available_memory, get_performance_tier, get_recommended_chunk_size,
301    get_recommended_thread_count, get_system_resources, get_total_memory, is_gpu_available,
302    is_simd_supported, DiscoveryConfig, PerformanceTier, ResourceDiscovery, SystemResources,
303};
304#[cfg(feature = "simd")]
305pub use crate::simd::*;
306#[cfg(feature = "testing")]
307pub use crate::testing::{TestConfig, TestResult, TestRunner, TestSuite};
308#[cfg(feature = "types")]
309pub use crate::types::{convert, ComplexConversionError, ComplexExt, ComplexOps};
310pub use crate::units::{
311    convert, global_unit_registry, unit_value, Dimension, UnitDefinition, UnitRegistry, UnitSystem,
312    UnitValue,
313};
314pub use crate::utils::*;
315pub use crate::validation::production as validation_production;
316pub use crate::validation::{
317    check_finite, check_in_bounds, check_positive, checkarray_finite, checkshape,
318};
319
320#[cfg(feature = "data_validation")]
321pub use crate::validation::data::DataType as ValidationDataType;
322#[cfg(feature = "data_validation")]
323pub use crate::validation::data::{
324    Constraint, FieldDefinition, ValidationConfig, ValidationError, ValidationResult,
325    ValidationRule, ValidationSchema, Validator,
326};
327
328// Production-level feature re-exports
329pub use crate::observability::{audit, tracing};
330pub use crate::stability::{
331    global_stability_manager, ApiContract, BreakingChange, BreakingChangeType, ConcurrencyContract,
332    MemoryContract, NumericalContract, PerformanceContract, StabilityGuaranteeManager,
333    StabilityLevel, UsageContext,
334};
335pub use crate::versioning::{
336    compatibility, deprecation, migration, negotiation, semantic, ApiVersion, CompatibilityLevel,
337    SupportStatus, Version, VersionManager,
338};
339
340// Advanced optimization and AI feature re-exports
341pub use crate::neural_architecture_search::{
342    ActivationType, Architecture, ArchitecturePerformance, ConnectionType, HardwareConstraints,
343    LayerType, NASStrategy, NeuralArchitectureSearch, OptimizationObjectives, OptimizerType,
344    SearchResults, SearchSpace,
345};
346pub use crate::quantum_optimization::{
347    OptimizationResult, QuantumOptimizer, QuantumParameters, QuantumState, QuantumStrategy,
348};
349
350// Advanced JIT Compilation re-exports
351// pub use crate::advanced_jit_compilation::{
352//     AdaptiveCodeGenerator, CompilationStatistics, JitAnalytics, JitCompilerConfig, JitProfiler,
353//     KernelCache, KernelMetadata, KernelPerformance, LlvmCompilationEngine, OptimizationResults,
354//     PerformanceImprovement, RuntimeOptimizer, advancedJitCompiler,
355// }; // Missing module
356
357// Advanced Cloud Storage re-exports
358// pub use crate::distributed_storage::{
359//     AdaptiveStreamingEngine, CloudPerformanceAnalytics, CloudProviderConfig, CloudProviderId,
360//     CloudProviderType, CloudSecurityManager, CloudStorageMonitoring, CloudStorageProvider,
361//     DataOptimizationEngine, DownloadRequest, DownloadResponse, IntelligentCacheSystem,
362//     ParallelTransferManager, StreamRequest, advancedCloudConfig,
363//     advancedCloudStorageCoordinator, UploadRequest, UploadResponse,
364// };
365
366// Benchmarking re-exports
367#[cfg(feature = "benchmarking")]
368pub use crate::benchmarking::{
369    BenchmarkConfig, BenchmarkMeasurement, BenchmarkResult, BenchmarkRunner, BenchmarkStatistics,
370    BenchmarkSuite,
371};
372
373/// ``SciRS2`` core version information
374pub const fn _version() -> &'static str {
375    env!("CARGO_PKG_VERSION")
376}
377
378/// Initialize the library (called automatically)
379#[doc(hidden)]
380#[allow(dead_code)]
381pub fn __init() {
382    use std::sync::Once;
383    static INIT: Once = Once::new();
384
385    INIT.call_once(|| {
386        // Initialize API freeze registry
387        crate::api_freeze::initialize_api_freeze();
388    });
389}
390
391// Ensure initialization happens
392#[doc(hidden)]
393#[used]
394#[cfg_attr(target_os = "linux", link_section = ".init_array")]
395#[cfg_attr(target_os = "macos", link_section = "__DATA,__mod_init_func")]
396#[cfg_attr(target_os = "windows", link_section = ".CRT$XCU")]
397static INIT: extern "C" fn() = {
398    extern "C" fn __init_wrapper() {
399        __init();
400    }
401    __init_wrapper
402};