_ ___ ____ ____ ____ _ _ |_|_ _ / _ \/ ___/ ___|| _ \ _ _ _ _(_) __| | _|_||_| | | | \___ \___ \| |_) | | | | | | | | |/ _` | |_||_|_| | |_| |___) |__) | __/ | |_| | |_| | | (_| | |_|_|_| \___/|____/____/|_| \__,_|\__,_|_|\__,_| 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.1 and 1.6.2 (21-Feb-2008 to 04-Jul-2008) o Adjust "devtool.func" for latest GNU Libtool compatibility. [Ralf S. Engelschall] o Improve PRNG under Win32. [Hiroshi Saito] o Consistently annotate "RFC-XXXX" with "IETF" to clearly indicate from which standards body this comes from. [Ralf S. Engelschall] o Resolve namespace conflicts of recently introduced time_xxx() functions by using a propoer "uuid_" prefix. [Ralf S. Engelschall] o Remove unused "struct timezone" from time_gettimeofday() in order to simplify portability. [Ralf S. Engelschall] o Add support for POSIX clock_gettime(3) in case the Unix/POSIX gettimeofday(3) is not available. [Ralf S. Engelschall] o Upgrade build environment to GNU autoconf 2.62. [Ralf S. Engelschall] o Upgrade build environment to GNU libtool 2.2.4. [Ralf S. Engelschall] 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 ] 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 , 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 , 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 ] 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 , Ralf S. Engelschall] o Pass the correct type to PostgreSQL's errmsg(). [David Wheeler , Ralf S. Engelschall] o Added PostgreSQL 8.2 PG_MODULE_MAGIC support. [David Wheeler ] 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 ] 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 , 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 ] 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 ] 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 ] 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 ] o Fix PHP bindings: the wrong argument to uuid_create() was forced to a reference [Roman Neuhauser ] 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 ] o Fix Perl API's "export" function by not taking over NUL-termination character under UUID_FMT_TXT. [Thomas Lotterer ] 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 ] 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 ] 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 , 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 ] 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 ] 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 , 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 ] 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 ] o Adjust references for new draft-mealling-uuid-urn-02.txt. [Fuyuki ] o Replaced overlooked references to old uuid_{unpack,pack,parse,format,dump}() functions with their current uuid_{import,export}() replacements. [Fuyuki ] o Fixed "uuid -h" command. [Fuyuki ] 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 ] 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 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 ] 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 ] 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 ] o Fixed "make install" and "make uninstall": the uuid(1) CLI has to be [un]installed through GNU libtool, too. [Matthias Andree ] 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 ] o cleaned up source tree documentation files. [Ralf S. Engelschall]