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

