Skip to content

5.0.0

Choose a tag to compare

@oschwald oschwald released this 12 Mar 22:24
Immutable release. Only release title and notes can be modified.
258cf9e
  • 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.