- .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
.
- .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.
- This library no longer targets .NET 4.6.1.
- .NET 6.0 was added as a target.
- This library now requires .NET Framework 4.6.1 or greater or .NET Standard 2.0 or greater.
- .NET 5.0 was added as a target framework.
- When decoding strings in a memory-mapped file, the reader no longer
allocates a temporary
byte[]
. This significantly improves performance but requires the use ofunsafe
code. FileAccessMode.MemoryMapped
now works if the database path specified is a symbolic link to the actual database.
netstandard2.1
was added as a target framework.
- This library has been updated to support the nullable reference types introduced in C# 8.0.
- A
FindAll
method was added to theMaxMind.Db.Reader
class. This returns an enumerator that enumerates over the MaxMind DB database. Pull request by Jeff Johnson. GitHub #47. - A
CreateAsync
static method was added to asynchronously created aMaxMind.Db.Reader
object from database file. Pull request by David Warner. GitHub #44. - When deserializing to a class, you may now instruct the reader to set a
constructor parameter to be the network associated with the record. To do
this, use the
Network
attribute. The parameter must be of typeMaxMind.Db.Network
. GitHub #56. - As part of #44, the optimization to reduce allocations when loading from a seekable stream was removed. The optimization could cause poor performance in some instances and its behavior with regard to the stream position differed from the documented behavior.
- Added
FileAccessMode.MemoryMappedGlobal
. When used, this will open the file in global memory map mode. This requires the "create global objects" right. Pull request by David Warner. GitHub #43.
- Reduce the number of allocations when creating a
MaxMind.Db.Reader
from a seekable stream. Pull request by Maarten Balliauw. GitHub #38. - A
netstandard2.0
target was added to eliminate additional dependencies required by thenetstandard1.4
target. Pull request by Adeel Mujahid. GitHub #39. - As part of the above work, the separate Mono build files were dropped. As
of Mono 5.0.0,
msbuild
is supported.
- Switch to the updated MSBuild .NET Core build system. Pull request by Adeel Mujahid. GitHub #35.
- Move tests from NUnit to xUnit.net. GitHub #35.
- Update for .NET Core 1.1.
- Re-build of 2.1.1 to fix signing issue. No code changes.
- First non-beta release with .NET Core support.
- The tests now use the .NET Core NUnit runner.
- Re-release of
2.1.0-beta4
to skip bad2.1.0
release on NuGet.
- Update for .NET Core RC2. Pull request by Adeel Mujahid. GitHub #28.
- The assemblies are now signed again.
- Remove unnecessary Newtonsoft.Json dependency.
- .NET Core support. Switched to
dotnet/cli
for building. Pull request by Adeel Mujahid. GitHub #26 & #27.
- No changes since 2.0.0-beta3.
- The Reader class now has an overloaded method that takes an integer out parameter. This parameter is set the the network prefix length for the record containing the IP address in the database. Pull request by Ed Dorsey. GitHub #22 & #23.
- Minor refactoring. No substantial changes since beta1.
- Significant API changes. The
Find
method now takes a type parameter specifying the type to deserialize to. Note thatJToken
is not supported for this. You can either deserialize to an arbitrary collection or to model classes that use theMaxMind.Db.Constructor
andMaxMind.Db.Parameter
attributes to identify the constructors and parameters to deserialize to. - The API now significantly faster.
- Production release. No changes.
- The assembly now has a strong name.
- An internal use of
JTokenReader
is now disposed of after use. - A null stream passed to the
Reader(Stream)
constructor will now throw anArgumentNullException
.
- Minor code cleanup.
- A
IOException: Not enough storage is available to process this command
when using the memory-mapped mode with 32-bit builds or many threads was fixed. Closes GH #5. - Use of streams was replaced with direct access for both the memory-mapped file mode and the memory mode. This should increase performance in most cases.
- When using memory-mapped mode, the file is now opened with
FileShare.Delete
, allowing other processes to delete or replace the database when it is in use. The reader object will continue using the old database. - The Json.NET dependency was updated to 7.0.1.
- Improved the exception thrown when the constructor for
Reader
is called with an empty stream. - Updated Newtonsoft.Json dependency to 6.0.8.
- Minor code cleanup.
- First production release.
- Added public
Metadata
property onReader
.
- The database is now loadable from a
Stream
.
- Fixed a bug that occurred when using the memory-mode in a multi-threaded
application. When using a single
Reader
from multiple threads in memory- mode, the internal state of the object could become corrupt if you replaced the MaxMind database file on disk with another database file.
- Fixed bug that caused an exception to be thrown when two threads created a
MaxMind.Db.Reader
object at the same time. This was fixed using a synchronization lock around the code that opens/creates the memory map. We recommend that you share aReader
object across threads rather than create one for each thread or lookup.
- Changed namespace from
MaxMind.DB
toMaxMind.Db
to conform with Microsoft's recommendations. - Replaced custom
BigInteger
implementation withSystem.Numerics.BigInteger
. - Made
Metadata
an internal property onReader
.
- Initial release