Announcing release 0.10 of LibCXX

New features and major API changes

x::function template, similar to std::function, but uses virtual inheritance instead of dynamic memory allocation.

Then, reference-counted lambdas and the derived values design pattern provide a more generic replacement for event callbacks.

Inotify classes.

Removed various ctype-related classes, replaced with courier-unicode based functionality.

Loading shared libraries.


Sorted vectors.

Type-safe numerical aliases.

Function references.

Mcguffin containers.

Fixed semaphores.

Removed x::rwmutex and several related classes (including x::rwmutexdebug and x::vipobjdebug that was based on x::rwmutexdebug). This functionality is supported by std::shared_mutex in C++17.

weakunordered_map, and weakunordered_multimap.

Deprecated eventqueuemsgdispatcher, threadeventqueuemsgdispatcher, and dequemsgdispatcher. Replaced with a more generic and simpler threadmsgdispatcher.

Renamed x::destroyCallbackFlag to x::destroy_callback and x::destroyCallbackFlagWait4 to x::destroy_callback_wait4, in order to remove unsightly camel-case. Ditto: getFd() to get_fd() and getEventfd() to get_eventfd(). Ditto: getValue() to get() and setValue() to set(), in x::property::value.

Removed filestat. fileattr->stat() returns a struct stat value directly, or throws an exception. fileattr->try_stat(), returns a std::optional, and returns an undefined value instead of throwing an exception. fileattr->try_readlink() is an analogous version of readlink() that returns a std::optional instead of throwing an exception.

Attempting to read the contents of a nonexistent directory will not throw an exception, rather begin() quietly returns the ending iterator value.