Tuesday, September 11, 2018

Rudiments 1.1.0 Release Announcement

Version 1.1.0 of Rudiments, the C++ class library for developing systems and applications, is now available.

This release features some fairly significant restructuring of the SAX and DOM related classes. In particular, xmlsax has been genericized into sax, xmldomn has been genericized ingo dom, and xmldomnode has been genericized into domnode. The xmlsax/xmldom classes have been reworked to inherit from sax/dom. The jsonsax/jsondom classes have been added to manipulate JSON objects. The csvsax/csvdom classes have been added to manipulate CSV files. And, finally, the xmldomevents class has been renamed to just domevents, as it can be used with any class that inherits from dom.

The bytebuffer class has also been overhauled and is now implemented similarly to std::basic_string, with similar performance characteristics.

The url class supports HTTP POST now.

Otherwise, there are a ton of internal fixes and improvements.

ChangeLog follows:

  • fixed some dictionary and xmlsax memory leaks
  • fixed lib/lib64 detection in configure script
  • fixed Werror management in configure script
  • fixed race condition in threadmutext test
  • --enable-built-in-regex works on uw7 now
  • added regularexpression match-with-length methods
  • fixed file test on OSR and UnixWare
  • disabled chown in file test on Windows (not reliable over cifs)
  • fixed file descriptor passing on OSR
  • updated xmldomnode::print() to use the output interface
  • added various clearAndDelete...() methods to container classes
  • reenabled chat class by default
  • updated process::backtrace() to take an output, consolidated methods
  • added explicit virtual destructors to input/output classes
  • removed unused containerutilinlines.h header
  • improved dlopen/-ldl configure test
  • abstracted sax and dom classes
  • added csvsax and csvdom classes
  • renamed xmldomnode and xmldomevents to domnode and domevents
  • refactored write/print/xml methods of dom/domnode classes
  • refactored some classes to have trivial constructors
  • renamed regularexpression::compile() to setPattern(), added getPattern()
  • renamed memorypool::deallocate() to memorypool::clear()
  • renamed memorypool::allocateAndClear() to memorypool::allocateAndZero()
  • added clear-with-parameter-reset methods and parameter-getters to dynamicarray, bytebuffer, stringbuffer
  • added cursordomnode class
  • added jsonsax and jsondom classes
  • added some http-post options to url class
  • improved performance of charstring::integerLength(), charstring::parseInteger(), and stringbuffer::append(integer)
  • refactored bytebuffer/stringbuffer to improve performance
  • getStringLength() -> getSize() in read() with terminator
  • added safe-to-include-byteswap.h-after-netinet/in.h configure test
  • updated tls code to actually use RUDIMENTS_SSL_VOID_PTR macro
  • moved various madvise/mprotect/mlock methods to sys class
  • added tests for systems that have, but don't define tzset, ftruncate, and fsync
  • various windows spawn() fixes