GNU Libidn 0.2.0 alpha
GNU Libidn is an implementation of the Stringprep, Punycode and
IDNA specifications defined by the IETF Internationalized Domain
Names (IDN) working group, used for internationalized domain names.
The package is available under the GNU Lesser General Public
License.
The library contains a generic Stringprep implementation that
does Unicode 3.2 NFKC normalization, mapping and prohibitation 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.
The Stringprep API consists of two main functions, one for
converting data from the system’s native representation into UTF-8,
and one function to perform the Stringprep processing. Adding a new
Stringprep profile for your application within the API is
straightforward. The Punycode API consists of one encoding function
and one decoding function. The IDNA API consists of the ToASCII and
ToUnicode functions, as well as an high-level interface for
converting entire domain names to and from the ACE encoded
form.
The library is used by, e.g., GNU SASL and Shishi to process
user names and passwords. Libidn can be built into GNU Libc to
enable a new system-wide getaddrinfo() flag for IDN processing.
Libidn is developed for the GNU/Linux system, but runs on over
20 platforms including most major Unix platforms and Windows, and
many kind of devices including iPAQ handhelds and S/390 mainframes.
Libidn is written in C and (parts of) the API is accessible from C,
C++, Emacs Lisp, Python and Java.
The project web page:
http://www.gnu.org/software/libidn/
For more information see:
http://www.ietf.org/html.charters/idn-charter.html
http://www.ietf.org/rfc/rfc3454.txt
(stringprep specification)
http://www.ietf.org/rfc/rfc3490.txt
(idna specification)
http://www.ietf.org/rfc/rfc3491.txt
(nameprep specification)
http://www.ietf.org/rfc/rfc3492.txt
(punycode specification)
Further information and paid contract development: Simon
Josefsson <[email protected]>
GNU Libidn can be downloaded from:
TAR.GZ source code:
ftp://alpha.gnu.org/pub/gnu/libidn/libidn-0.2.0.tar.gz
OpenPGP signature of TAR.GZ source code: ftp://alpha.gnu.org/pub/gnu/libidn/libidn-0.2.0.tar.gz.asc
The fingerprint of the key used to sign releases is 0xB565716F
and should be available from OpenPGP key servers.
Noteworthy changes since version 0.1.5 (the last version that
was announced on info-gnu):
- Version 0.2.0 (released 2003-06-19)
- Unicode code point data is now uint32_t, defined in
“idn-int.h”. A header file “idn-int.h” is generated and installed
to make sure the “uint32_t” data type is available on all
platforms. The reason for this change is that on 64-bit platforms,
the application was required to convert 32 bit integers (which is
how Unicode code points are typically represented) into 64 bit
integers before calling libidn functions. - New idna_*() functions have improved flags handling. The
allowunassigned and usestd3asciirules parameters were collapsed
into a flags parameter, that can take on the IDNA_ALLOW_UNASSIGNED
and IDNA_USESTD3ASCII_RULES values. This
allows for easier extensions to support, e.g., Unicode 4.0 or
RFC 952
ASCII rules checking. Note that the old entry points are unmodified
(in this regard), and new entry points with this modification were
added. - The manual was moved into a separate directory doc/.
- Bugfixes.
- API and ABI is not backwards compatible. In punycode.h and
stringprep.h the “unsigned long” data type was changed into
“uint32_t”, which cause a API and ABI missmatch. For idna.h, the
old entry points that used “unsigned long” still exist, and new
entry points that uses “uint32_t” was added. To update your
application, you probably only need to change “unsigned long” to
“uint32_t”. As a result of these changes, the shared object version
has been increased.
- Unicode code point data is now uint32_t, defined in
- Version 0.1.15 (released 2003-06-07)
- Bugfixes.
- API and ABI is backwards compatible with the previous
version.
- Version 0.1.14 (released 2003-05-10)
- Experimental documentation generation in contrib/doxygen/.
Simply invoke “doxygen” in that directory and it should build the
documentation. - Lisp API bug fixes.
- API and ABI is backwards compatible with the previous
version.
- Experimental documentation generation in contrib/doxygen/.
- Version 0.1.13 (released 2003-03-13)
- Unfinished Java *.class files implementing the libidn API. See
the contrib/java/ directory. It is implemented using the Java
Native Interface, and light initial testing indicate
interoperability between GCJ, IBM’s JDK and Sun’s JDK. - Building is now silent when gengetopt is not present.
- Bug fixes.
- API and ABI is backwards compatible with the previous
version.
- Unfinished Java *.class files implementing the libidn API. See
- Version 0.1.12 (released 2003-03-06)
- Building libidn doesn’t require gengetopt. Warnings are still
printed though. Gengetopt will be replaced by argp eventually. - Command line tool “idn” supports stringprep too.
- New stringprep API entry point: stringprep_profile(). It takes
a name of the stringprep profile as an argument instead of the
stringprep table structure. - stringprep_*.h are deprecated and will be removed in the
future. All symbols have been moved to stringprep.h. The reasons
are that (1) the files typically only defined one CPP macro and
exported one symbol definition, which is wasteful as it generates
too much work in the manual, and (2) using one header file for all
profiles allows easier access to all stringprep profiles during
runtime. Note that the files are still installed, but they only
#include stringprep.h now, for backwards compatibility. - GNU Libc add-on build instructions updated to GNU Libc
2.3.2. - SASLprep stringprep profile added.
- An online interface to libidn written in PHP added to
contrib/web/. - API and ABI is backwards compatible with the previous
version.
- Building libidn doesn’t require gengetopt. Warnings are still
- Version 0.1.11 (released 2003-02-26)
- Command line application “idn” is included. A simple wrapper
around the library that allows you to invoke punycode
encoding/decoding and IDNA ToASCII/ToUnicode on the command
line. - Emacs Lisp interface for punycode and IDNA included. See
punycode.el and idna.el. - API and ABI is backwards compatible with the previous
version.
- Command line application “idn” is included. A simple wrapper
- Version 0.1.10 (released 2003-02-21)
- idna_*_to_ace() and idna_*ace_to_*() are deprecated in favor
of - idna_to_ascii_from_*() and idna_to_unicode_*_from_*()
respectively. The reason was that the old interfaces did not accept
the AllowUnassigned and UseSTD3ASCIIRules flags. Note that the old
functions are not removed, but will be in the future. - IPS iSCSI stringprep profile added.
- A new contrib/ directory added. Currently it contains a Python
interface to Libidn, contributed by Stephane Bortzmeyer. - idna.h and punycode.h are now installed by “make install”.
- API and ABI is backwards compatible with the previous
version.
- idna_*_to_ace() and idna_*ace_to_*() are deprecated in favor
- Version 0.1.9 (released 2003-02-20)
- SASL ANONYMOUS “plain” stringprep profile added.
- XMPP nodeprep profile fixed.
- API and ABI is backwards compatible with the previous version.
For future releases, the NEWS entry will specifically mention
whether the C header API or library ABI backwards compatibility is
affected.
- Version 0.1.8 (released 2003-02-14)
- Portability fixes. This includes not building the API Reference
Manual with GTK-DOC by default, if you want it use configure
parameter –enable-gtk-doc after making sure your gtkdoc-mkdb
accept the –tmpl-dir parameter. - The type for string length variables is now (s)size_t.
Unfortunately this means binary shared library binary backwards
compatible is lost. - New nameprep test vectors.
- Portability fixes. This includes not building the API Reference
- Version 0.1.7 (released 2003-02-12)
- Uses official IDNA ACE prefix.
- Version 0.1.6 (released 2003-02-11)
- Uses tentative IDNA ACE prefix.
- Added XMPP Node/Resource Identifiers stringprep profiles.
- Fixed prohibited character checks for bidi.