PHP RFC: Deprecate and remove INTL_IDNA_VARIANT_2003


As of ICU 55.1 (released 2015-04-01) the IDNA2003 APIs are deprecated, because UTS #46 should be preferred over the obsolete IDNA 2003 variant. However, the intl extension still uses INTL_IDNA_VARIANT_2003 as default for idn_to_ascii() and idn_to_utf8(), which should be changed as soon as possible.


Therefore I suggest the following procedure:

  • PHP 7.2: deprecate INTL_IDNA_VARIANT_2003
  • PHP 7.4: change the default of idn_to_ascii()'s and idn_to_utf8()'s $variant parameter to INTL_IDNA_VARIANT_UTS46
  • PHP 8.0: remove support for INTL_IDNA_VARIANT_2003 altogether

Backward Incompatible Changes

Obviously, code explicitly using INTL_IDNA_VARIANT_2003 would break (during PHP 7 only with regard to triggering a deprecation notice), and code relying on the default variant might break (however, it might be “magically” fixed as well).

RFC Impact

Besides the obvious behavioral changes to idn_to_ascii() an idn_to_utf8() there is no further impact on SAPIs, extensions or OPcache.

Open Issues

None, yet.

Proposed Voting Choices

Whether to implement the proposal above, or not.

This RFC requires a 2/3 majority.

Patches and Tests

I have not developed a patch yet, but are planning to do so before voting starts.


After the project is implemented, this section should contain

  1. the version(s) it was merged to
  2. a link to the git commit(s)
  3. a link to the PHP manual entry for the feature
  4. a link to the language specification section (if any)


Links to external references, discussions or RFCs

Rejected Features

Keep this updated with features that were discussed on the mail lists.

rfc/deprecate-and-remove-intl_idna_variant_2003.txt · Last modified: 2017/01/08 14:48 by cmb