Wiaoj.BloomFilter.Abstractions 0.3.0-alpha.1

This is a prerelease version of Wiaoj.BloomFilter.Abstractions.
dotnet add package Wiaoj.BloomFilter.Abstractions --version 0.3.0-alpha.1
                    
NuGet\Install-Package Wiaoj.BloomFilter.Abstractions -Version 0.3.0-alpha.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Wiaoj.BloomFilter.Abstractions" Version="0.3.0-alpha.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Wiaoj.BloomFilter.Abstractions" Version="0.3.0-alpha.1" />
                    
Directory.Packages.props
<PackageReference Include="Wiaoj.BloomFilter.Abstractions" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Wiaoj.BloomFilter.Abstractions --version 0.3.0-alpha.1
                    
#r "nuget: Wiaoj.BloomFilter.Abstractions, 0.3.0-alpha.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Wiaoj.BloomFilter.Abstractions@0.3.0-alpha.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Wiaoj.BloomFilter.Abstractions&version=0.3.0-alpha.1&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=Wiaoj.BloomFilter.Abstractions&version=0.3.0-alpha.1&prerelease
                    
Install as a Cake Tool

Wiaoj.BloomFilter.Abstractions

Core contracts, interfaces, and value primitives for the Wiaoj.BloomFilter library.

This package defines the public API surface, storage provider interfaces, and domain value objects required to consume or extend the Bloom Filter system without referencing concrete storage implementations or runtime hosting packages.


Installation

dotnet add package Wiaoj.BloomFilter.Abstractions

Domain Primitives and Types

FilterName (readonly record struct)

  • Validated immutable identifier for named Bloom Filter instances.
  • Restricts length between 1 and 128 characters and enforces valid characters ([a-zA-Z0-9_.-]).
  • Implements ISpanParsable<FilterName>, IUtf8SpanParsable<FilterName>, and ISpanFormattable for allocation-free parsing and formatting.

BloomFilterConfiguration (sealed record)

  • Immutable configuration model encapsulating:
    • ExpectedItems ($n$): Capacity limit before degradation.
    • ErrorRate ($p$): Target false positive probability strictly between 0.0 and 1.0.
    • SizeInBits ($m$): Total bit array length calculated by optimal math formulas.
    • HashFunctionCount ($k$): Number of hash iterations derived from $m/n \cdot \ln(2)$.
    • HashSeed: 64-bit seed value for hashing engines.
    • ShardCount: Number of underlying partitioned shards.

GrowthRate (readonly record struct)

  • Capacity multiplier for subsequent layers in scalable filters.
  • Built-in constants: GrowthRate.Double (2.0), GrowthRate.Quadruple (4.0).

Percentage (readonly record struct)

  • Represents normalized floating-point percentages between 0.0 and 1.0.
  • Used for error rates, saturation thresholds, and fill ratios.

BloomFilterType (enum)

  • Architectural variants: InMemory, Scalable, Rotating.

Core Interfaces

Interface Role
IBloomFilter Primary query and mutation contract: Add(ReadOnlySpan<byte>), Contains(ReadOnlySpan<byte>), Add(ReadOnlySpan<char>), Contains(ReadOnlySpan<char>), and GetPopCount().
IBloomFilter<TTag> Open-generic tag-based DI wrapper for domain-scoped filter resolution.
IPersistentBloomFilter Extends IBloomFilter with storage synchronization: IsDirty, SaveAsync(), and ReloadAsync().
IBloomFilterStorage Persistence backend contract: SaveAsync(), LoadStreamAsync(), and DeleteAsync().
IBloomFilterRegistry Thread-safe discovery registry for tracking and resolving instantiated persistent filters.
IBloomFilterFactory Engine factory for instantiating and hydrating filters by name or tag.
IAutoBloomFilterSeeder Interface for cold-start seeding filters from databases or external caches.

Exception Types

  • DataIntegrityException: Thrown during reload operations if snapshot checksums fail, headers are corrupted, non-seekable streams cannot be rewound, or configuration fingerprints mismatch.

License

This project is licensed under the MIT License.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Wiaoj.BloomFilter.Abstractions:

Package Downloads
Wiaoj.BloomFilter

Package Description

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.3.0-alpha.1 48 10/5/2026
0.2.0-alpha.3 62 9/24/2026
0.2.0-alpha.2 52 9/24/2026
0.2.0-alpha.1 59 9/24/2026
0.1.0-alpha.9 62 9/21/2026
0.1.0-alpha.8 55 9/21/2026
0.1.0-alpha.7 67 9/18/2026
0.1.0-alpha.6 64 9/16/2026
0.1.0-alpha.5 66 9/16/2026
0.1.0-alpha.4 68 9/16/2026
0.1.0-alpha.3 58 9/15/2026
0.1.0-alpha.2 65 9/15/2026
0.1.0-alpha.1 61 9/14/2026
0.0.1-alpha.112-preview 66 9/13/2026
0.0.1-alpha.111-preview 60 9/13/2026
0.0.1-alpha.110-preview 61 9/12/2026
0.0.1-alpha.109-preview 66 9/11/2026
0.0.1-alpha.108-preview 80 9/8/2026
0.0.1-alpha.107-preview 84 9/8/2026
0.0.1-alpha.106-preview 75 9/8/2026
Loading failed