Releases: Bobris/BTDB
Releases · Bobris/BTDB
35.1.0
Added
- Relations now expose a
Query<T>()API returningIQueryable<T>with initial interpretedWheresupport over
expression equality, boolean conjunction, and boolean disjunction. - The low-level interpreter now supports try/catch/finally metadata, exception throw/rethrow opcodes, stack struct
allocation via resolvedRawDatastack allocators, stack byte allocation, resolved metadata getter/setter calls,
resolved type converters, and finally-aware nestedStophandling. - The low-level interpreter builder now rejects non-empty programs that do not end with
Stopand programs with
unclosed try blocks, and automatically wraps stack allocation nested programs in try/finallyStopblocks. - Relations can now expose an
AllocateId()method that allocates persistedulongidentifiers independently per
relation, starting at1. - Added low-level
RoaringBitmapshelpers for 16-bit bitmap containers overSpan<byte>andReadOnlySpan<byte>,
including bit updates, compression, boolean operations, negation, tests, and BenchmarkDotNet scenarios. RoaringBitmapscan now enumerate encoded 16-bit containers asulongvalues with a caller-provided offset through
a concrete struct enumerable.RoaringBitmapsnow has an allocation-free dense bitmap iterator overReadOnlySpan<byte>for callers that already
have the raw 8192-byte bitmap.RoaringBitmapsnow exposes in-place dense bitmap mutation operations for negation, union, intersection, union with
complement, and difference against encoded containers.RoaringBitmapsnow exposes optimized encoded-container truncation for dropping values above a 16-bit maximum.- ObjectDB relations now support lazy
IRoaringBitmapfields backed by the existing external-content keyspace, with
explicit flushing and automatic free-content cleanup on normal relation removes and updates. IRoaringBitmapnow supports command-buffer initialization throughRoaringBitmap.BuildAsync(...), including
sorted enumerable sources and fused boolean operations.
Changed
RoaringBitmap.BuildAsync(...)now writes generated page payloads directly into the command buffer with fixed
UInt16page lengths, aligned page data, optimized array-sourceOr,And, andNotpaths, and direct reuse of
storedIRoaringBitmappage payloads, reducing temporary allocations during bulkIRoaringBitmapinitialization.- Raw object-data copying now calls
Buffer.BulkMoveWithWriteBarrierthroughUnsafeAccessorinstead of resolving it
with reflection duringRawDatainitialization. RawData.GetOffsetsnow supports tuple layouts with three or more fields.BonSerializernow supportsTupleandValueTuplevalues with three or more items.
35.0.5
Fixed
BTDB.AzureStoragenow reopens existing transaction-log cache files without holding a write handle open until an
append is actually requested, which fixes Windows startup scenarios that needed to read a locally longer.trl
file whileAzureBlobFileCollectionqueued its initial synchronization.
35.0.4
35.0.3
Added
UseBtdbIoc(...)and BTDB's internalIServiceProviderintegration now exposeIRootContaineras a singleton so
the BTDB root container can be resolved safely from the ASP.NET rootIServiceProviderwhileIContainerremains
scope-bound.
Changed
- BTDB IOC now caches
IServiceProviderfallback factories and removes redundant service-provider availability checks,
which reduces overhead when BTDB resolves services fromMicrosoft.Extensions.DependencyInjection. - BTDB IOC no longer tracks cross-container dependency cycles at runtime when resolving through
Microsoft.Extensions.DependencyInjection, which reduces bridge resolve overhead but leaves such cycles to recurse
until one of the containers fails naturally. - BTDB IOC now uses a root-provider fast path for exported registrations resolved from the ASP.NET root
IServiceProvider, avoiding extraRootScopeIdentityandContainerImpllookups on the steady-state root path. - BTDB IOC now bypasses export enumeration bookkeeping for the common single-registration
registrationIndex == 0
path, which further reduces steady-state resolve overhead for BTDB services exposed through
Microsoft.Extensions.DependencyInjection. - BTDB IOC now keeps three distinct integration modes: pure BTDB, BTDB resolving services from
ContainerBuilder.ServiceCollection, and full bidirectional BTDB <-> ASP.NET DI bridging only through
UseBtdbIoc(...). Building a plainContainerBuilderno longer auto-exports BTDB registrations into an internal
IServiceProvider.
35.0.2
Fixed
- BTDB IOC singletons are now resolved correctly from the ASP.NET root
IServiceProviderwhen scope validation is
enabled, which fixesUseBtdbIoc(...)root-provider resolutions that previously failed becauseContainerScope
could not be resolved from the root scope.
35.0.1
Fixed
- BTDB IOC singleton factories resolved through
Microsoft.Extensions.DependencyInjectionnow always use the root
container for singleton storage and follow-up resolutions, which fixes failures when a singleton first created from a
disposed DI scope later resolves additional services. - ObjectDB relation upgrades now report field-handler incompatibilities for
UseNoEmitForRelationsloaders with the
concrete destination handler when available, which fixes missing diagnostics for cases like
ODBDictionaryFieldHandlertoDictionaryFieldHandler.
33.6.13
35.0.0
Added
- Added the
BTDB.AzureStoragepackage withAzureBlobFileCollection, anIFileCollectionimplementation that
maintains a local memory-mapped cache synchronized with Azure Blob Storage, reconciles local and remote file lengths
on startup, uploads regular files as block blobs, batches transaction-log block commits on a configurable timer, and
drains uploads and deletes through a FIFO background queue. AzureBlobFileCollectionOptions.DeleteLocalCacheDirectoryOnDisposemakes removal of the local cache directory on
dispose an explicit opt-in behavior.AzureBlobStorageBackendnow accepts an optional path prefix, allowing BTDB files to be scoped under a subdirectory
within a shared blob container.- BTDB IOC registrations are now automatically available from
Microsoft.Extensions.DependencyInjection, including
keyed registrations, per-scopeIContainerresolution, and cycle detection for dependency chains that cross between
BTDB IOC and the ASP.NET service provider.
Changed
AzureBlobFileCollectionis now intentionally optimized only for BTDB KeyValueDB file types (trl,pvl,kvi),
uses specialized file implementations per type, and writespvl/kvidata through a 128 KB buffered exclusive
writer instead of the previous memory-mapped writer path.AzureBlobFileCollectionOptions.Loggercan now observe enqueue, execution, retry failures, and queue length for the
Azure Blob FIFO worker, plus startup downloads from Azure Blob Storage.- Transaction-log synchronization now passes only the target length plus a random-access reader into the blob backend;
AzureBlobStorageBackendcomputes the committed block plan itself with an internal 128 KB preferred block size,
reuses existing committed blocks only when their IDs and lengths exactly match the expected layout, and otherwise
rebuilds the blob so committed block counts stay bounded even under very small flush increments.
Fixed
- ObjectDB relation helper methods now accept a nullable collection placeholder for
FirstById/LastByIdprimary-key
lookups, which removes nullable warnings from generated relation code that intentionally passesnull.
34.5.1
Added
- IOC now supports
Scoped()registrations andIContainer.CreateScope().IContaineris now
IAsyncDisposable-only, child scopes own scoped instances, the root container owns singletons and registered
instances, and BTDB scopes now align withContainerBuilder.ServiceCollectionscoped services.CreateScope()
is forbidden after disposal, while disposal only blocks tracking of newly created owned disposable instances.
34.5.0
Added
Constraint.NullableDateTime.Predicate and Constraint.NullableDateTime.UpTo for filtering nullable DateTime
relation keys.
- IOC now supports
Scoped()registrations andIContainer.CreateScope().IContaineris now
IAsyncDisposable-only, child scopes own scoped instances, the root container owns singletons and registered
instances, and BTDB scopes now align withContainerBuilder.ServiceCollectionscoped services.