Changes for version 0.50 - 2026-10-21
- Enhancements
- Geo::Coder::Free->new() and Geo::Coder::Free::OpenAddresses->new() take libpostal => 0, which keeps Geo::libpostal from being loaded or used even when it is installed
- Bug Fixes
- Geo::Coder::Free::OpenAddresses no longer dies with "Can't locate Geo/Address/Parser.pm" on a US address when the optional Geo::Address::Parser isn't installed; it skips that step instead
- Documentation
- Geo::Coder::Free::OpenAddresses documents the optional modules it uses, and that libpostal's first call loads a model of several gigabytes
- LIMITATIONS now says that, without OpenAddresses data, a two-part "City, Country" location is often answered with the wrong place, flagged accuracy 'region', and that accented names must be spelled as in the data and passed as character strings
- Fixed the geocode_many() example, which printed the array reference instead of the unresolved values
- API specifications for every public method of Geo::Coder::Free::MaxMind, and for the rest of OpenAddresses, Local and Geo::Coder::Free (reads, reverse_geocode, ua, run); the formal specification covers libpostal
- Tests
- The OpenAddresses ReDoS test in t/edge_cases.t no longer times out when Geo::libpostal is installed. Loading libpostal's model on its first call could take longer than the 5 second limit, which failed the 0.49 install
- The ReDoS tests in t/edge_cases.t fail on any error, not only a timeout
- New t/optional-modules.t runs OpenAddresses without Geo::Address::Parser
Documentation
Modules
Geocoding using free, locally-hosted databases
Site-independent configuration file for the Versatile Web Framework
driver for http://download.geonames.org/export/dump/admin1CodesASCII.txt
driver for http://download.geonames.org/export/dump/admin2Codes.txt
driver for https://www.maxmind.com/en/free-world-cities-database
driver for http://results.openaddresses.io/
interface to data from http://results.openaddresses.io/
Driver for /tmp/vwf.log
Geocode using user-curated local data
Provides a geocoding functionality using the MaxMind and GeoNames databases
process-level memory of lookups that found nothing
The provenance keys that every Geo::Coder::Free result carries
Random subroutines for Geo::Coder::Free
Provides
in lib/Geo/Coder/Free/Allow.pm
in lib/Geo/Coder/Free/Display.pm
in lib/Geo/Coder/Free/Display/index.pm
in lib/Geo/Coder/Free/Display/meta_data.pm
in lib/Geo/Coder/Free/Display/query.pm