[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

GNU Libidn 0.2.0 alpha released

From: Simon Josefsson
Subject: GNU Libidn 0.2.0 alpha released
Date: Thu, 19 Jun 2003 20:01:57 +0200
User-agent: Gnus/5.1003 (Gnus v5.10.3) Emacs/21.3.50 (gnu/linux)

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:

For more information see: (stringprep specification) (idna specification) (nameprep specification) (punycode specification)

Further information and paid contract development:
Simon Josefsson <address@hidden>

GNU Libidn can be downloaded from:

TAR.GZ source code:

OpenPGP signature of TAR.GZ source code:

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

** 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_USE_STD3_ASCII_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.

* 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

** Lisp API bug fixes.

** API and ABI is backwards compatible with the previous version.

* 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.

* 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

** 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.

* 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.

* 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.

* 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.

* 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.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]