   _        ___  ____ ____  ____                _     _
  |_|_ _   / _ \/ ___/ ___||  _ \   _   _ _   _(_) __| |
  _|_||_| | | | \___ \___ \| |_) | | | | | | | | |/ _` |
 |_||_|_| | |_| |___) |__) |  __/  | |_| | |_| | | (_| |
  |_|_|_|  \___/|____/____/|_|      \__,_|\__,_|_|\__,_|

  OSSP uuid - Universally Unique Identifier

  CHANGELOG

  This is a list of all changes to OSSP uuid.
  For a more brief summary please have a look at the NEWS file.

  Changes between 1.6.0 and 1.6.1 (19-May-2007 to 21-Feb-2008)

   o Port to Win32 API.
     [Hiroshi Saito, Wu Yongwei, Ralf S. Engelschall]

   o Adjust copyright messages for new year 2008.
     [Ralf S. Engelschall]
   
   o Fix __VA_COPY_USE_{CSP,CPP} fallback macros for va_copy.
     [Mark A. Lindner <mark.a.lindner@gmail.com>]

   o PostgreSQL bindings: use SET_VARSIZE() instead
     of assigning to bytea->v_len under PostgreSQL >= 8.3
     [Ralf S. Engelschall]

   o Upgrade build environment to GNU libtool 1.5.26
     [Ralf S. Engelschall]

  Changes between 1.5.1 and 1.6.0 (31-Jul-2006 to 19-May-2007)

   o Expand unused "datarootdir" in Makefile.in and uuid-config.in to
     make newer GNU autoconf versions happy.
     [Ralf S. Engelschall]

   o Upgrade build environment to GNU shtool 2.0.7
     [Ralf S. Engelschall]

   o Make GNU autoconf procedure of PHP binding more robust by using
     -Wl,-Bsymbolic only on platforms where uuid_create(3) actually
     exists and where -Wl,-Bsymbolic is really accepted by the tool
     chain. This especially unbreaks MacOS X.
     [Ralf S. Engelschall]

   o Fix "uuid_export" function in PHP bindings under
     UUID_FMT_SIV, UUID_FMT_STR and UUID_FMT_TXT where the
     NUL-termination character should be not passed back to PHP.
     [Neil Caunt <retardis@gmail.com>, Ralf S. Engelschall]

   o Adjust copyright messages for new year 2007.
     [Ralf S. Engelschall]

   o Upgrade build environment to GNU autoconf 2.61
     [Ralf S. Engelschall]

   o Disable PostgreSQL "(CSTRING AS uuid)" and "(uuid AS CSTRING)"
     CASTS as PostgreSQL 8.2 and higher explicitly disallow this.
     [David Wheeler <david@kineticode.com>, Ralf S. Engelschall]

   o Fix PostgreSQL bindings by mapping the correct DSO symbol
     to the functions "uuid_send" and "uuid_recv".
     [Ralf S. Engelschall]

   o Silence PostgreSQL processing messages
     [David Wheeler <david@kineticode.com>]

   o Support MacOS X (aka Darwin) in PostgreSQL bindings by passing
     a "-bundle_loader" option to the linker in order to resolve the
     "undefined symbols" problem.
     [David Wheeler <david@kineticode.com>, Ralf S. Engelschall]

   o Pass the correct type to PostgreSQL's errmsg().
     [David Wheeler <david@kineticode.com>, Ralf S. Engelschall]

   o Added PostgreSQL 8.2 PG_MODULE_MAGIC support.
     [David Wheeler <david@kineticode.com>]

   o Fix the Data::UUID::to_b64string() function of the Perl backward
     compatibility API: an empty string was not supplied as the EOL
     marker to MIME::Base64::encode_base64() and hence the returned
     string ended with a newline character (which in turn breaks many
     applications using Data::UUID).
     [Piotr Roszatycki <dexter@debian.org>]

   o Change type of "data_ptr" argument in uuid_export() API signature
     from "void **" to "void *" as there is unfortunately no
     "generic pointer to pointer type" in ISO C (see also
     http://c-faq.com/ptrs/genericpp.html) and "void **" is just a
     "pointer to a 'void *'".
     
     The "void **" especially had the nasty side-effect that it breaks
     strict pointer aliasing rules of ISO C and hence would require
     fiddling with temporary variables on all uuid_export() calls if
     one would be 100% correct and avoid aliasing related compiler
     warnings. Instead, as uuid_export() internally has to cast the
     "data_ptr" to the particular expected type anyway, it is better
     to have "data_ptr" just be a really generic "void *" in the API
     signature.
     
     Keep in mind that although this is an API change, it doesn't cause
     any incompatibilities as the function still expects the same
     "pointer to a pointer of a particular type". This expected pointer
     is just now passed the more correct although less intuitive way.
     [Hrvoje Niksic <hniksic@xemacs.org>, Ralf S. Engelschall]

   o Optional DMALLOC based memory debugging support.
     [Ralf S. Engelschall]

   o Consistently include "uuid_ac.h" in all source files to have GNU
     autoconf results and standard system defines available everywhere.
     [Ralf S. Engelschall]

  Changes between 1.5.0 and 1.5.1 (28-Jul-2006 to 31-Jul-2006)

   o Use "MODULE_PATHNAME" instead of "@MODULE_PATHNAME@" in
     uuid.sql.in to be more aligned to the PostgreSQL styles.
     [Simon "janus" Dassow <janus@errornet.de>]

   o Use the available variables $(LIB_NAME), $(DCE_NAME) and
     $(CXX_NAME) more consistently in Makefile.in to allow packagers to
     override the library name with less patching.
     [Piotr Roszatycki <dexter@debian.org>]

   o Fix the "make distclean" target of php/Makefile.local
     to make sure the ".deps" file is not left over.
     [Ralf S. Engelschall]

   o Fix the tarball rolling procedure to make sure we
     do not distribute binary files again. This now especially uses
     a MANIFEST file which explicitly lists all files which form the
     distribution tarball. We compare the tarball and the MANIFEST file
     for differences in the "devtool dist" now.
     [Ralf S. Engelschall]

  Changes between 1.4.2 and 1.5.0 (13-Mar-2006 to 28-Jul-2006)

   o Fixed potential memory leak in uuid_create() as spotted by SPLINT.
     [Ralf S. Engelschall]

   o Cleanup source code according to complains by SPLINT.
     [Ralf S. Engelschall]

   o Cleanup internal uuid_mac.h header.
     [Ralf S. Engelschall]
   
   o Numerous fixed to the error handling in the PostgreSQL bindings.
     [Neil Conway <neilc@samurai.com>]

   o Add Hash indexing support UUID data type of PostgreSQL bindings.
     [Ralf S. Engelschall]

   o Add comparison operators and B-Tree indexing support UUID data
     type of PostgreSQL bindings.
     [Roman Neuhauser <neuhauser@sigpipe.cz>]

   o Fix PHP bindings: the wrong argument to uuid_create()
     was forced to a reference
     [Roman Neuhauser <neuhauser@sigpipe.cz>]

   o Add full support for Single Integer Value (SIV) UUID representation
     for both importing and exporting in C/C++/Perl/PHP APIs.
     [Ralf S. Engelschall]
   
   o Upgrade build environment to GNU shtool 2.0.6 and GNU autoconf 2.60
     [Ralf S. Engelschall]

   o Added an "OVERVIEW" file which tries to give the "big picture"
     about UUIDs and allows to survice during the nasty UUID bit fiddling.
     [Ralf S. Engelschall]

   o Replaced "clock_seq_and_reserved" with
     "clock_seq_high_and_reserved" in uuid.pod to already reflect the
     description in the forthcoming RFC.
     [Ralf S. Engelschall]

   o Speed up processing in uuid_str.c by reducing va_copy() calls from
     two to just one per formatting.
     [Ralf S. Engelschall]

  Changes between 1.4.1 and 1.4.2 (07-Feb-2006 to 13-Mar-2006)

   o Fix uuid_export() function by fixing the internal
     uuid_s[ar]printf() functions which require the backup of va_list
     arguments between subsequent processing.
     [Ralf S. Engelschall, Thomas Lotterer <thomas@lotterer.net>]

   o Fix Perl API's "export" function by not taking over NUL-termination
     character under UUID_FMT_TXT.
     [Thomas Lotterer <thomas@lotterer.net>]
   
   o Declare "install", "uninstall" and "clean" make(1) targets
     ".PHONY". This especially workarounds problems on case insensitive
     filesystems (like MacOS X' filesystem) where the "INSTALL" document
     conflicts with the "install" target.
     [Ralf S. Engelschall, David Wheeler <david@kineticode.com>]

  Changes between 1.4.0 and 1.4.1 (15-Jan-2006 to 07-Feb-2006)

   o Upgrade to GNU shtool 2.0.5
     [Ralf S. Engelschall]

   o Apply workaround to uuid.h to avoid conflicts with
     vendor UUID implementations where uuid_t (Darwin/MacOSX)
     or uuid_create/uuid_compare (POSIX) might exist.
     [Ralf S. Engelschall]

  Changes between 1.3.2 and 1.4.0 (06-Dec-2005 to 15-Jan-2006)

   o Created a top-level Perl ExtUtils::MakeMaker wrapper script
     [Ralf S. Engelschall]

   o Adjust copyright messages for new year 2006.
     [Ralf S. Engelschall]

   o Added experimental PostgreSQL bindings.
     [Ralf S. Engelschall]

   o Fixed documentation of uuid_make() function.
     [Ralf S. Engelschall]

   o Upgrade build environment to GNU libtool 1.5.22
     [Ralf S. Engelschall]

  Changes between 1.3.1 and 1.3.2 (24-Sep-2005 to 06-Dec-2005)

   o Cleaned up and speed optimized perl/uuid_compat.pm
     (the Data::UUID compatibility module for Perl)
     [David Wheeler <david@justatheory.com>]

   o Upgrade to GNU shtool 2.0.3
     [Ralf S. Engelschall]
   
   o Consistently use "return" in uuid++.cc
     [Ralf S. Engelschall]

  Changes between 1.3.0 and 1.3.1 (02-Sep-2005 to 24-Sep-2005)

   o Fix two incorrect casts, detected by compiling the C code
     under C++ constraints.
     [Ralf S. Engelschall]

   o Remove a compiler warning in the PHP bindings.
     [Ralf S. Engelschall]

   o Plug memory leak in PRNG sub-library.
     [Ralf S. Engelschall]

   o Add VPATH/srcdir support for at the default 
     build procedure plus at least C++ and DCE build options.
     [Ralf S. Engelschall]

  Changes between 1.2.1 and 1.3.0 (30-Aug-2005 to 02-Sep-2005)

   o Add an experimental PHP 4/5 language API binding which
     can be enabled under build-time with opption --with-php.
     [Ralf S. Engelschall]
   
   o Upgrade to GNU libtool 1.5.20
     [Ralf S. Engelschall]

   o Add missing "const" in manual page.
     [Ralf S. Engelschall]

   o Add an experimental C++ API binding which can be 
     enabled under build-time with option --with-cxx.
     [Ralf S. Engelschall]

   o Cleanup the internals of the uuid_create() function and
     add a new corresponding uuid_clone() API function.
     [Ralf S. Engelschall]

   o Cleanup some Makefile parts.
     [Ralf S. Engelschall]

   o Added a pkg-config(1) specification uuid.pc which is also
     installed by default in addition to the old-style uuid-config tool.
     [Ralf S. Engelschall]

   o Added optional Data::UUID backward compatibility Perl API which can
     be enabled with the build-time option --with-perl-compat.
     [Piotr Roszatycki <dexter@debian.org>, Ralf S. Engelschall]

   o Add a functionality-reduced TIE-style Perl API OSSP::uuid::tie,
     intended for very high-level convenience programming.
     [Ralf S. Engelschall]

   o Reference the new officially published RFC 4122.
     [Ralf S. Engelschall]

  Changes between 1.2.0 and 1.2.1 (23-Jan-2005 to 30-Aug-2005)

   o Add SEEALSO document which references all known
     UUID implementations.
     [Ralf S. Engelschall]

   o Improve the PRNG in case no stronger system PRNG device is
     available by passing time and rand(3) based entropy into the MD5
     one-way hash function to achieve at least some sort of weaker PRN data.
     [Ralf S. Engelschall]

   o Fix MAC address determination under Solaris by using the result of
     ioctl(...,SIOCGARP,...) only if arp_flags had ATF_COM set.
     [Ralf S. Engelschall]

   o Upgrade to GNU libtool 1.5.18 and GNU shtool 2.0.2.
     [Ralf S. Engelschall]

   o Cleanup the source code even more by following a large
     set of FlexeLint's suggestions.
     [Ralf S. Engelschall]

   o Fixed generated "section" number in uuid-config(1).
     [Piotr Roszatycki <dexter@debian.org>]

  Changes between 1.1.2 and 1.2.0 (13-Jan-2005 to 23-Jan-2005)

   o Added support for new version 5 UUIDs (name-based, SHA-1)
     according to latest draft-mealling-uuid-urn-05.txt.
     [Ralf S. Engelschall]

   o Reference new ISO/IEC 9834-8:2004 / ITU-T Rec. X.667 2004 standard
     and latest IETF draft-mealling-uuid-urn-05.txt.
     [Ralf S. Engelschall]

  Changes between 1.1.1 and 1.1.2 (18-Nov-2004 to 13-Jan-2005)

   o Fix generation of v3 UUIDs by adding support for 64-bit platforms
     to the underlying uuid_md5.c code (which internally is based on
     the RFC reference code which in turn assumes a 32-bit environment).
     [Ralf S. Engelschall, Piotr Roszatycki <Piotr_Roszatycki@netia.net.pl>]

   o Optimize internal md5_store() function by directly finalizing MD5
     calculation on buffer copy instead of finalizing original buffer
     and having to restore it from the buffer copy.
     [Ralf S. Engelschall]

   o Adjust copyright messages for new year 2005.
     [Ralf S. Engelschall]

   o Do not rebuild the Perl API if there were no actual changes.
     [Ralf S. Engelschall]

  Changes between 1.1.0 and 1.1.1 (03-Nov-2004 to 18-Nov-2004)

   o Apply the FreeBSD libc uuid_create() related workaround
     in the Perl bindings also under FreeBSD 6.0-CURRENT. 
     [Ralf S. Engelschall]

   o Fix --with-perl configure option processing: Perl is
     only required if --with-perl is used although we search for Perl
     always in order to provide the PERL variable substitution.
     [Ralf S. Engelschall]

  Changes between 1.0.4 and 1.1.0 (16-Oct-2004 to 03-Nov-2004)

   o Add --with-perl configure option for optionally enabling
     the Perl language bindings.
     [Ralf S. Engelschall]

   o Add Perl language bindings providing both a C-style and OO-style API.
     [Ralf S. Engelschall]

  Changes between 1.0.3 and 1.0.4 (15-Oct-2004 to 16-Oct-2004)

   o Fix version detection from uuid_vers.h
     [Ralf S. Engelschall]

  Changes between 1.0.2 and 1.0.3 (12-Sep-2004 to 15-Oct-2004)

   o Support configuring/building/installing from an arbitrary
     directory via srcdir/top_srcdir/VPATH.
     [David Lee <t.d.lee@durham.ac.uk>, Ralf S. Engelschall]

   o Upgrade build environment to GNU libtool 1.5.10.
     [Ralf S. Engelschall]

  Changes between 1.0.1 and 1.0.2 (16-Jul-2004 to 12-Sep-2004)

   o Upgrade build environment to GNU libtool 1.5.8 and GNU shtool 2.0.1
     [Ralf S. Engelschall]

  Changes between 1.0.0 and 1.0.1 (16-Feb-2004 to 16-Jul-2004)

   o Made documentation of uuid_export() more clear.
     [Ralf S. Engelschall]

   o Upgrade build environment to GNU libtool 1.5.6 and GNU shtool 2.0.0
     [Ralf S. Engelschall]

   o Remove some warnings occurring under GCC 3.5
     [Ralf S. Engelschall]

  Changes between 0.9.7 and 1.0.0 (13-Feb-2004 to 16-Feb-2004)

   o Replace remaining (old) UUID_VERSIONX names with UUID_MAKE_VX
     in the documentation (uuid.pod).
     [Ralf S. Engelschall]

   o Resolve namespace conflicts with GCC 3.4 internal pow10() and round()
     functions within uuid_str.c.
     [Ralf S. Engelschall]

   o Fix buffer handling in "uuid_export(..., UUID_FMT_TXT, vp, ...)" in
     case "vp" is not NULL.
     [Fuyuki <fuyuki@nigredo.org>]

  Changes between 0.9.6 and 0.9.7 (11-Feb-2004 to 13-Feb-2004)

   o remove --with-rfc2518 option and functionality because
     even the IETF/IESG has finally approved our report about the broken
     random multicast MAC address generation in the standard (and
     will fix it in new versions of the draft-mealling-uuid-urn). So,
     finally get rid of this broken-by-design backward compatibility
     functionality.
     [Ralf S. Engelschall]

   o Add support to uuid(1) CLI for decoding from stdin for
     both binary and string representations.
     [Ralf S. Engelschall]

   o Add missing documentation entries for UUID_XXXX API constants and
     uuid_version() function.
     [Fuyuki <fuyuki@nigredo.org>]

   o Adjust references for new draft-mealling-uuid-urn-02.txt.
     [Fuyuki <fuyuki@nigredo.org>]

   o Replaced overlooked references to old
     uuid_{unpack,pack,parse,format,dump}() functions with their
     current uuid_{import,export}() replacements.
     [Fuyuki <fuyuki@nigredo.org>]

   o Fixed "uuid -h" command.
     [Fuyuki <fuyuki@nigredo.org>]

  Changes between 0.9.5 and 0.9.6 (06-Feb-2004 to 11-Feb-2004)

   o Added an experimental additional DCE 1.1 API for backward
     compatibility with existing applications.
     [Ralf S. Engelschall]

  Changes between 0.9.4 and 0.9.5 (19-Jan-2004 to 06-Feb-2004)

   o Fixed filedescriptor leak in the PRNG sub-API.
     [Guerry Semones <guerry@tsunamiresearch.com>]

   o Upgraded build environment to GNU libtool 1.5.2.
     [Ralf S. Engelschall]

  Changes between 0.9.3 and 0.9.4 (16-Jan-2004 to 19-Jan-2004)

   o Include <string.h> in uuid.h because of size_t usage.
     [Ralf S. Engelschall]

   o INCOMPATIBILITY: Refactor the API and rename uuid_generate()
     to uuid_make() and use a "uuid_t" pointer for the namespace
     on UUID_VERSION3 generation. To allow access to the internal
     pre-defined namespace UUIDs, provide a new uuid_load() function.
     Because uuid_load() now also allows the loading of the "nil" UUID,
     remove uuid_nil() from the API. After this second refactoring the
     API is now the one we originally wished for the forthcoming version
     1.0 of OSSP uuid.
     [Ralf S. Engelschall]

   o INCOMPATIBILITY: rename UUID_VERSIONx to UUID_MAKE_Vx and
     UUID_MCASTRND to UUID_MAKE_MC to be more consistent throughout API.
     [Ralf S. Engelschall]

   o Add version support to API via UUID_VERSION (compile-time)
     and uuid_version() (link-time).
     [Ralf S. Engelschall]

   o INCOMPATIBILITY: Refactor the API by merging
     uuid_{unpack,pack,parse,format,dump}() functions into unified
     uuid_{import,export}() functions. This allows us to easily add
     support for other formats (e.g. XML) in the future without having
     the change the API in principle.
     [Ralf S. Engelschall]

   o Document what DCE 1.1 UUID versions exist and what they are
     intended for.
     [Ralf S. Engelschall]

   o Cleanup the C code to also pass warning-free a C++ compiler.
     [Ralf S. Engelschall]

   o Support C++ by enclosing the C API declarations in
     'extern "C" {...}' within uuid.h.
     [Guerry Semones <guerry@tsunamiresearch.com>]

   o Improvide decoding in uuid_dump() by at least hex-dumping the
     binary representation in case of v3, v4 and Nil UUIDs. Also,
     annotate with better hints.
     [Ralf S. Engelschall]

   o Recognize special "Nil UUID" on decoding in uuid_dump().
     [Ralf S. Engelschall]

  Changes between 0.9.2 and 0.9.3 (15-Jan-2004 to 16-Jan-2004)

   o Tested OSSP uuid on 16 particular Unix platforms and list
     those in the new PORTING file.
     [Ralf S. Engelschall]

   o Fixed minor formatting bug in call to str_rsprintf().
     [Ralf S. Engelschall]

   o Fix syntax error in uuid.ac.
     [Ralf S. Engelschall]

  Changes between 0.9.1 and 0.9.2 (13-Jan-2004 to 15-Jan-2004)

   o Provide both incorrect RFC2518-based and correct IEEE 802
     multicast address generation. The default now is the correct
     IEEE 802 multicast address generation but compile-time option
     --with-rfc2518 selects the broken variant.
     [Ralf S. Engelschall]

   o Decode also the IEEE 802 MAC address local/global bit.
     [Ralf S. Engelschall]

   o Added missing documentation for uuid_dump().
     [Ralf S. Engelschall]

   o Fixed BM_POW2() macro implementation.
     [Ralf S. Engelschall]

   o Use BM_XXX() and str_xxx() APIs throughout internal implementation.
     [Ralf S. Engelschall]

   o Added missing manual page uuid-config(1).
     [Ralf S. Engelschall]

   o Fixed output of "uuid-config --version"
     [Ralf S. Engelschall]

   o Fixed typos in uuid.pod
     [Ralf S. Engelschall]

   o Cleanup uuid.ac for unused elements.
     [Ralf S. Engelschall]

   o Moved uuid_[u]int{8,16,32}_t auto-configuration into
     own internal header uuid_ac.h.
     [Ralf S. Engelschall]

   o Fixed portability by replacing accidentally introduced
     uint{8,16,32}_t with the portable uuid_uint{8,16,32}_t.
     [Guerry Semones <guerry@tsunamiresearch.com>]

   o Prefix all variable symbols in uuid.h with underscores
     to avoid namespace conflicts.
     [Ralf S. Engelschall]

   o Add decoding examples to uuid(1) manual page.
     [Ralf S. Engelschall]

  Changes between 0.9.0 and 0.9.1 (11-Jan-2004 to 13-Jan-2004)

   o Make "md5_init" and "mac_address" symbols namespace clean
     by adding correct embedding support via "uuid_" prefix.
     [Ralf S. Engelschall]

   o Implement uuid_dump() and corresponding uuid CLI "-d"
     option for dumping a given UUID into clear text. For convenience
     reasons add uuid_bm.h (bit mask API) and uuid_str (string
     formatting API) sub-modules.
     [Ralf S. Engelschall]

   o Add "-m" option to CLI for allowing to generate v1 UUIDs
     with random multi-cast addresses (API UUID_MCASTRND option).
     [Ralf S. Engelschall]

   o Disable the C++ and F77 checks in GNU libtool.
     [Ralf S. Engelschall]

   o Print involved option character (instead of '?') on invalid
     option for uuid(1) CLI.
     [Matthias Andree <matthias.andree@gmx.de>]

   o Fixed "make install" and "make uninstall": the uuid(1) CLI
     has to be [un]installed through GNU libtool, too.
     [Matthias Andree <matthias.andree@gmx.de>]

   o Document in uuid(1) [uuid_cli.pod] that for version 3
     UUIDs additional arguments are required and what pre-defined
     namespace ids are known.
     [Ralf S. Engelschall, M.Daniel <mdaniel@scdi.com>]

   o cleaned up source tree documentation files.
     [Ralf S. Engelschall]

