4.0008 2025-09-13 - Dominican Republic has toll-free numbers with the D digit 0 or 1 - Data updates 4.0007 2025-06-05 - Data updates 4.0006 2025-03-23 - Data updates 4.0005 2024-12-12 - Tweak documentation around deprecated N::P::C::phone2country - Data updates 4.0004 2024-09-10 - Number::Phone::Country no longer exports 'phone2country', after this being deprecated for 20 years! - the 'noexport' flag on Number::Phone::Country now results in a warning which will become fatal 2 years after this release. At the same time, warnings about unknown flags will also become fatal. - Data updates 4.0003 2024-06-07 - No longer auto-tested on 5.12 and below because build-time dependencies no longer build reliably - Data updates, including Lithuania changing its trunk prefix, Mexico getting rid of theirs, and Uzbekistan changing both its trunk and international prefixes - Trying to put letters in a phone number now emits warnings, and will become fatal 2 years after this release 4.0002 2024-03-08 - Added timezones() method - Data updates - Tests are now forgiving of a missing Parallel::ForkManager (which isn't available on some Solaris machines) 4.0001 2023-12-10 - Clarification in doco re supported perl versions - Data updates 4.0000 2023-09-03 - Switch to Data::CompactReadonly for UK database. The UK database is now less than 10% of its previous size. - Data updates 3.9002 2023-06-14 - Data updates only 3.9001 2023-03-07 - Bug fix: if libphonenumber doesn't define any formatters for a country, such as for Bonaire (BQ), do the best we can and return +CC NNNNN instead of nothing. This was a regression in 3.9000, see https://github.com/DrHyde/perl-modules-Number-Phone/issues/122 3.9000 2023-03-05 - Add validation using libphonenumber's data for non-geographic country codes like +800 (International free phone) and +870 (Inmarsat). See https://github.com/DrHyde/perl-modules-Number-Phone/issues/17 - Bug fix: NANP toll-free numbers corrected. 833 area code now supported, and regex fixed to only match when the B and C digits are the same, so 800 is toll-free, 888 is toll-free, but 808 is not. See https://github.com/DrHyde/perl-modules-Number-Phone/issues/110 - Bug fix: NANP 1-600 area code is non-geographic. See https://github.com/DrHyde/perl-modules-Number-Phone/issues/113 - Workaround: OFCOM have the wrong number length for the +44 800 716 range, we now have an egregious hack to work around that. See https://github.com/DrHyde/perl-modules-Number-Phone/issues/112 - No longer auto-tested on 5.10 because a 'make test'-time dependency (Test::Deep) no longer supports that. - Data updates 3.8007 2022-12-02 - Data updates 3.8006 2022-09-03 - Data updates - No longer auto-tested on 5.8 because a 'make dist'-time dependency (XML::XPath) no longer supports that. 3.8005 2022-06-01 - Data updates only 3.8004 2022-03-07 - Fix test failure that only occurred if Number::Phone::JP was installed (it doesn't have exactly the data we expect from ...::StubCountry::JP) - Data updates from OFCOM 3.8003 2022-03-05 - New Canadian area codes - +882 34 recognised as Antarctica, via Global Networks Switzerland 3.8002 2021-12-06 - Fix Makefile.PL to not consume arguments that my code doesn't know about but which are relevant to EU::MM (https://github.com/DrHyde/perl-modules-Number-Phone/pull/106) - Explicitly open databases read-only so it works on a RO filesystem (https://github.com/DrHyde/perl-modules-Number-Phone/issues/107) - Data updates 3.8001 2021-09-21 - Tweak build to use more compatible options to tar(1) so some really old tars can read the archive correctly 3.8000 2021-09-19 - Bugfix for numbers in local format which may be ambiguous for UK Crown Dependencies when using Number::Phone::Lib - Bugfix for when you ask for an object representing a number in one country but provide a number for a different country. This mostly affects countries that contain other jurisdictions squatting on parts of their number plan, such as the Vatican in the Italian plan, and the Crown Dependencies in the UK plan. It is now an error to ask for an object representing a number in a 'sub-country' which isn't valid in that sub-country (eg asking for a Jersey object but passing a Guernsey number); but if you ask for an object representing the 'super-country' but pass a 'sub-country' number you'll still get an object representing the sub-country. ie, say "gimme a GB object for this 'ere Guernsey number" and you'll get a Guernsey object. - Data updates 3.7003 2021-06-02 - Data updates; - Add deprecation warning for platforms with 32 bit int (support will go away some time after 2023-06-01 with no further warning) 2021-03-09 3.7002 Data updates 2021-02-04 3.7001 Data from OFCOM/CNAC/NPA/localcallingguide.com squirreled away during builds for greater reproducibility; Data updates 2020-12-04 3.7000 Bugfixes in dial_to for stubs and unallocated UK numbers; Windows doesn't properly support fork() so skip the tests for it; Minor documentation clarification re constructor; Stub classes shrunk by de-duping areanames; Kosovo appears to have fully switched to using its own country code; Option to build --without_uk and save disk space (see https://github.com/DrHyde/perl-modules-Number-Phone/issues/95); Correctly identify UK 04, 05[01234789], and 06 numbers as invalid, instead of valid but unallocated (fix arising from https://github.com/DrHyde/perl-modules-Number-Phone/issues/98); Use data from a tagged release of libphonenumber instead of whatever is in master, so builds are more reproducible, and expose that tag in libphonenumber_tag method; Expose OFCOM, CNAC, NPA and localcallingguide.com data update date/time in N::P::{UK,NANP::CA,NANP::US,NANP}->data_source; Data updates 2020-09-04 3.6006 Data updates 2020-06-06 3.6005 Data updates 2020-05-11 3.6004 Data updates; Improved doco on the data update policy :-) 2020-04-27 3.6003 Testing improvements for fork()ing code; Data updates 2020-03-09 3.6002 Data updates 2019-12-11 3.6001 Inmarsat +871 to +874 have been de-commissioned; Added some US overlay codes (not all are in use yet); Data updates 2019-09-12 3.6000 Data updates; UK is_drama() numbers now all respond appropriately to is_mobile, is_tollfree etc, and the mobile range is correctly identified as being UK-wide and not Jersey (see https://github.com/DrHyde/perl-modules-Number-Phone/issues/67); Areaname() sensitive to your locale 2019-06-11 3.5001 Corrected international dialling data for Antarctic research stations; Cleaned up Unicode-spoor in some US operators' names; Numerous new area codes in the US; Doco clarification re incomplete numbers; Data updates 2019-03-03 3.5000 Added operator data for almost all of the NANP; Data updates 2018-12-05 3.4006 Expose libphonenumber's IDD prefix regexes (see https://github.com/DrHyde/perl-modules-Number-Phone/pull/89); New NANP area codes for Jamaica and Canada; Data updates 2018-06-19 3.4005 Improved formatting of UK mobile and pager numbers (see https://github.com/DrHyde/perl-modules-Number-Phone/issues/75); Reinstate Kosovo squatting on +377, +381, and +386, as the change- over is apparently not yet complete; Data updates 2018-04-10 3.4004 We now have some data from libphonenumber for Kosovo (see https://github.com/DrHyde/perl-modules-Number-Phone/issues/66); Kosovo has migrated to +383 so get rid of the special cases in +377 etc; Bug-fix for when national prefix transforms apply (see https://github.com/DrHyde/perl-modules-Number-Phone/pull/87); N::P::Country::Data is now mostly built from libphonenumber (see https://github.com/DrHyde/perl-modules-Number-Phone/issues/34); Corrected the Vatican's area code within the Italian numbering plan; Added a special case for San Marino within the Italian numbering plan; Data updates 2018-02-03 3.4003 UK "protected" numbers should have false is_allocated(); Bugfix for countries that don't have area names (see https://github.com/DrHyde/perl-modules-Number-Phone/issues/64); Match libphonenumber's behaviour when countries have identical validators for fixed_line and mobile (see https://github.com/DrHyde/perl-modules-Number-Phone/issues/84); Accept numbers in some more unusual national dialling formats (see https://github.com/DrHyde/perl-modules-Number-Phone/issues/77); Recognise some more special rate numbers in Barbados and Bahamas (see https://github.com/DrHyde/perl-modules-Number-Phone/pull/86); Add format_for_country method; Data updates 2017-09-05 3.4002 Add new US and CA area codes; UK data is now in a normal data file instead of a humungous binary module; Re-open the UK database in children after forking (see https://github.com/DrHyde/perl-modules-Number-Phone/issues/72); UK data can be slurped into memory for faster access (but slow startup); Data updates 2017-07-02 3.4001 Added some nominally redundant dependencies (see https://github.com/DrHyde/perl-modules-Number-Phone/pull/68); UK "protected" numbers are now included; Data updates 2017-03-14 3.4000 Changed Kosovo's placeholder country-code from KOS to XK; +383 (Kosovo) is now a special-case for validation (see https://github.com/DrHyde/perl-modules-Number-Phone/issues/66); Data updates 2016-12-06 3.3000 Implemented is_drama (see https://github.com/DrHyde/perl-modules-Number-Phone/pull/61); NANP modules now know about is_tollfree, is_specialrate and is_personal; Number::Phone::Country will now warn that exporting is deprecated; Stubs and dial_to are no longer experimental; Minor doco improvements, including some from the Debian project (see https://github.com/DrHyde/perl-modules-Number-Phone/issues/60); Minor coverage improvements by getting rid of some redundant code paths; More comprehensive testing of stubs, and resulting bug-fixes for territories that appear as part of another's number plan, such as enormous Kazakhstan and tiny Tristan da Cunha; Data updates 2016-09-07 3.2001 Data updates 2016-06-05 3.2000 Bump version number because rpm is stupid and thinks 3.1 < 3.0014; Recognize Isle of Man (IM) free/special-rate numbers; Data updates 2016-03-04 3.1 Added the format_using() method and the ability to use third-party formatters, thanks to Michael Schout for the suggestion; Data updates 2015-12-08 3.0014 Deprecated APIs of being able to call most methods as class methods or functions instead of object methods have now been deleted; Remove unnecessary N::P::NANP->country method - the implementation in the superclass is sufficient; Data updates 2015-11-04 3.0013 Fix another bug in the tests which threw up misleading failures if a country-specific subclass was installed 2015-10-26 3.0012 Updated dialing prefixes in N::P::Country from Michael Gray; Fix broken code for is_specialrate in stubs, which previously always returned undef (ie unknown) even when libphonenumber knew it was eg premium rate (bug found by Gerhard Poul's PR 46); +44 3 numbers have is_specialrate set; Fix bug where Number::Phone::Country would get re-set to 'UK' mode instead of the ISO-ly correct 'GB' mode; Data updates. 2015-09-09 3.0011 Data updates 2015-07-20 3.0010 Fix a minor bug in the tests which were throiwing up misleading failures if a country-specific subclass was installed 2015-07-18 3.0009 Data updates; Heard Island has nothing to do with the Marshall Islands! Don't create stub objects when given just a country code (see https://github.com/DrHyde/perl-modules-Number-Phone/issues/40) 2015-06-05 3.0008 Turn on the utf-8 flag on areacode names; Data updates 2015-03-13 3.0007 Mostly just updated data from Google and OFCOM; Announced approximately quarterly release schedule 2014-12-03 3.0006 Updated country codes and access codes for some French overseas departments and ex-Soviet countries; Fix bug confusing Georgia (GE) and South Georgia (GS); 2014-11-25 3.0005 Bugfix for stubs of countries with no national dialing code. 2014-11-24 3.0004 Mailing list for users created; Bugfixes for Curacao, Svalbard; Bugfixes for stubs of countries where numbers can begin with the national dialling prefix, eg Russia, where the prefix is 8 but area codes like 812 exist; New UK allocations 2014-09-04 3.0003 Bugfix: N::P->new("CC", 0...") now works (where 0 is the national dialling prefix); New UK allocations 2014-08-22 3.0002 Be more consistent when formatting UK numbers for which we have incomplete data from OFCOM,, no matter how they're instantiated; New UK allocations 2014-06-17 3.0001 Make N::P::UK->format() cope better when OFCOM don't tell us how long 08 numbers are; New UK allocations 2014-04-25 3.0 Add Number::Phone::Lib, a libphonenumber-compatible subclass. This lacks some functionality but is considerably faster (for UK numbers) and compatible (for non-geographic NANP numbers); Add some new CA/US area codes; Add more GMSS codes; Use libphonenumber data for some NANP countries (some have dodgy data*) for is_mobile, is_fixed_line * Some countries have duplicate regexes for fixed_line/mobile in libphonenumber, and others have regexes that match the same data 2014-04-15 2.2003 Bugfix to tighten up length checking for unallocated UK numbers; New UK allocations 2013-07-04 2.2002 New UK allocations 2012-11-29 2.2001 Bugfix to avoid using broken third-party Number::Phone::* modules that aren't proper sub-classes; New UK allocations 2012-11-21 2.2 Bugfix stub countries to not have random \ in area names; Minor doco fix "from Number::Phone::UK, it would return DE" is obviously wrong; Some stuff in stubs for the breakup of the Dutch colonies in the Caribbean; New UK allocations; Documentation (and stub implementation in superclass) for new operator_ported() method; New dial_to() method; Much doco improvement; Switch to DBM::Deep 2 for UK data, to fix Windows test failures, see eg http://tinyurl.com/n-p2-1fail; 2012-10-30 2.1 Fix so we don't die trying to parse Inmarsat and other non-country entities, see https://github.com/DrHyde/perl-modules-Number-Phone/issues/8 2012-10-30 2.0002 Fixed how we extract patterns of leading digits for number formats from libphonenumber, see https://github.com/DrHyde/perl-modules-Number-Phone/issues/7; Added some minimal tests for this; Import from libphonenumber 2012-10-27 2.0001 New UK allocations, import from libphonenumber and OFCOM 2012-01-29 2.0 Fix nasty bug in formatting unallocated UK numbers; Sint Maarten (SX) moved from +599 5 to +1 721; UK formatting improved for 3+7 and 2+8 formats; Isle of Man (IM), Guernsey (GG) and Jersey (JE) now sort-of treated as countries; The minimal objects returned when there's no detailed country-specific module available are far more intelligent, thanks to libphonenumber's data; New UK allocations; Deprecated ridiculous ways of calling most methods; 2011-10-29 1.9 New UK allocations; Use libphonenumber's data for N::P::Country; Use libphonenumber's data for N::P::NANP areanames 2011-08-18 1.8006 Add South Sudan (SS, +211) to N::P::Country; New UK allocations 2011-08-05 1.8005 Include tests for bugfix in distro 2011-08-05 1.8004 Bugfix for divining country code from subclasses; New UK allocations 2011-07-19 1.8003 UK parser made a teensy bit more robust; UK parser bugfixed for 01768 88 mixed length stupidity New UK allocations 2011-07-08 1.8002 New UK allocations; Numerous small changes in Number::Phone::Country Tidying number ranges in Mayotte; Minor bugfix for Mayotte; Gibraltar can't be called in the Spanish numbering scheme any more; Ellipsos satcomms have gone away; Kazakhstan has +76 and +77 instead of random bits all over +7; Western Sahara number ranges identified; Kosovo (no ISO3166 country code yet, so I'm temporarily using KOS, as used by the UN Development Programme, see wikipedia://List_of_UNDP_country_codes); Canada and the US have some new codes; Netherlands Antilles are splitting up; Dominican Republic now has +1 849; 2011-05-20 1.8001 New UK allocations 2010-09-12 1.8 INCOMPATIBLE CHANGE: constructor will now return a minimal object instead of undef if there's no country-specific module available New UK allocations 2010-07-05 1.7101 Bugfix for N::P->new('CC', '+NN12345'); 2010-07-02 1.7100 Bugfix for N::P->new('CC', '12345'); New UK allocations 2010-02-17 1.7004 New UK allocations; UK geographic numbers are no longer assumed to be fixed lines - damn those VoIP providers! 2009-10-18 1.7003 Minor bugfix, see https://rt.cpan.org/ ticket 48581; New UK allocations 2009-04-22 1.7002 Fix minor bug (...::UK constructor returning 0 instead of undef for (some?) invalid numbers, reported by Tomasz Chomiuk; New UK allocations 2009-03-04 1.7001 Kill warnings about GE being deprecated; Add missing dep on Digest::MD5 2009-02-26 1.7 Fix formatting for valid but unallocated UK numbers; One of the UK telcos whose name we check for in tests renamed itself; New UK allocations; Added country-to-code and national/international prefix data to N::P::C, thanks to Michael Schout 2008-05-27 1.6 Magic country detection now works (thanks to Jos Boumans for reporting the bug); New UK allocations 2008-02-27 1.581 Added dependency on perl 5.006 (DBM::Deep uses 'our'); Removed docs from N::P::UK::DBM::Deep and replaced with note about its status; New UK allocations; Removed t/pod* temporarily 2007-06-01 1.58 Number::Phone::Country updated to reflect KM/YT split Mayotte moved into parts of +262, so now shares with Reunion instead of Comoros New UK allocations (in particular 03 range) 2007-03-13 1.57 New UK allocations; Bundle DBM::Deep cos old version is incompatible 2007-02-24 1.5601 New UK allocations 2006-12-08 1.56 New UK allocations; Updated OFCOM parser; Loads of Number::Phone::Country updates - +1: NANP overlays: 226, 438, 762, 769, 829; +269: Split Mayotte/Comores; +381/2: Yugoslavia's *still* breaking up! (RS and ME); +61 89162/4: Cocos and Christmas islands +672 3: Norfolk Island +672 1 0/1/2/3: Australian Antarctic bases +681: Wallace and Futuna (corrected CCTLD) +881 0: ICO Global +881 3: Ellipso +881 6: Iridium +881 7: Iridium +881 8: Globalstar 2006-08-25 1.55 Damnit, 1.54's ...UK->location() was wrong 2006-08-24 1.54 And again! 2006-08-23 1.53 Doh! How we loaded location data was buggy 2006-08-23 1.52 Documentation patches; Corrected CHANGELOG entry for v1.51; Added location data for the UK 2006-08-22 1.51 Updated UK data to access DATA filehandle directly, which depends on DBM::Deep 0.97 and above. This saves even more memory and makes the module load a lot faster; New UK allocations; Some improvements and fixes in OFCOM data parser; Bug fixes :-( for UK numbers with a significant F digit 2005-10-16 1.5 UK data moved into an embedded DBM::Deep structure to save memory (NB: this adds dependencies) Added location() method 2005-10-11 1.4004 New UK allocations Removed 'use warnings' and 'use diagnostics' because they pointlessly require a later version of perl; re the above, tests now all use -w instead 2005-08-23 1.4003 Updated N::P::Country to use CS instead of YU for Yugoslavia (ISO 3166 has been updated) Fixed non-US and non-CA countries in N::P::Country's phone2country_and_idd function (BUGFIX) New UK allocations 2005-08-02 1.4002 New UK allocations 2005-06-27 1.4001 Added phone2country_and_idd to N::P::Country new UK allocations etc 2005-05-18 1.4 updated Number::Phone::Country to remove American Samoa's +684 code, it has migrated to +1 684 in the NANP N::P::C now correctly identifies US numbers doesn't just assume a NANP number is US if it's not assigned to another country N::P::C no longer uses N::P::C added missing countries some tidying in N::P::C's tests N::P->country now defaults to returning current country some tidying in N::P base class new UK number allocations UK data file now has version number (autogen from date) UK data fixed for numbers "Allocated for Migration only" Added NANP class and NANP::XX subclasses 2005-04-12 1.3004 new UK number allocations removed 'use diagnostics' 2004-12-05 1.3003 new UK number allocations 2004-11-26 1.3002 OFCOM's UK data had some spurious spaces in numeric fields, which broke some 070 numbers, these are now filtered out 2004-11-10 1.3001 new UK number allocations 2004-10-20 1.3 Added note about number portability in UK module. Added areaname() method to interface definition and an implementation in the UK module. Defined translates_to() method in superclass. Added Number::Phone::Country to distribution. This was previously maintained by T.J.Mather. 2004-10-13 1.2001 No code changes, just new UK number allocations 2004-09-22 1.2 Oops, forgot to add is_ipphone to docs for N::P::UK last time. Updated N::P::UK::Data with some new number ranges. 2004-09-15 1.1 Number::Phone::UK now implements is_ipphone, and N::P::UK::Data has appropriate data in it, as OFCOM have this week publishedthe allocations they made a few weeks ago. Removed is_voip() alias, it didn't work properly under all the possible ways of invoking it.