Last.fm open sources C++ tool library
The "Music Information Retrieval" team at Last.fm have released moost, a C++ library of tools they use, as an open source library. Moost contains a wide range of functionality that is used throughout Last.fm's codebase, ranging from handling simple utility tasks to providing essential major code components. At the utility end, for example, the library includes a stringify
function template which makes it easier to turn more complex objects into meaningful strings and a which
template that makes it simple to work with pairs and containers that hold pairs.
At the more complex end, there's a framework for creating background processes with logging which is used by all of Last.fm's backend services and offers a set of standard options and a service shell so users can connect to that running service. Last.fm uses threading heavily and has added templates such as safe_shared_ptr
to make more thread-resiliant shared resources.
Large static datasets are also an area that gets attention within moost, with support for memory-mapped datasets. Gigabyte scale datasets can be mapped as vectors, multimaps or dense hashmaps in memory and shared between different processes, all while being access as a constant standard container. Other supported features include an abstraction for shared object loading and instantiation, a simple STOMP protocol client, functions for hashing and message digests and key-value store wrappers.
Moost is hosted on Last.fm's GitHub repository and is published under the MIT licence. It requires a recent C++ compiler and Boost 1.42 or later, and will need Last.fm's MirBuild to build.
(djwm)