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" />
<PackageReference Include="Wiaoj.BloomFilter.Abstractions" />
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
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#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
#tool nuget:?package=Wiaoj.BloomFilter.Abstractions&version=0.3.0-alpha.1&prerelease
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
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>, andISpanFormattablefor 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 | Versions 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.
-
net10.0
- Wiaoj.Preconditions (>= 0.3.0-alpha.1)
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