Plenty of good stuff in this release: much improved support for Windows, some refactoring of the signal-handling classes, unification of the passwdentry and shadowentry classes into a single userentry class, improvements when compiling with clang, and a slew of subtle bug fixes.
Full changelog follows:
- combined passswdentry and shadowentry classes into userentry class
- updated file::sync() to use FlushFileBuffers directly
- implemented sys::sync(), reboot(), halt() and shutdown() for windows
- implemented various sys::getXXX() methods for windows
- added "detached" option to process::spawn()
- crash-related methods in process class catch SIGABRT, SIGFPE, SIGILL, SIGBUS, SIGIOT, SIGEMT and SIGSYS in addition to SIGSEGV now
- shutdown-related methods in process class catch SIGQUIT and SIGHUP in addition to SIGINT and SIGTERM now
- on windows, signal classes now support catching, sending/raising SIGABRT, SIGFPE, SIGILL, SIGINT, SIGSEGV and SIGTERM and sending/raising SIGKILL
- disabled threads outright on OSR5
- fixed threads detection for solaris 2.6
- codetree bails properly at end of string now
- fixed a break-related condition that could cause codetree to loop indefinitely
- added support for a beginning-of-line character to codetree
- added support for recursive breaks to codetree
- made charstring::compareIgnoringCase null-safe for platforms that don't have str(n)casecmp
- improved Windows support in signal classes
- -Wno-overloaded-virtual is now set when clang is used
- fixed some subtle kqueue-related bugs
- added sys/byteorder.h and htonll/ntohll for solaris 11
- fixed endian-detection macros for solaris 10 and older
- added support for SIGLARM and signalmanager::alarm() on windows
- improved windows implementation of semaphoreset
- added sys::signalsInterruptSystemCalls()
- added process::supportsFork()