Skip to content

Releases: maxmind/MaxMind-DB-Reader-dotnet

5.1.0

22 May 21:41
Immutable release. Only release title and notes can be modified.
eab5c50

Choose a tag to compare

  • FileAccessMode.MemoryMapped now creates an unnamed file-backed memory-mapped
    region instead of a named Local\<sha> section. Cross-process page sharing
    continues to work via the OS file cache. This fixes
    UnauthorizedAccessException when multiple processes running under different
    identities open the same database. Reported by Ross Gehlig. GitHub #290.
  • FileAccessMode.MemoryMappedGlobal is deprecated and will be removed in a
    future major release. Existing usages now route to the same unnamed
    file-backed path used by FileAccessMode.MemoryMapped, so the 'create global
    objects' right is no longer required.
  • An empty database file now throws InvalidDatabaseException consistently
    across all FileAccessMode values, matching the behavior of the
    Reader(Stream) constructor.

5.0.0

12 Mar 22:24
Immutable release. Only release title and notes can be modified.
258cf9e

Choose a tag to compare

  • BREAKING: Added property-based activation for MMDB deserialization. Types
    with [MapKey]-annotated init properties 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.ParameterName renamed to
    InjectAttribute.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 OverflowException when 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.Memory and the Reader(Stream) constructor now
    use anonymous memory-mapped files internally instead of byte[]. 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

24 Nov 21:33
16f4164

Choose a tag to compare

  • Fourth attempt at Trusted Publishing. No other changes.

4.3.3

24 Nov 21:21
fa4eede

Choose a tag to compare

  • Third attempt at Trusted Publishing. No other changes.

4.3.2

24 Nov 21:11
8ad25f5

Choose a tag to compare

  • Second attempt at Trusted Publishing. No other changes.

4.3.1

24 Nov 21:03
5db62bb

Choose a tag to compare

  • First release via Trusted Publishing. No other changes.

4.3.0

20 Nov 22:03

Choose a tag to compare

  • .NET 10.0 has been added as a target.
  • The language version has been updated to C# 14.0.

4.2.0

05 May 16:27
c1e2b26

Choose a tag to compare

  • .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 using
    FileAccessMode.MemoryMappedGlobal.
  • Performance improvements. Pull requests by GrAcgoire. GitHub #210, #211
    and #212.

4.1.0

05 Dec 23:31

Choose a tag to compare

  • .NET 5.0 has been removed as a target as it has reach its end of life.
    However, if you are using .NET 5.0, the .NET Standard 2.1 target should
    continue working for you.
  • .NET 7.0 and .NET 8.0 have been added as a target.
  • Minor performance improvements.

4.0.0

03 Feb 22:00
1fa735a

Choose a tag to compare

  • This library no longer targets .NET 4.6.1.
  • .NET 6.0 was added as a target.