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