#![allow(missing_docs)] #![allow(dead_code)] #![allow(unused_variables)] #![allow(unused_imports)] #![allow(unused_results)] #![allow(unused_must_use)] #![allow(unused_mut)] #![allow(unused_doc_comments)] #![allow(redundant_semicolons)] #![allow(clippy::needless_return)] #![allow(private_interfaces)] #![allow(unused_unsafe)] #![allow(mismatched_lifetime_syntaxes)] #![allow(dropping_references)] #![allow(noop_method_call)] #![allow(unused_assignments)] #![allow(unused_parens)]
#![deny(unsafe_op_in_unsafe_fn)]
pub mod algorithms;
pub mod blob_store;
pub mod cache;
pub mod compression;
pub mod concurrency;
pub mod config;
pub mod containers;
pub mod dev_infrastructure;
pub mod entropy;
pub mod error;
pub mod error_recovery;
pub mod fsa;
pub mod hash_map;
pub mod io;
pub mod memory;
pub mod simd;
pub mod string;
pub mod scoring;
pub mod succinct;
pub mod statistics;
pub mod system;
pub mod thread;
pub use containers::{
AutoGrowCircularQueue,
EasyHashMap,
EasyHashMapBuilder,
EasyHashMapStats,
FastVec,
FixedCircularQueue,
FixedLenStrVec,
FixedStr4Vec,
FixedStr8Vec,
FixedStr16Vec,
FixedStr32Vec,
FixedStr64Vec,
GoldHashIdx,
HashStrMap,
HashStrMapStats,
SmallMap,
SortableStrIter,
SortableStrSortedIter,
SortableStrVec,
IntVec,
PackedInt,
CompressionStrategy,
BlockSize,
UintVector,
ValVec32,
ZoSortedStrVec,
ZoSortedStrVecIter,
ZoSortedStrVecRange,
};
pub use error::{Result, ZiporaError};
pub use error_recovery::{
verify_alignment, verify_power_of_2, verify_allocation_success,
verify_bounds_check, verify_range_check
};
pub use string::{
FastStr, LexicographicIterator, SortedVecLexIterator, StreamingLexIterator,
LexIteratorBuilder, UnicodeProcessor, UnicodeAnalysis, Utf8ToUtf32Iterator,
LineProcessor, LineProcessorConfig, LineProcessorStats, LineSplitter,
utf8_byte_count, validate_utf8_and_count_chars,
};
pub use succinct::{
BitVector,
BitwiseOp,
BuilderOptions,
PerformanceStats,
RankSelect256,
RankSelectBuilder,
RankSelectInterleaved256,
RankSelectOps,
RankSelectPerformanceOps,
AdaptiveRankSelect,
AdaptiveMultiDimensional,
DataProfile,
SelectionCriteria,
Bmi2Accelerator,
Bmi2BitOps,
Bmi2BlockOps,
Bmi2Capabilities,
Bmi2PrefetchOps,
Bmi2RangeOps,
Bmi2RankOps,
Bmi2SelectOps,
Bmi2SequenceOps,
Bmi2Stats,
SimdCapabilities,
SimdOps,
bulk_popcount_simd,
bulk_rank1_simd,
bulk_select1_simd,
};
pub use blob_store::{BlobStore, MemoryBlobStore, PlainBlobStore};
pub use fsa::{
ZiporaTrie, ZiporaTrieConfig, TrieStrategy, StorageStrategy, CompressionStrategy as TrieCompressionStrategy,
RankSelectType, BitVectorType, FiniteStateAutomaton, Trie,
DoubleArrayTrie, DoubleArrayTrieMap, MapValue,
NestedLoudsTrie, NestingConfig, NestedTrieStats, FragmentStats,
CompressedSparseTrie, ConcurrencyLevel, ReaderToken, WriterToken,
PatriciaTrie, CritBitTrie,
};
pub use io::{DataInput, DataOutput, VarInt};
pub use hash_map::{
ZiporaHashMap, ZiporaHashMapConfig, HashMapStats,
HashStrategy, StorageStrategy as HashStorageStrategy, OptimizationStrategy,
fabo_hash_combine_u32, fabo_hash_combine_u64, golden_ratio_next_size, optimal_bucket_count,
advanced_hash_combine, HashFunctionBuilder, CombineStrategy, HashCombinable,
GOLDEN_RATIO_FRAC_NUM, GOLDEN_RATIO_FRAC_DEN, GOLDEN_LOAD_FACTOR,
SimdStringOps, SimdTier, CacheMetrics, Prefetcher,
};
#[cfg(feature = "mmap")]
pub use io::{MemoryMappedInput, MemoryMappedOutput};
pub use blob_store::{
DictionaryBlobStore, EntropyAlgorithm, EntropyCompressionStats, HuffmanBlobStore, RansBlobStore,
};
pub use entropy::dictionary::Dictionary;
pub use entropy::rans::Rans64Symbol;
pub use entropy::{
DictionaryBuilder, DictionaryCompressor, EntropyStats, HuffmanDecoder, HuffmanEncoder,
HuffmanTree, OptimizedDictionaryCompressor, RansDecoder, Rans64Encoder, RansState,
};
pub use memory::{
BumpAllocator,
BumpArena,
CACHE_LINE_SIZE,
CacheAlignedVec,
MemoryConfig,
MemoryPool,
MemoryStats,
NumaPoolStats,
NumaStats,
PoolConfig,
PooledBuffer,
PooledVec,
SecureMemoryPool,
SecurePoolConfig,
SecurePoolStats,
SecurePooledPtr,
clear_numa_pools,
get_global_pool_for_size,
get_global_secure_pool_stats,
get_numa_stats,
get_optimal_numa_node,
init_numa_pools,
numa_alloc_aligned,
numa_dealloc,
set_current_numa_node,
size_to_class,
};
#[cfg(target_os = "linux")]
pub use memory::{HugePage, HugePageAllocator};
pub use algorithms::{
AlgorithmConfig, EnhancedLoserTree, ExternalSort, LcpArray, LoserTreeConfig, MergeSource, MultiWayMerge,
RadixSort, RadixSortConfig, ReplaceSelectSort, ReplaceSelectSortConfig, SuffixArray,
SuffixArrayBuilder, TournamentNode,
simd_gallop_to, simd_block_filter,
};
#[cfg(feature = "async")]
pub use concurrency::{
FiberHandle, FiberPool, FiberPoolBuilder, FiberPoolConfig, FiberStats,
ParallelLoudsTrie, ParallelTrieBuilder,
Pipeline, PipelineBuilder, PipelineStage, PipelineStats,
Task, WorkStealingExecutor, WorkStealingQueue,
};
pub use compression::{
AdaptiveCompressor, AdaptiveConfig, Algorithm, CompressionProfile,
CompressionStats, Compressor, CompressorFactory, PerformanceRequirements,
};
pub use system::{
RuntimeCpuFeatures, get_cpu_features, has_cpu_feature,
PerfTimer, BenchmarkSuite, HighPrecisionTimer, ProfiledFunction,
AdaptiveBase64, SimdBase64Encoder, SimdBase64Decoder, base64_encode_simd, base64_decode_simd,
VmManager, PageAlignedAlloc, KernelInfo, vm_prefetch, get_kernel_info,
};
#[cfg(feature = "async")]
pub use system::{
ProcessManager, ProcessPool, BidirectionalPipe, ProcessExecutor,
};
pub use dev_infrastructure::{
FactoryRegistry, GlobalFactory, AutoRegister, Factoryable, FactoryBuilder,
global_factory,
HighPrecisionTimer as DevHighPrecisionTimer, ScopedTimer, BenchmarkSuite as DevBenchmarkSuite,
BenchmarkResult, MemoryDebugger, MemoryStats as DevMemoryStats, PerformanceProfiler,
global_profiler, global_memory_debugger, format_duration,
Histogram, U32Histogram, U64Histogram, HistogramStats,
StatAccumulator, AccumulatorStats, MultiDimensionalStats, GlobalStatsRegistry,
global_stats, StatIndex,
};
pub use statistics::{
TrieStatistics, MemoryStats as StatsMemoryStats, PerformanceStats as StatsPerformanceStats,
CompressionStats as StatsCompressionStats, DistributionStats, ErrorStats, TimingStats,
MemoryCategory, ErrorType,
MemoryBreakdown, GlobalMemoryTracker, TrackedObject, LocalMemoryTracker,
FragmentationAnalysis,
Profiling, QTime, QDuration, PerfTimer as StatsPerfTimer, TimerCollection,
ScopedTimer as StatsScopedTimer, str_date_time_now,
FreqHist, FreqHistO1, FreqHistO2, HistogramData, HistogramDataO1, HistogramDataO2,
HistogramCollection,
EntropyAnalyzer, EntropyConfig, EntropyResults, CompressionEstimates, DistributionInfo,
EntropyAnalyzerCollection,
ContextBuffer, BufferMetadata, BufferPriority, StatisticsContext, DefaultStatisticsContext,
BufferPoolManager, BufferPoolConfig, PoolStatistics, ScopedBuffer,
Profiler, ProfilerConfig, OperationProfile, ProfiledOperation,
global_profiler as stats_global_profiler, init_global_profiler,
};
pub use thread::{
PlatformSync, DefaultPlatformSync,
InstanceTls, OwnerTls, TlsPool,
AtomicExt, AsAtomic, AtomicBitOps, spin_loop_hint,
memory_ordering,
};
pub use cache::{
LruPageCache, SingleLruPageCache, PageCacheConfig, CacheBuffer,
LockingConfig, MemoryConfig as CacheMemoryConfig, KernelAdvice, PerformanceConfig,
EvictionConfig, EvictionAlgorithm, WarmingStrategy, MaintenanceConfig,
CacheStatistics, CacheStatsSnapshot, BufferPool, BufferPoolStats,
CacheError, CacheHitType, FileId, PageId, NodeIndex,
hash_file_page, get_shard_id, prefetch_hint,
PAGE_SIZE, PAGE_BITS, HUGE_PAGE_SIZE, MAX_SHARDS, CACHE_LINE_SIZE as CACHE_CACHE_LINE_SIZE,
};
#[cfg(target_os = "linux")]
pub use thread::{LinuxFutex, FutexMutex, FutexCondvar, FutexRwLock, FutexGuard, FutexReadGuard, FutexWriteGuard};
#[cfg(target_arch = "x86_64")]
pub use thread::x86_64_optimized;
#[cfg(target_arch = "aarch64")]
pub use thread::aarch64_optimized;
#[cfg(feature = "zstd")]
pub use blob_store::ZstdBlobStore;
pub type StateId = u32;
pub type RecordId = u32;
#[cfg(feature = "ffi")]
pub mod ffi;
pub const VERSION: &str = env!("CARGO_PKG_VERSION");
pub fn has_simd_support() -> bool {
#[cfg(target_feature = "avx2")]
{
true
}
#[cfg(not(target_feature = "avx2"))]
{
false
}
}
pub fn init() {
log::debug!("Initializing zipora v{}", VERSION);
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_basic_functionality() {
init();
assert!(VERSION.len() > 0);
}
#[test]
fn test_version_info() {
assert!(VERSION.len() > 0);
assert!(VERSION.contains('.'));
let parts: Vec<&str> = VERSION.split('.').collect();
assert!(parts.len() >= 2);
}
#[test]
fn test_simd_support() {
let has_simd = has_simd_support();
#[cfg(target_feature = "avx2")]
assert!(has_simd);
#[cfg(not(target_feature = "avx2"))]
assert!(!has_simd);
}
#[test]
fn test_type_aliases() {
let _state_id: StateId = 42;
let _record_id: RecordId = 123;
assert_eq!(std::mem::size_of::<StateId>(), 4);
assert_eq!(std::mem::size_of::<RecordId>(), 4);
}
#[test]
fn test_re_exports() {
let _vec = FastVec::<i32>::new();
let _str = FastStr::from_string("test");
let _bv = BitVector::new();
let _err = ZiporaError::invalid_data("test");
assert!(std::any::type_name::<Result<()>>().contains("ZiporaError"));
}
#[test]
fn test_multiple_init_calls() {
init();
init();
init();
}
}