Rudiments 0.50 is now available!
The most significant feature in this release is a refactored, extent-based implementation of the variablebuffer and stringbuffer classes. The original implementation was crude, sufficient for storing fairly short strings, small in code size, but scaled poorly. The new implementation scales well while the code size still remains small.
There are also new dynamicarray and staticarray classes. Dynamicarray implements an array that expands as needed. It's also extent-based and scales well. Staticarry is just a thin wrapper around a C array. It only exists because you might want a dynamicarray who's members are static arrays, and there's no good way to do that in C++ without a wrapper. Or, at least none that I'm aware of.
This release also includes improved support for Windows and various other odd platforms, as well as various tweaks and fixes.
Full ChangeLog follows:
0.50 - added dictionary::detach and dictionary::getValue(key)
added xmldom::getNullNode()
improved xml printing for text nodes
signalmanager::waitForSignal(NULL) works as expected now
updated charstring::httpEscape not to escape legal symbols
added flush() method to stdio classes
added detection and support for vsnprintf_s
fixed serviceentry, protocolentry and rpcentry on windows
updated *entry classes for NULL and uninitialization safety
implemented filesystem::initialize(fd) for Windows
updated filesystem::initialize() with NULL and -1 to behave in
predictable ways now, updated documentation for them too
abstracted _get_osfhandle calls and added an invalid parameter callback
updated filedescriptor to use bit fields for all of its flags
implemented file::changeOwner() for windows
removed xattrs stuff
removed SSL-related ifdef's from headers and implemented degenerate
SSL routines for when SSL isn't supported
timezone conversion works on windows now
refactored bytebuffer and stringbuffer to be extent-based
fixed a subtle stringbuffer with initialcontents bug
refactored stringbuffer to use bytebuffer::write/appendFormatted
directly instead of charstring::parseNumber
implemented dynamicarray and staticarray classes
refactored build process to use nmake and be compatible with many
different versions of MS Visual Studio
updated vsnprintf_s calls for platforms where it's not defined
added configure test for bool and true/false and definitions for
platforms that don't define them
updated timed semaphore waits - if seconds or nanoseconds are negative
then the timed wait acts like an un-timed wait
added support for getsockopt with size_t optlen parameter
fixed strncasecmp on windows when str2 is longer than str1
xmlsax uses memorymap on Windows now
fixed file::lockFile() and file::unlockFile() on Windows
fixed charstring::printf on Solaris 2.5.1
fixed datetime::getSystemDateAndTime() for Windows without 64-bit
integers
fixed potential double-CloseHandle in thread class