|
The UDS Collection
Release Notes
back to main page
Version 1.0.6
Version 1.0.6 is the new stable release.
It contains the following user-visible changes:
- A bug in the pseudo-random number generators was fixed.
- Upgraded scripts and config files to make everything work with recent
versions of automake, autoconf, and libtool.
Version 1.0.5
Version 1.0.5 is the new stable release.
It contains the following user-visible changes:
- Some gcc-3.1 related problems have been fixed. They should not be visible
to the user. UDS still works with gcc-3.0.x.
- It is now possible to pass the signal to a ProcStream which is used
to kill the child process (if requested). If not specified, SIGTERM
is used so the default behaviour is unchanged.
- The TryLock method of the Mutex dummy class for the single thread
version returns always 0. Previously the return value was not
specified.
Version 1.0.4
Version 1.0.4 is the new stable release.
It contains the following user-visible changes:
-
- The memory leak counter is not increased if the leak is ignored. No warning
is printed if all leaks are ignored. You can ignore all leaks with
unknown origin (probably from shared libraries) with the
Sentinel::IgnoreUnknown method.
- Fixed a problem with original_new(). Under special circumstances the
(weak) function was not included in the executable. The _original_new()
function does not exist anymore.
Version 1.0.3
Version 1.0.3 is the new stable release.
It contains the following user-visible changes:
- A nasty memory leak in uds::Sentinel::Release() was fixed.
- The --enable-log-all configure option is not generated if the
UDS_CHECK_FLAGS or UDS_CHECK_FLAGS_ND m4 macros are used.
Version 1.0.2
Version 1.0.2 is the new stable release.
It contains the following user-visible changes:
- Memory allocations are never logged before UDS was initialized by
uds::Init. Memory leak checking is performed when the last uds::Init
is destroyed. The uds::log_all configuration flag does not exist anymore.
This fixes some problems that could lead to segfaults.
- When printing backtraces and memory leaks the program is not aborted with
an error if the addr2line program can not be accessed. In that case
function addresses are printed instead of function names, source files, and
line numbers.
- It is now possible to filter
memory leaks by filename.
- The uds/thread.hh header can now be included if _REENTRANT is not defined.
In that case the Mutex, MutexLock, and CMutexLock classes are defined but
perform no action.
- The BRead functions which read strings throw an exception if not all data
can be read.
- Sockets throw a system_error instead of a runtime_error if send() or recv()
fails.
- The MkLockFile function sets the value pointed to by the lpid argument
to 0 if the file is already locked but the pid can not be read.
- The UDS_CHECK_GCC m4 macro does not print an error message for gcc 3.1.
Version 1.0.1
Version 1.0.1 is the new stable release.
It contains the following user-visible changes:
- Fixed a problem with the STL that caused a segfault at program termination
when memory leak checking was enabled and the executable was linked
dynamically.
- Use libtool's versioning scheme.
- Don't set CFLAGS and CXXFLAGS if one of those variables is neither empty
nor "-g -O2". Other programs that use the UDS m4 macros are affected
by this change as well.
Version 1.0.0
Version 1.0.0 is the new stable release.
It contains the following user-visible changes:
- Changed the output format of backtraces to fit into 79 columns.
- Function names in memory leak listings are printed. Changed the output
format to fit into 79 columns.
- Added VarAssign, ShellQuote, BreakLine, and TrString functions.
- Fixed a bug in Version_t which caused that version numbers were not
compared correctly.
- FileStream and ProcStream got additional constructors that take
const string& instead of const char*.
- ReadLine unsets the failbit on the input stream if an empty line is read.
- Minor improvements in error messages.
- Fixed MkLockFile (was completely broken).
Version 0.10.1
Version 0.10.1 is the new stable release.
It contains the following user-visible changes:
- It is now possible to set the number of expected memory leaks. This is
useful since some libraries or programs allocate a fixed amount of memory
which is never freed. Note that it is possible to set several numbers
of expected leaks. See Automatic
search for memory leaks for more information.
- Fixed a bug in filebuf::Write(). The input file position was fseek()ed
instead of the output file position.
- The FileStrem constructors and Open() methods take an argument which
specifies whether the file shall be closed implicitly when the stream
is destroyed, or another file is Open()ed. See the reference for more
information.
- Added the System() function which works basically like the c library
system() function, but does not block or ignore any signals and throws
an exception if the child process does not exit successfully.
- The UDS_CHECK_FLEX_FLAGS m4 macro was added. It adds the
--enable-fast-lexer option to your configure script. If enabled,
the FAST_LEXER variable is set to '-f' and made available to all
Makefile.am files via AC_SUBST.
Version 0.10.0
Version 0.10.0 is the new development release.
It contains the following user-visible changes:
- UDS moved completely to the STL that comes with gcc 3.0. The gcc 2.95.x
STL is no longer supported.
- The StrStream class was removed (they are not needed anymore; use
stringstreams instead).
The StringVar() and VarConv() conversion functions were moved
to the (new) str_util.hh header file. An example program that
demonstrates those functions was added (example17.cc).
- Added {i,o,io}fdstream classes which are derived from their iostream
counterparts and provide the File() method that returns a file
descriptor. All stream classes that operate on file descriptors are
now derived from the fdstream classes.
- Added the FileStream class which
provides separate file positions for input and output.
- Moved i/o functions (ReadLine, BRead, BReadRaw, BWrite, BWriteRaw)
to the (new) header file io_util.hh. The BRead* functions that
took an istream& as first argument require an ifdstream& since
file descriptor access is required.
- Moved CkStdCall from sys_util.hh to stdexcpt.hh.
- Added log_all UDS flag. Memory [de]allocations are not logged until
UDS is initialized unless the log_all flags is set.
- The UDS_CHECK_LOCKFILEDIR m4 macro was renamed to UDS_CHECK_VARRUNDIR.
- Added example program for the Logging
class (example16.cc).
Version 0.9.6
Version 0.9.6 is the new stable release.
It contains the following user-visible changes:
- The documentation is installed in $(datadir)/doc/uds instead of
$(prefix)/doc/uds. datadir defaults to $(prefix)/share.
- The BRead and BWrite families of functions changed once again.
- The 'wait' parameter
has been replaced by a 'flags' option. The original 'wait' parameter is
now one of the flags. The other flags are only meaningful if strings
are read. See the reference for a list of the flags and their
meanings.
- It is now possible to pass an 'endianess' parameter to the BRead and
BWrite functions. Little-Endian and Big-Endian (= network byte order)
are supported.
- To avoid ambiguities that were introduced by these changes, the BRead
functions that operate on void* were renamed to BReadRaw. Corresponding
BWrite functions were added.
- It is now possible to specify a max. string length to BRead functions
that read string representations.
- MkLockFile() and WriteLockFile() functions were added. They
can be used to create / operate on lockfiles. See the reference
for more information.
- UserName() and UserID() functions were added which can be used to map
a uid to a user name and vice versa. Same with GroupName() and
GroupID(). See the reference for more information.
- X.25 Headers are printed correctly when operator << ( ostream&, const
X25Api_t& ) is used. This happens eg when OOB messages are received.
- Two functions called 'test' were added to stl_ext.hh. One takes
const __true_type& as argument, the other one const __false_type&. They
return true and false accordingly. Such functions are useful if certain
specialized templates (like the ones defined in type_traits.h) are used.
- The UDS_PATHS m4 macro defines now all standard directories that are set
by configure. See the macro reference
for a list of all directories.
- When UDS_CHECK_LIBUDS or UDS_CHECK_LIBUDSTHREAD is used, the -luds /
-ludsthread options are not automatically added to the LIBS variable.
- The m4 macros UDS_CHECK_DEFUSER, UDS_CHECK_DEFGROUP, and
UDS_CHECK_LOCKFILEDIR for use in daemon / server programs were added.
Version 0.9.5
Version 0.9.5 is the new stable release.
It contains the following user-visible changes:
- UDS provides the Backtrace() function
(defined in uds/btrace.hh) which generates a backtrace at runtime. If the
executable contains debugging information, the backtrace includes source
files, line numbers, and function names. Very useful for debugging.
The Backtrace() function is used by the
UDS exception classes and replace
the 'thrower address' feature.
See the reference for more information.
- The socket api has been redesigned.
There is now one class for each protocol. Support for UDP sockets and
X.25 sockets (Sangoma Wanpipe cards under Linux only) were added.
Note: The new socket classes are incompatible with the old
SocketStream class (which has been removed).
- Example program 10 has been rewritten and demonstrates the use of
the TCPSocket class. Example programs 12 - 14 were added. See the
README file in the test directory of the source distribution for
brief descriptions.
- A set of m4 macros was added which
make it easy to add configure-switches
to your project which control UDS default settings. This task which
was (and is) covered in Configuring UDS is
simplified greatly.
Note: read this section if you are upgrading from an older
version of UDS, and update your udsdeff.cc.
There are also several other useful m4
macros.
- The --with[out]-libudsthread configure option was added. libudsthread
is built by default unless libpthread was not found.
- It is now possible to make a ProcStream kill the child process when the
stream is closed. Particularly useful if the child process waits
(forever) for new input.
- Subsequent runtime initializations of UDS (by placing an uds::Init
instance on the stack) are now allowed. A reference count is maintained
internally.
- Minor bugfixes in the family of BRead functions. BRead functions were
added which take a file descriptor instead of an input stream.
All BRead functions return now the number of bytes read. Useful if
the 'wait' flag was not set. See the reference for more details.
- The FileInfo class, a simple wrapper which provides the same
information as stat() does, was added. See the reference for details.
- It is now possible to change UDS flags at runtime. The uds::flags
constant is not constant anymore. This topic is covered in
Configuring UDS.
Note:If you used to set the flags manually using something like
const uds::uds_flags_t uds::flags = uds::leak_check ,
don't forget to remove the const .
Version 0.9.4
Version 0.9.4 is the new stable release.
It contains the following user-visible changes:
- The uds::Init class was added which initializes the UDS libray. You
should place one instance in your main function. See any of the example
programs that come with the source distribution. Right now this
class serves only one purpose: If the instance was not created, it
is assumed that an exception might not be caught in case of a fatal error.
Therefore an error message is printed to stderr before the exception
is thrown.
- It is now possible to get direct access to the diagnose object that
comes with every UDS exception. This is especially useful to retrieve
error codes (like errno). Look
here.
- The Exception::AddInfo methods were renamed to Exception::Info.
- Exception::AppMsg was added which provides just a convenient way to append
a short message to the info string. If the last character of the message
to be appended is not a newline, it is automatically added.
- The VarConv template function was added which takes a string and converts
it to another type. Have a look at the reference.
- SocketStream::Read was removed. It is replaced by more generic
BRead() functions which are now defined in uds/sys_util.hh. BWrite()
functions were added as well. Have a look at the reference for more
information.
- The VecDelete() and VecNullDelete() template functions (eg for use in STL
algorithms) were added to uds/stl_ext.hh.
Due to problems with the dot tool some of the nice diagrams are currently not
available in the reference. I will make a new reference available as soon as
the problems are fixed.
Version 0.9.3
Version 0.9.3 is the new stable release.
It contains the following user-visible changes:
- Added ProcStream class. It is a replacement for popen(), but more flexible.
Since a pair of anonymous unix-domain sockets is used instead of pipes
both read and write operations are supported. Furthermore it is
possible to specify the environment of the child process.
As required by POSIX.2 for popen(), Streams from other ProcStream
instances that remain open in the parent process are closed in the
new child process.
- The thread-safe version with the posix thread classes is only built
if the pthread library was found.
- Added a function to the timeval wrapper class that converts the time
to a 64 bit integer (microseconds since the epoch). Added functions
that return the current system time as TimeVal (Time) and 64 bit
integer (Time_int64).
- The SocketStream class is now usable since Connect() methods are
provided. The UnixDomainSocket() and InetSocket() functions were
moved to socket.hh.
- Added a fd_set wrapper class and ReadLine() functions to sys_util.hh.
- Thread::Instance was renamed to Thread::Self and returns a GC_Ptr.
- The old TmpFileName functions were replaced. There are now two TmpFile()
functions that return a file descriptor (like mkstemp) and two
TmpFileName() functions that return a temporary file name. However, unlike
previous TmpFileName() functions they create a file as TmpFile() does
to avoid a race condition, and close the file before the name is returned.
- Added StringVar template function that converts its argument to a string.
- It is now possible to pass options to Wait() (like the 3rd argument
to waitpid).
- The pseudo-random number generators were redesigned. The ERand class
was removed. The functions to generate random seeds (TimeSeed, RandomSeed,
and URandomSeed) are not member-functions anymore.
Version 0.9.2
Next to a few minor internal improvements version 0.9.2 has several user
visible changes:
- Wrapper classes for Posix Threads were added. They are Thread, ThreadAttr,
Mutex, CondVar, Semaphore, MutexLock, and CMutexLock.
see Threads, Mutexes, Semaphores.
- When you compile UDS, two libraries are created. libuds (the 'normal'
version) and libudsthread, a threadsafe version. Threads are not supported
in libuds. You have to link against libpthread and compile your code with
-D_REENTRANT if you want to use libudsthread.
- Generic 'Action' classes were added. Those classes 'store' function calls
and are defined in uds/action.hh.
See Action, FinalAction, and
VRemember, and test/example9.cc for one of the more obscure hello world
programs ;-)
- A class for socket streams has been added.
See Socket Stream class
Version 0.9.1
This release contains a few minor bug fixes / changes:
- Added FileDes, FileAccess, NamedSocket (untested!), SetIntersection,
and CkStdCall convenience functions. Have a look at the reference for
descriptions.
- Added a new constructor to classes generated by _uds_ExceptionClass and
_uds_ExceptionClassF to avoid implicit conversion from const char* to
bool. The same with TmpFileName.
- The random number generators can now be initialized automatically with
calls to RandomSeed (uses /dev/random), URandomSeed (uses /dev/urandom),
and TimeSeed (uses system time).
Have a look at the reference.
Version 0.9.0
This is the first release of the UDS collection.
No release notes for today.
|