from ucommon 6.0.6 to 6.0.7
- error state in fsys open fixed
- fsys error reset inline added

from ucommon 6.0.5 to 6.0.6
- small cleanup of useless validator assignments
- fix gnutls casting and warnings
- modernized automake support

from ucommon 6.0.4 to 6.0.5
- additional constructors to pass pre-allocated memory

from ucommon 6.0.3 to 6.0.4
- fix for address list comparison issue

from ucommon 6.0.2 to 6.0.3
- fixes for older gnutls releases

from ucommon 6.0.1 to 6.0.2
- digest stream operators
- auto memory erasing keystring and keyrandom template
- common code shared for secure library
- some fixes for gnutls support

from ucommon 6.0.0 to 6.0.1
- fixes for gnutls support
- elimination of gcrypt in gnutls

from ucommon 5.5.1 to 6.0.0
- new version 6 api
- fixed string + concat operation
- made StringPager proper base class by naming conventions
- new device access mode and name checking for fsys
- fbuf refocused on process pipe and device access
- more consistent abi naming conventions
- depreciated methods removed
- access base classes now consistent with protocols
- reorg of datetime classes
- allocation and access fault handling

from ucommon 5.5.0 to 5.5.1
- regex checks also for lib, mingw support
- pedantic cleanup of mingw
- anaselli fix for applog and pipes

from ucommon 5.4.3 to 5.5.0
- mapof and listof added
- semaphore default for commoncpp set to 0
- simplify config, no longer separate stdlib and compat
- resolved issues with XOPEN_SOURCE and broken BSD headers 
- many mingw 32 and 64 bit fixes, build fixes for out of source binary builds

from ucommon 5.4.2 to 5.4.3
- fixes for supporting ancient gcc compilers (at least >=2.96!)
- bug in Conditional gettimeout, stack and queue suggested by Pollak

from ucommon 5.4.1 to 5.4.2
- fixes for older gcc builds and template issues.
- bugfix for ConditionalAccess constructor.
- bugfix for commoncpp address functions.

from ucommon 5.4.0 to 5.4.1
- fixes for windows build.

from ucommon 5.3.0 to 5.4.0
- cleanup for ide use.
- NamedList sort uses system collation.
- some convenience string methods added.
- search and replace, regular expression support.
- UString extended with copy/cut/paste/left/right operations.
- stringpager extended with set/replace method and split.
- added fsys::pipe and fsys::noexec.
- removed unused pipeio subsystem.

from ucommon 5.2.2 to 5.3.0
- sort specific string collation functions added
- more stringpager manipulations possible
- use of stringlist_t for new fsys exec.
- string inpuit and output for bufpager.

from ucommon 5.2.1 to 5.2.2
- use strcoll for sorting when possible
- common c++ object linking, maps, and ref counted pointers added back
- stringpager supports ordered add and sorting
- directory pager and list type added
- no -L or -I paths in default installs (multi-arch issue)

from ucommon 5.2.0 to 5.2.1
- fixed issue with static linking initialization order
- shell release method

from ucommon 5.1.2 to 5.2.0
- improved shell::detach support and new pdetach utility
- fsys generic basic file operations
- commoncpp file and dso compatibility support added

from ucommon 5.1.1 to 5.1.2
- corrected copyright.  since cc libs were moved to bayonne and commoncpp
  had been added, ALL of ucommon (including commoncpp2) are L-GPL, not just
  the "core" library.
- more standardized manpages

from ucommon 5.1.0 to 5.1.1
- better handling of strerror_r support.

from ucommon 5.0.7 to 5.1.0
- Pollak's suggestion for peek method for queue added to queue, stack, buffer,
  and templates.
- new stringpager class to hold simple expanding tables of strings.
- commoncpp strerror_r fix from list.

from ucommon 5.0.6 to 5.0.7
- use debian move xopen forward patch
- joinable thread self-join does cleanup of run state

from ucommon 5.0.5 to 5.0.6
- generic object save/auto-restore.
- separation of shell::error() from shell::errexit(0,...)
- separation of runtime and non-runtime libs
- disable posix_fadvise if header definitions missing (debian kfreebsd bug)

from ucommon 5.0.4 to 5.0.5
- fix for commoncpp emulation when no direct parent commoncpp thread.
- rename scrub to scrub files to avoid name conflict.
- some enhacement in cmake

from ucommon 5.0.3 to 5.0.4
- set without explicit this in templates conflicts with std inherited classes.

from ucommon 5.0.2 to 5.0.3
- specialization to use linked_pointer<struct sockaddr> to walk address lists.
- fix for cmake build of car.
- sockaddr util added to show address resolution lists.

from ucommon 5.0.1 to 5.0.2
- fix for termios support.
- shell getpass and inkey methods.
- extended cipher key management methods.
- crytographic archiver (car) added.
- openssl fips support added.

from ucommon 5.0.0 to 5.0.1
- missing commoncpp/numbers.h header.

from ucommon 4.3.3 to 5.0.0
- thread objects fully inheritable.

from ucommon 4.3.2 to 4.3.3
- service control path added for dropfile info.
- generics dup template added.

from ucommon 4.3.1 to 4.3.2
- cmake unit tests added and automated.
- extensions to mapping, copy and mapped_view get.
- certificate paths now part of usecure.
- sorting and named list issues resolved.

from ucommon 4.3.0 to 4.3.1
- fix for access to keyfile::create().
- new -xxx and +xxx numeric parser option.

from ucommon 4.2.2 to 4.3.0
- shell::path added.
- fsys for descriptor.
- keyfile extended.
- symlink handling in fsys.

from ucommon 4.2.1 to 4.2.2
- reorg how we do cmake path configurations.

from ucommon 4.2.0 to 4.2.1
- proposed barrier dec from Leon.
- added fsys::islink symlink check function.
- keyfile::save method added, registry interfaces.

from ucommon 4.1.7 to 4.2.0
- some clarification of linked object abi.

from ucommon 4.1.6 to 4.1.7
- small fixes in cmake to add includes to projects, etc.

from ucommon 4.1.5 to 4.1.6
- fixed permission of shared memory, now world readable if not umasked.

from ucommon 4.1.4 to 4.1.5
- posix timers have become experimental since seems broken on some platforms

from ucommon 4.1.3 to 4.1.4
- revised cmake for unix builds, fixed cmake bug with non-stdlib

from ucommon 4.1.2 to 4.1.3
- new check for posix timing and monotomic clocking
- thread unit test expanded to verify timed operations

from ucommon 4.1.1 to 4.1.2
- configuration clearification for posix timers
- linkage fix for secure and sstream; no copy constructor

from ucommon 4.1.0 to 4.1.1
- rexlock try method and better thread inheritence
- timer fix for dll linkage, again broken windows
- thread specific storage
- fixes for cmake builds with openssl and intl support
- mingw32, windows header and openssl link issues

from ucommon 4.0.5 to 4.1.0
- security system logging.
- cleanup of cmake.
- clearer idea of what shell::errexit is.
- cleanup of pointer templates, Object pointers now object_pointer, temporary
  is now temporary object, new "generic" smart pointer to be added.
- new containers.h to seperate use of contained resources from thread.h and
  basic threading primitives.
- linked_allocator template added for easy access to a free list managed
  object pool.

from ucommon 4.0.4 to 4.0.5
- smarter openssl search.
- simplified service handling.
- exiting critical handler added.

from ucommon 4.0.3 to 4.0.4
- make it easier to subclass cipher key for special purposes.
- component naming of binaries for combining ucommon with other subprojects.

from ucommon 4.0.2 to 4.0.3
- some changes in file stat macros.

from ucommon 4.0.1 to 4.0.2
- introduction of scrub utility for secure file deletion.
- introduction of mdsub utility for computing file hashes.
- shell::printf always flushes output for console.
- Digest::reset now resets even for cleared contexts.

from ucommon 4.0.0 to 4.0.1
- fix for misnamed library in ucommon-config.

from ucommon 3.4.0 to 4.0.0
- introduction of protocols as abstract bases for mixin classes.
- Socket class tracks last error and has iowait/blocking property.
- Socket int methods return errno() rather than -1 on error.
- buffer protocol created.
- string no longer has dependency on socket.
- ssl and tcp classes reorganized for consistent naming.
- file handling in charfile through character protocol.
- unicode conversions use character protocol.
- templates updated so []'s always emit value references.

from ucommon 3.3.7 to 3.4.0
- simplified to better focus on core runtime mission.
- packaging simplified.
- ccscript moved to bayonne
- ccaudio detached

from ucommon 3.3.6 to 3.3.7
- small change in how ucommon components can be pre-set.
- missing local header for gnutls.

from ucommon 3.3.5 to 3.3.6
- grouping operator for usage help.
- script merge operation by images.
- doxygen generation now supported from cmake, from Angelo Naselli.

from ucommon 3.3.4 to 3.3.5
- make sure gettext is actually buildable before we build with it.

from ucommon 3.3.3 to 3.3.4
- broken sym lookup fixed.

from ucommon 3.3.2 to 3.3.3
- process detach and restart handling.
- more complete string to numeric conversions.
- syms were not initialized in all shell constructors.
- some inline templates that contain generic values redone as typename.

from ucommon 3.3.1 to 3.3.2
- shell debug message logging output.
- restart method to hook debuggers.
- local thread-safe symbol space.

from ucommon 3.3.0 to 3.3.1
- expand args to directory and recursive operations.
- fix cstring initialization.
- set methods to initialize shell options.
- basic logging added.

from ucommon 3.2.2 to 3.3.0
- internationalization bindings with gnu gettext support.
- use shell parser in audiotool code.
- small fixes in shell option parsing.

from ucommon 3.2.1 to 3.2.2
- xml parser for buffered i/o objects and files.
- bidirectional socket descriptor to FILE.
- OrderedIndex reset method.
- numeric format conversion and scanning operator "%".

from ucommon 3.2.0 to 3.2.1
- splitting shell parser so that it is possible to create tool style parsers.
- string hexpack and hexdump functions.
- traditional, random, and digest uuid functions.
- make sure we always ignore pthread/pth if msw targets (fedora mingw32).
- barrier patch from Leon Pollak.

from ucommon 3.1.2 to 3.2.0
- added explicit add and remove for NamedObject to make keymap easier to use.
- created new keypager type to allocate named objects on demand.
- fixed option crash when not defining a long option.
- improved shell header documentation.
- shell spawn and process management functions.
- shell io for buffered pipes and stdio handling.

from ucommon 3.1.1 to 3.1.2
- some attention to the question of padding cipher blocks.
- gnutls can now also be used in place of openssl.
- make sure all keys are destroyed cleanly when secure objects are released.

from ucommon 3.1.0 to 3.1.1
- some attention to the shell functions.

from ucommon 3.0.6 to 3.1.0
- encapuslate select() bit mask operations into select class.
- new read/write based stream methods.
- socket cannot be private in TCPSocket.
- fixed doxygen generated docs, now much more complete.
- introduced new secure library for ssl sockets, digests, ciphers, etc.

from ucommon 3.0.5 to 3.0.6
- optional socks proxy support possible with --enable-socks configure flag.
- new Socket methods to wrap more socket functionality and new init method.

from ucommon 3.0.4 to 3.0.5
- new socket option for nodelay.
- copyright notices fixed for consistency.
- fix for conflict between stream and macros.

from ucommon 3.0.3 to 3.0.4
- buffer purge method added.
- new flush io buffer virtual method.
- buffering support and tcp socket for non-blocking i/o.

from ucommon 3.0.2 to 3.0.3
- new biderectional buffered i/o support added.
- new buffered file and buffered tcp socket classes added.
- bug in ReusableAllocator freelist assignment.
- creation of connected sockets.
- standardized host and service name resolution.

from ucommon 3.0.1 to 3.0.2
- atomic counter and lock class added.
- shell no longer a second class member of ucommon.
- unit tests conditional by component selection.
- audio::init for static linkage issues.
- fsys::trunc method added.
- unicode utf8 file character operations.

from ucommon 3.0.0 to 3.0.1
- bug fix and unit test for queueof.
- initialization template function added.
- small cmake fixes.
- refinement of stackof and queueof templates.

From ucommon 2.1.4 to 3.0.0
- merged ccscript and ccaudio into ucommon core framework.
- extended configuration support for includes and plugins.
- expanded configure for framework component selection.

From ucommon 2.1.3 to 2.1.4
- new utf8_pointer string class and further unicode support.
- new component access api for datetime objects.
- New object containers for object lists, fifo's, and queues.

From ucommon 2.1.2 to 2.1.3
- unicode string support and utf8 string processing.

From ucommon 2.1.1 to 2.1.2
- set() methods for date, time, and datetime added.
- new defines for buffer sizes added.
- new date and time related auto string classes.
- fixups for netbsd and openbsd.

From ucommon 2.1.0 to 2.1.1
- fix for Time string conversion
- size fields for date and time strings.

From ucommon 2.0.8 to 2.1.0
- new abi for fsys seek and drop
- Added NamedTree/treemap copy constructor and changed id behavior
- Improved cmake support using proper build options and adding cpack
- Common use of "eq()" inlines for string and other data types
- fix for lseek (also patched in 2.0.9)
- all int fsys functions now return errno on failure, not -1
- Common C++ number string manip classes
- greater use of const in abi
- datetime class support added
- timer class expanded for operators
- fix for generated docs

From ucommon 2.0.7 to 2.0.8
- support for optional cmake based build system being added

From ucommon 2.0.6 to 2.0.7
- strict aliasing, socket address manipulations, and gcc 4.4
- doc generation cleanup

From ucommon 2.0.5 to 2.0.6
- spec file updated per redhat/fedora packaging policies
- fixed install scripts handling
- added man page for ucommon-config.

From ucommon 2.0.4 to 2.0.5
- small code cleanup.
- added fsync to fsys as fsys::sync() method.
- added missing destructors for queue and stack when no mempager is used.

From ucommon 2.0.3 to 2.0.4
- fixed bug in reusable object handoff to free list.
- basic dccp socket support added.

From ucommon 2.0.2 to 2.0.3
- documented behavior and use case for ...Thread::exit() methods changed.

From ucommon 2.0.1 to 2.0.2
- fix for missing functions in mingw32 cross-builds.

From ucommon 2.0.0 to 2.0.1
- fix for failed dlopen detection in lc and false libcompat check for netbsd
- general code cleanup with pedantic, some subtle header changes
- fix for generic interface routing in ipv6 multicast operations
- improved sunwpro support for --disable-stdcpp by using no%Cstd and CXX model

From ucommon 1.9.9 to 2.0.0
- fsys stream and random access modes with posix_fadvise support.
- new fsys drop method to drop used pages in streaming applications.
- license changes to lgplv3+
- mempager/memalloc "zalloc" method  added.
- keyfile based on memalloc, not mempager.

From ucommon 1.9.8 to 1.9.9
- critical fix for assignment template for auto pointers.

From ucommon 1.9.7 to 1.9.8
- new NamedTree listing methods for moving and re-ordering tree branches.
- getIndexed methods for accessing a linked list by index.
- some clarification of internet socket address types.
- smart pointer can be initially assigned NULL...
- new memalloc because I needed a mempager without mutexes...

From ucommon 1.9.6 to 1.9.7
- lots of code cleanup for final release candidate for 2.0.

From ucommon 1.9.5 to 1.9.6
- better address list management, including unique insert and remove.
- copy constructor and address duplication for Socket::address.
- fixup of reader/writer pool locking and addition of gaurd objects.
- hopefully final core api for real 2.0 release!

From ucommon 1.9.4 to 1.9.5
- mutex::gaurd for scope mutex locking arbitrary objects.
- read/write locking access control for arbitrary objects.
- multi-distro spec file.
- simplified abi numbering.

From ucommon 1.9.3 to 1.9.4
- string equality tests.
- Socket isNull/isNumeric can parse inside a field...
- container policies for cidr's
- behavior of ID reset for named objects can now be overriden by virtual.
- string format conversion base class for use in string classes and operators.

From ucommon 1.9.2 to 1.9.3
- fixed join/drop issue in multicast reported by Michael Freedman.
- module loader error handling.

From ucommon 1.9.1 to 1.9.2
- added Socket::isNull and Socket::isNumeric checks.
- added keyhost hash key indexing on host only.
- fixed uninitialized getsockname len argument in gethint.
- updated spec file.

From ucommon 1.9.0 to 1.9.1
- bug in string::token parsing fixed.
- unit test to validate string::token fix.
- keyfile/keydata classes added for generic config file parsing.
- unit test added for keydata processing.

From ucommon 1.8.2 to 1.9.0
- pipestream interface normalized for shell execution.
- new "shell" class for generic parsing and argument expansion.
- v4mapped() added to enable/disable ipv4 to ipv6 mapping support.
- fsys::isfile/isdir added.
- some rework of timer events to better support updating in arm & disarm.

From ucommon 1.8.1 to 1.8.2
- doxygen updates.
- fix related to libstdc++/ansi c++ library design defect.

From ucommon 1.8.0 to 1.8.1
- use entirely safe string operations everywhere.
- keyassoc keydata constructor changed to pass size of string buffer.
- basic optional GNU pth support completed.

From ucommon 1.7.2 to 1.8.0
- support for forced ipv4/ipv6 in init.  ipv6 unit testing.
- new family method for query default.
- further refinement of socket api.
- ipv6 support for opensolaris and -lnsl.

From ucommon 1.7.1 to 1.7.2
- small fix in type mismatch in stream allocate methods.
- do not remap undefined error codes, as can break switch blocks.
- fix for mingw32 address conversion functions.

From ucommon 1.7.0 to 1.7.1
- extended errno mapping for sockets.

From ucommon 1.6.2 to 1.7.0
- updated abi for fsys, rebuilt to unify file handling and to use a common
  type and functions for files, directory access, and loader.
- simplified TimedEvent completion port handling and new static members.
- refactored socket api around supporting use of native socket_t.  Minimal
  api for abstract socket class used for protocol building.
- refactored containers to use references in assignment to avoid stack frame
  constructions.
- added stream classes for fsys (threaded i/o) and piping.

From ucommon 1.6.1 to 1.6.2
- improved support for using Socket::address as referenced type.  New set &
  add methods.

From ucommon 1.6.0 to 1.6.1
- fix for loader.
- simplified fsys r/w calls.
- fsys.h documented.

From ucommon 1.5.0 to 1.6.0
- some small cleanups for opensolaris builds.
- additional is() and isnull() template operators, template swap.
- automatic rules for default selection with/without ansi C++ library (see
  BUILDS).
- new fsys wrapper class for threaded portable i/o operations.
- cmodel.sh support for broken libtool versions.
- lots of tcpstream/socket bug fixes and new tcpstream unit test added.
- changes in tcpstream abi to use address objects by reference.
- dynamic loader support added.

From ucommon 1.4.2 to 1.5.0
- added gnu common c++ based tcp streaming class to ucommon.
- added gnu common c++ based xml sax parser to ucommon with better support for
  parsing embedded xml data structures.
- Daniel Silverstone's persistence engine from gnu common c++ added.

From ucommon 1.4.1 to 1.4.2
- get address entry by family from list.
- MultiMap/multimap multiply pathed lists/associated key objects.
- remove complex automake rules; use new cmodel.sh to reset libtool when
  building pure c mode link for c++ objects for deep embedding without
  libstdc++.
- changes to support QNX target builds.

From ucommon 1.4.0 to 1.4.1
- internalized getaddrinfo substituted on targets without addrinfo support.
- small correction to socket::address::add to pass socket type.
- cygwin support
- fixups for Solaris support

From ucommon 1.3.3 to 1.4.0
- socket::address constructors reorganized
- added mapped (shared memory) to ucommon library
- improved mingw32 support
- support for gcc < 3.0 (gcc 2.96, rhel-2.1 for example)
- socket initialization for msw.

From ucommon 1.3.2 to 1.3.3
- initialization of socket hinting for BSD stack.
- further clarify asserts.
- fixes for NetBSD 4; clock_nanosleep and pthread_setconcurrency support.
- fixes for gcc < 3.4 (such as openbsd...)
- fixes for embedded linux kernel targets

From ucommon 1.3.1 to 1.3.2
- clarified assertions for argument preconditions for correctness.

From ucommon 1.3.0 to 1.3.1
- many testing asserts added to library for function argument preconditions.

From ucommon 1.2.5 to 1.3.0
- dynamic mutex resource locking, with new interface and supporting templates
  to automate operation.  This allows one to create exclusive access regions
  on demand without having to embed initialized mutexes in each instance of
  an object that requires serialization protection.

From ucommon 1.2.4 to 1.2.5
- restore sharing level at ConditionalLock commit if recursive locked.

From ucommon 1.2.3 to 1.2.4
- default initialization of socket address list to NULL required.

From ucommon 1.2.2 to 1.2.3
- small change in use of sched.h for portability.
- unitialized mempager and reorg treemap purge.

From ucommon 1.2.1 to 1.2.2
- typo in exclusive conditional lock.

From ucommon 1.2.0 to 1.2.1
- conditional modify access can be asserted during active recursive share.

From ucommon 1.1.1 to 1.2.0
- adding conditional policies, ConditionalLock::concurrency() and
  ConditionalRW::sharing().
- Recursive support in conditional locking.
- SharedPointer derived from ConditionalRW and optimized.

From ucommon 1.1.1 to 1.1.2
- fix for OS/X.

From ucommon 1.1.0 to 1.1.1
- adjusted definition of priority scheduling and added realtime thread policies.

From ucommon 1.0.0 to 1.1.0
- fixed spec file to support uses_stdcpp definition.
- fixed new operator when using stdcpp.
- conditionalrw locking scheme integrated for scheduling optimization.

From ucommon 0.9.2 to 1.0.0
- use std::runtime_exception instead of abort when using c++ runtime library
- crit macro allows std::runtime_exception processing for c++ runtime library
- check for old and new style c++ stream i/o classes, added OLD_STDCPP
- replaced NOSTDCPP with reversed & revised NEW_STDCPP flag unless OLD_STDCPP
- classes documented and doxygenized.
- expanded linked list support with head/tail and insert options.
- barrier with timed wait.

From ucommon 0.9.1 to 0.9.2
- fix critical bug in Socket::equal tests...

From ucommon 0.9.0 to 0.9.1
- removed AutoObject
- migrated thread functions to use pure win32 threading for mingw32; no
  more redhat pthread-win32.  This became possible when we dropped
  cancellable threads.
- fixed cc mode library build because libtool still forces libstdc++!

From ucommon 0.8.2 to 0.9.0
- slight change to thread init for pthread-win32 static libs.
- new steplock formed purely from staircase mutexes.
- new event timer for timed completion event signalling.
- removed cancellable thread concepts to simplify thread model!

From ucommon 0.8.1 to 0.8.2
- conditional lock protect for shared recursive/short lock use.

From ucommon 0.8.0 to 0.8.1
- fix for pthread without setschedprio.

From ucommon 0.7.0 to 0.8.0
- fix for timerqueue class.
- potential writer starvation issues resolved in rwlock/condlock classes.
- consolidated and improved Conditional timed waits.
- introduction of transformable conditional locking.
- access shared locking extended to cover transformable conditional locks.
- default compile mode is now stdcpp; first step in gnu common c++ merge.

From ucommon 0.6.1 to 0.7.0
- added basic thread priority support
- changed base configure options to avoid collisions with other packages
- added getservice interface to get socket port #
- added charbuf template
- cidr policy chains simplified
- some rationalization and improvement in socket class with the ability
  to compare addresses, manipulate address lists, etc.
- string finding with deliminators.
- first pass at offering real documentation for the library via doxygen.

From ucommon 0.6.0 to 0.6.1
- support for static libpthreadGC2
- support for w32 address conversion

From ucommon 0.5.0 to 0.6.0
- detached & pooled thread exit support fixed
- equal test for socket address
- getinterface to find interface to destination address
- subnet test for socket address comparison
- getaddress replaces hosttostr

From ucommon 0.4.0 to 0.5.0
- rwlock now also recursive writers
- clarification of conditional locking
- generic rexlock type replaces recursive mutex

Initial Release 0.4.0

