Changes for version 0.48 - 2026-10-19

  • Enhancements
    • The location rule has moved to a distribution of its own, Geo-Location-Predicate (Geo::Location::Predicate::_valid_location()), so the sibling geocoders can use it without depending on Geo-Coder-Free. Its answers are unchanged
    • Requires Geo-Location-Predicate 0.01 and Geo::Location::Point 0.19
    • Makefile.PL installs a missing configure-time prerequisite correctly on Windows
    • Added Geo::Coder::Free::MissCache, replacing the never-expiring miss hash in OpenAddresses. OpenAddresses, Local and MaxMind all use it, so an address that is not in the data is searched for once per process rather than once per call. Entries expire after an hour (expires_after()), and Geo::Coder::Free->clear_miss_cache() empties the cache or one backend's part of it
    • Each backend has reads(), the number of reads it has made. geocode_many()'s lookups now counts only values that caused a read, and a new reads key gives the reads made by each backend
    • The field-to-accuracy rule has moved from Geo::Coder::Free::Provenance to Geo::Location::Point::accuracy_for(). Provenance still exports ACCURACY_LEVELS
    • cgi-bin/page.fcgi now validates a CSRF token when a client sends one, as documented
  • Tests
    • t/location-rule.t also scans the six sibling geocoders for copies of the location rule
    • Added scripts/location-predicate-fuzz.pl, which compares the sibling geocoders' verdicts with the rule, and t/location-predicates.t and t/location-fuzz-doc.t, which test it and LOCATION-PREDICATE-FUZZ.md
    • Added .github/workflows/location-predicates.yml and geocoder-suites.yml, which run the fuzz and the sibling geocoders' test suites against this distribution

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