Libraries

Summary

This page describes the preferred libraries used with the Mantid code base.

General

  • Use libraries from std where possible.

  • Boost header-only libraries are also always available. The following compiled Boost libraries are available:

    • regex

    • date_time

    • python

    • serialization

    • others required must be discussed with the TSC

  • Eigen is used for fast linear algebra calculations

  • Poco is also used for:

    • asynchronous method support

    • application configuration

    • logging

    • path handling (will eventually be replaced by std::filesystem)

    • networking

    • XML parsing

Specific Recommendations

Regex

Prefer boost::regex over std::regex (bugs in std::regex until gcc 5 and some platforms still use gcc 4.8)

String Algorithms (chop, ends_with etc)

  • For any string functions that are not implemented in the C++ standard, prefer Boost algorithms if possible

  • Some string utilities also exist in MantidKernel/Strings.h