GNU Libidn is an implementation of the Stringprep, Punycode, and IDNA specifications defined by the IETF Internationalized Domain Names (IDN) working group. It is used to prepare internationalized strings (such as domain name labels, usernames, and passwords) in order to increase the likelihood that string input and string comparison work in ways that make sense for typical users throughout the world. The library contains a generic Stringprep implementation that does Unicode 3.2 NFKC normalization, mapping and prohibition of characters, and bidirectional character handling. Profiles for iSCSI, Kerberos 5, Nameprep, SASL, and XMPP are included. Punycode and ASCII Compatible Encoding (ACE) via IDNA are supported.


Libraries were re-licensed from LGPLv2+ to dual GPLv2+ and LGPLv3+. Parallel Windows builds were fixed. A potential infinite loop in pr29 code was fixed. The 'stringprep_ucs4_nfkc_normalize' function now has a const keyword. Glib NFKC code was synced and the copyright/license statements improved. Gnulib files were updated.