Menu

Tree [46e07d] master v6.3.0 /
 History

HTTPS access


File Date Author Commit
 commoncpp 2014-12-11 David Sugar David Sugar [0352fe] initial modernization of library and autoconf
 corelib 2014-12-11 David Sugar David Sugar [0352fe] initial modernization of library and autoconf
 gnutls 2014-12-12 David Sugar David Sugar [cac0ba] digest updates
 inc 2014-12-11 David Sugar David Sugar [055f06] more legacy cleanup
 nossl 2014-12-12 David Sugar David Sugar [cac0ba] digest updates
 openssl 2014-12-12 David Sugar David Sugar [cac0ba] digest updates
 packaging 2014-12-12 David Sugar David Sugar [46e07d] prep for next release
 test 2014-12-11 David Sugar David Sugar [0352fe] initial modernization of library and autoconf
 utils 2014-12-11 David Sugar David Sugar [0352fe] initial modernization of library and autoconf
 .gitattributes 2013-12-23 David Sugar David Sugar [7fdfe7] bundling packaging in repository
 .gitignore 2014-10-12 Tristan Matthews Tristan Matthews [bf281e] move demoSSL into utils
 AUTHORS 2014-06-06 David Sugar David Sugar [acb3e3] some prep work for next release
 BUILDS 2012-11-17 David Sugar David Sugar [3b074f] opensolaris sunwpro still borked
 CMakeLists.txt 2014-12-12 David Sugar David Sugar [46e07d] prep for next release
 COPYING 2007-06-29 David Sugar David Sugar [e9145c] license
 COPYING.LESSER 2008-09-05 David Sugar David Sugar [bf58d3] prep work for release 2.0
 COPYRIGHT 2012-01-04 David Sugar David Sugar [67c56f] License clarification
 ChangeLog 2014-12-12 David Sugar David Sugar [46e07d] prep for next release
 Doxyfile 2014-04-11 David Sugar David Sugar [d7e89c] revised more doxy issues
 Makefile.am 2014-12-11 David Sugar David Sugar [0352fe] initial modernization of library and autoconf
 NEWS 2010-06-22 David Sugar David Sugar [7bfaa5] introduction to crytographic functions
 README 2010-09-18 David Sugar David Sugar [e67bcd] radically simplified for better runtime focus
 README.secure 2012-11-26 David Sugar David Sugar [890d09] updated readme, no gcrypt
 SUPPORT 2014-04-26 David Sugar David Sugar [044e75] updated contacts and copyright
 TODO 2013-09-18 David Sugar David Sugar [40c6a0] updated todo notes
 autogen.sh 2014-10-09 Socapex Socapex [ddb0eb] OSX: Support macports glibtoolize.
 cmake-abi.sh 2014-09-13 David Sugar David Sugar [4ee4b5] cmake abi fix
 commoncpp-config.1 2014-04-25 David Sugar David Sugar [c1deee] some license fixups
 commoncpp-config.cmake 2014-03-24 David Sugar David Sugar [cd586a] more modflags support
 commoncpp-config.in 2014-03-24 David Sugar David Sugar [cd586a] more modflags support
 commoncpp.pc.cmake 2014-09-22 David Sugar David Sugar [a37a4a] standardized cmake paths
 commoncpp.pc.in 2014-03-24 David Sugar David Sugar [e54626] updated modflags
 configure.ac 2014-12-12 David Sugar David Sugar [46e07d] prep for next release
 directive.in 2012-11-20 David Sugar David Sugar [d5446c] in future directive will be auto-generated....
 doxy.config.cmake 2014-04-11 David Sugar David Sugar [d7e89c] revised more doxy issues
 ucommon-config.1 2014-04-25 David Sugar David Sugar [c1deee] some license fixups
 ucommon-config.cmake 2012-10-12 David Sugar David Sugar [54c61a] minimal linking information
 ucommon-config.h.cmake 2014-09-22 David Sugar David Sugar [a37a4a] standardized cmake paths
 ucommon-config.in 2014-12-11 David Sugar David Sugar [0352fe] initial modernization of library and autoconf
 ucommon.pc.cmake 2014-09-22 David Sugar David Sugar [a37a4a] standardized cmake paths
 ucommon.pc.in 2014-12-11 David Sugar David Sugar [0352fe] initial modernization of library and autoconf
 ucommon.spec.cmake 2013-08-15 David Sugar David Sugar [0a0874] removed dup entries
 ucommon.spec.in 2014-09-23 David Sugar David Sugar [586212] simplified spec

Read Me

GNU uCommon C++ is meant as a very light-weight C++ library to facilitate using
C++ design patterns even for very deeply embedded applications, such as for
systems using uclibc along with posix threading support.  For this reason,
uCommon disables language features that consume memory or introduce runtime
overhead, such as rtti and exception handling, and assumes one will mostly be
linking applications with other pure C based libraries rather than using the
overhead of the standard C++ library and other class frameworks.

GNU uCommon C++ by default does build with support for the bloated ansi
standard c++ library unless this is changed at configure time with the
--disable-stdcpp option.  This is to assure maximum portability and will be
used to merge UCommon with GNU Common C++ to form GNU Common C++ 2.0.  Some
specific features are tested for when stdc++ is enabled, and these will be used
to add back in GNU Common C++ classes such as TCP Stream and serialization.

GNU uCommon C++ introduces some Objective-C based design patterns, such as
reference counted objects, memory pools, smart pointers, and offers dynamic
typing through very light use of inline templates for pure type translation
that are then tied to concrete base classes to avoid template instantiation
issues.  C++ auto-variable automation is also used to enable referenced objects
to be deleted and threading locks to be released that are acquired
automatically when methods return rather than requiring one to explicitly code
for these things.

GNU uCommon C++ depends on and when necessary will introduce some portable C
replacement functions, especially for sockets, such as adding getaddrinfo for
platforms which do not have it, or when threadsafe versions of existing C
library functions are needed.  Basic socket support for connecting to named
destinations and multicast addresses, and binding to interfaces with IPV4 and
IPV6 addresses is directly supported.  Support for high resolution timing and
Posix realtime clocks are also used when available.

While GNU uCommon C++ has been influenced by GNU Common C++, it introduces some
new concepts for handling of thread locking and synchronization.  GNU uCommon
C++ also builds all higher level thread synchronization objects directly from
conditionals.  Hence, on platforms which for example do not have rwlocks,
barriers, or semaphores, these are still found in uCommon.  A common and
consistent call methodology is used for all locks, whether mutex, rw, or
semaphore, based on whether used for exclusive or "shared" locking.  

GNU uCommon C++ requires some knowledge of compiler switches and options to
disable language features, the C++ runtime and stdlibs, and associated C++
headers. The current version supports compiling with GCC, which is commonly
found on GNU/Linux, OS/X, BSD based systems, and many other platforms; and
the Sun Workshop compiler, which is offered as an example how to adapt UCommon
for additional compilers.  GNU uCommon C++ may also be built with GCC cross
compiling for mingw32 to build Microsoft Windows targets natively.  The cmake
build system can also be used, to create project files for various platforms
including xcode for OS/X and various Microsoft Visual Studio project file
formats.

The minimum platform support for uCommon is a modern and working posix pthread
threading library.  I use a subset of posix threads to assure wider portability
by avoiding more specialized features like process shared synchronization
objects, pthread rwlocks and pthread semaphores, as these are not implemented
on all platforms that I have found.  I also eliminate the practice and
dependency on pthread automatic cancellation behavior, which otherwise
introduces much greater complexity to user applications and can often lead to
defective coding practices.

The first three releases of uCommon were introduced in 1999-2000 as a pure "C"
library for embedded targets, and had not seen an update in 7 years.  Hence I
have had the package name in use for a very long time.  Work on what became
uCommon C++ 0.4 was originally intended as a refactoring effort for GNU Common
C++ to better support IPV6, and became something different as entirely new code
was written in 2006.  I originally hoped to release GNU uCommon C++ in March of
2007 as a new package under the GNU GPL V3, but the license was unavoidably
delayed.  GNU uCommon C++ will merge code from and replace GNU Common C++ in
future releases.

GNU uCommon C++ is a linkable library distributed under the GNU General Public
License, Version 3 or later.  As of version 2.0, we are now using the GNU
Lesser General Public License, Version 3 or later, to remain consistent and
compatible with past GNU Common C++ licensing.  A new release series of GNU
uCommon C++ is 2.1 involved refactoring the abi release from prior 2.0.x
releases, offering greater clarity, consistency of use, and some new features
that were migrated from Common C++.

To better focus on standardizing secure and runtime services, uCommon was
somewhat simplified in release 3.4.  ccscript is now part of GNU Bayonne,
and ccaudio has been separated again.