Releases: maxmind/MaxMind-DB-Reader-dotnet
Releases · maxmind/MaxMind-DB-Reader-dotnet
5.1.0
Immutable
release. Only release title and notes can be modified.
FileAccessMode.MemoryMappednow creates an unnamed file-backed memory-mapped
region instead of a namedLocal\<sha>section. Cross-process page sharing
continues to work via the OS file cache. This fixesUnauthorizedAccessExceptionwhen multiple processes running under different
identities open the same database. Reported by Ross Gehlig. GitHub #290.FileAccessMode.MemoryMappedGlobalis deprecated and will be removed in a
future major release. Existing usages now route to the same unnamed
file-backed path used byFileAccessMode.MemoryMapped, so the 'create global
objects' right is no longer required.- An empty database file now throws
InvalidDatabaseExceptionconsistently
across allFileAccessModevalues, matching the behavior of theReader(Stream)constructor.
5.0.0
Immutable
release. Only release title and notes can be modified.
- BREAKING: Added property-based activation for MMDB deserialization. Types
with[MapKey]-annotatedinitproperties can now be deserialized without a[Constructor]-annotated constructor. - The
[Parameter]attribute has been renamed to[MapKey]. The old[Parameter]attribute still works but is marked obsolete and will be removed
in a future major release. - BREAKING:
InjectAttribute.ParameterNamerenamed toInjectAttribute.Name. - Improved lookup performance on .NET 8+ by using Span-based bounds-checked
pointer access in the memory-mapped buffer and by reducing reflection overhead
in the value-type decode path. - Fixed
OverflowExceptionwhen reading databases larger than 2 GiB where data
section pointers resolved to offsets exceeding the 32-bit integer maximum.
Reported by Yuri Simernitski. GitHub #263. - Fixed search tree record handling to correctly interpret unsigned 32-bit
record values that exceed the signed 32-bit integer maximum, so that databases
with large data sections are supported. - Fixed data section pointer decoding to correctly read unsigned 32-bit pointer
values, so that pointers to offsets beyond 2 GiB in the data section are
resolved correctly. - BREAKING:
FileAccessMode.Memoryand theReader(Stream)constructor now
use anonymous memory-mapped files internally instead ofbyte[]. This removes
the previous ~2.1 GiB size limitation but may break environments where
memory-mapped files are not supported, such as WASM/browser runtimes, some
mobile/sandboxed runtimes, or hardened containers with restricted
shared-memory syscalls. Non-seekable streams also now require a writable temp
directory.
4.3.4
4.3.3
4.3.2
4.3.1
4.3.0
4.2.0
- .NET 6.0 and .NET 7.0 have been removed as targets as they have both
reach their end of support from Microsoft. If you are using these versions,
the .NET Standard 2.1 target should continue working for you. - .NET 9.0 has been added as a target.
- We now use a mutex rather than a lock statement when opening the
database. This is done to reduce the likelihood of a race condition
when process are opening a single database when usingFileAccessMode.MemoryMappedGlobal. - Performance improvements. Pull requests by GrAcgoire. GitHub #210, #211
and #212.