Changelog
View Sourcev2.1.0 (2026-04-06)
- Enhancements
- Lower memory consumption by hibernating the storage server (#33)
v2.0.0 (2020-09-20)
Enhancements
- Adapters can now utilize a
:delayedresponse from theGeolix.Adapter.load_database/1callback combined withGeolix.Database.Loader.set_loaded/1for a lazy initialization. The database will not be used for lookups until set to the:loadedstate - Database worker supervision is now done using a
DynamicSupervisor - Unloading a database can now be done by passing the complete database configuration instead of only the
:id
- Adapters can now utilize a
Bug fixes
- Databases loaded without an adapter configuration can now be properly unloaded to prevent repeated error messages from
Geolix.reload_databases/0 - The optional
metadata/1callback for adapters is now properly treated as optional
- Databases loaded without an adapter configuration can now be properly unloaded to prevent repeated error messages from
Backwards incompatible changes
- Internal adapter process pooling has been removed
- Minimum required Elixir version is now
~> 1.7
v1.1.0 (2020-05-04)
- Enhancements
- Configuring
startup_sync: trueallows you to ensure a synchronous database load is done during startup. This may have unwanted consequences when your loading process takes longer than around 5 seconds (default startup timeout), e.g. when loading a database from a remote location - Usage of deprecated
Supervisorfunctions has been removed (#30)
- Configuring
v1.0.0 (2019-09-08)
The adapter Geolix.Adapter.MMDB2 has been extracted a separate repository. You should be able to upgrade to the external adapter by changing your project's dependencies from :geolix to :geolix_adapter_mmdb2 with an appropriate version requirement.
Enhancements
- Database metadata is now available via
Geolix.metadata/0,1(#26)
- Database metadata is now available via
Backwards incompatible changes
- The database workers function of an adapter will now receive the full database configuration to be configured as the sole parameter
- The lookup function of an adapter will now receive the full database configuration to be used for the lookup as a third parameter
v0.18.0 (2019-03-17)
Enhancements
- Initializer modules can be defined with additional arguments by using
{mod, fun, args}
- Initializer modules can be defined with additional arguments by using
Backwards incompatible changes
- Minimum required Elixir version is now
~> 1.5
- Minimum required Elixir version is now
v0.17.0 (2018-09-02)
Enhancements
- Storage of the internal database loader state has been migrated to a named ets table in order to allow reading from databases while the loading cycle has not yet been completed (#20).
- The
:is_in_european_unioninformation has been added to theCountryandRepresentedCountryresult structs
Backwards incompatible changes
- Adapters are now responsible to return the complete (and final) result of the lookup. No additional modifications will be made. Several module namespaces have been renamed for this:
Geolix.Model -> Geolix.Adapter.MMDB2.ModelGeolix.Record -> Geolix.Adapter.MMDB2.RecordGeolix.Result -> Geolix.Adapter.MMDB2.Result
- Adapters are now responsible to return the complete (and final) result of the lookup. No additional modifications will be made. Several module namespaces have been renamed for this:
v0.16.0 (2018-02-21)
- Enhancements
- Configuration can be done on supervisor (re-) start by setting a
{mod, fun}tuple for the config key:init. This method will be called without arguments - Every configured database can define a
{mod, fun}tuple for the config key:init. This method, called upon database supervisor (re-) start, receives the current database configuration and is expected to return the full configuration used for starting the individual database - Unloading a database now calls
unload_database/1of the unloaded database adapter passing the current configuration and expecting:okas a result
- Configuration can be done on supervisor (re-) start by setting a
v0.15.1 (2017-12-04)
- Bug fixes
- The MMDB2 decoding library is now properly included in releases
v0.15.0 (2017-11-25)
Enhancements
- The MMDB2 file format decoding logic has been extracted to the new
:mmdb2_decoderlibrary
- The MMDB2 file format decoding logic has been extracted to the new
Backwards incompatible changes
- Minimum required Elixir version is now
~> 1.3
- Minimum required Elixir version is now
v0.14.0 (2017-06-20)
Enhancements
- Configuration errors are logged and/or returned
- Databases can be unloaded. This is done lazy so while still being in memory it won't be reloaded or used for lookups
- Databases in tarball format (
.taror.tar.gz) are now supported (#16) - Errors are now always returned in a tuple format (
{:error, type}) - Errors occurring while initially loading databases (or when calling
Geolix.reload_databases/0) are now sent toLogger.error(#16) - "GeoLite2-ASN" databases return structs instead of plain maps
- System environment configuration can set an optional default value to be used if the environment variable is unset
- When an error occurs during database load the database will be excluded from the lookup process
Backwards incompatible changes
- Previous
{:error, String.t}return values have been removed in favor of tuples andLogger.error/1
- Previous
v0.13.0 (2017-04-12)
- Backwards incompatible changes
- Minimum required Elixir version is now
~> 1.2 - Minimum required Erlang version is now
~> 18.0
- Minimum required Elixir version is now
v0.12.0 (2017-03-26)
Ownership has been transferred to the
elixir-geolixorganisationBackwards incompatible changes
- Support for non-map database configuration has been removed
- Support for
GeoIP2-Precision-CityandGeoIP2-Precision-Countrydatabase files has been removed (matching upstream)
v0.11.0 (2016-12-28)
Enhancements
- All configured databases can be reloaded in the background using
Geolix.reload_databases/0 - Database configuration has been extended to support adapters
Geolix.Adapter.Fakeis provided for a custom managed database with fixed/pre-defined responsesGeoIP-Enterprisedatabases return structs instead of plain maps- Lookups are done with a configurable timeout
- All configured databases can be reloaded in the background using
Deprecations
- Configuring the application's databases using
{:id, filename}tuples (orKeyword.t) has been deprecated in favor of a list of database definition maps Geolix.set_database/2has been deprecated in favor of the newGeolix.load_database/1
- Configuring the application's databases using
v0.10.1 (2016-06-04)
- Enhancements
- Lookup results are generated with
:enas the default if no locale is passed
- Lookup results are generated with
v0.10.0 (2016-04-04)
Enhancements
- Databases are reloaded if a storage process gets restarted
- Databases can be directly loaded from remote (http) locations if configured (#10)
- Paths can be configured by accessing the system environment
- Storage processes are now supervised
Bug fixes
- Traits from the database are properly passed on in the result
v0.9.0 (2015-11-16)
- Enhancements
- Allows usage of
GeoIP2-Precision-ISPdatabases - Lookups querying all registered databases are done concurrently
- Allows usage of
v0.8.0 (2015-07-18)
Enhancements
- Allows direct usage of gzip'ed database files
:localelookup option for easier access to translatable result values- Dependencies not used in production builds are marked as optional
Bug fixes
Floatvalues are rounded to 4 decimal digitsDoublevalues are rounded to 8 decimal digits
v0.7.0 (2015-02-16)
- Enhancements
- Supports IPv4 lookups in IPv6 notation ("0:0:0:0:0:FFFF:xxxx:xxxx")
- Supports IPv6 lookups
v0.6.0 (2015-02-08)
- Initial Release