2 min read

After the release of Boost 1.67.0 in April earlier this year, Boost 1.68.0 is now out with a new library named YAP and few updates in the libraries such as, Beast, Fusion, and GIL to name a few.

Boost provides peer-reviewed portable C++ source libraries for generic programming, concurrency programming, metaprogramming, data structures, testing, and many more tasks and structures.

YAP: The new expression template library

YAP is an expression template library that aims to help developers in writing optimized and maintainable code. Some of its features include:

  • Member and non-member functions on ExpressionTemplates and Expressions can be added with compact macros.
  • A reference template that models ExpressionTemplate exists for prototyping or experimentation.
  • The evaluation done by Boost.YAP closely matches the semantics of built-in C++ expressions, enabling clearer understanding of the semantics of expression evaluation.
  • Expressions can be transformed explicitly in a user-defined way with the help of overloaded call operators in a transform class. The evaluate(transform(expr)) idiom is expected to be one of the most common ways of using YAP to manipulate and evaluate expressions.
  • Boost.YAP provides functions that manipulate expressions or their subexpressions.

Updated libraries in Boost 1.68.0

Beast:

  • An executor work guard is added in all composed operations used in the implementation. To avoid crashes related to asynchronous completion handlers, users are encouraged to upgrade.

Fusion:

  • A workaround is added for ambiguous call of fusion::deque constructor on GCC 4.4/c++0x.
  • A bug with C-style array is now fixed.
  • Fixed a fusion::for_each signature to take functor by value. This may break existing code with non-copyable (non-movable) functor.
  • Unintentional MPL placeholder substitution bug on fusion::transform is now fixed.

GIL:

  • C++11-compliant compiler is now required by the library.
  • Its I/O extensions have been entirely rewritten.

Math:

  • Added support for arbitrary precision complex valued quadrature and hence contour integration.
  • Added support for contour integrals.
  • Performance of polynomial addition is improved.

Multi-index Containers:

  • Containers of moveable but non-copyable elements can now be serialized.
  • The default constructor of multi_index_container is no longer explicit.

Test:

  • The master_test_suite_t object is no more copyable.
  • Dataset test case can now use command line parameters.

Uuid:

  • Breaking change: sha1 detail namespace header redirection for backwards compatibility was removed.
  • Added support for std::hash.
  • Added support for move semantics on random generators.
  • Properly handle EINTR when acquiring entropy.
  • Use getrandom(2) instead of getentropy(3) on linux.

These were some of the updates in Boost 1.68.0. To know more, head over to their official site.

Read Next

Working with shaders in C++ to create 3D games

Understanding the Dependencies of a C++ Application

Getting Inside a C++ Multithreaded Application


Subscribe to the weekly Packt Hub newsletter. We'll send you the results of our AI Now Survey, featuring data and insights from across the tech landscape.

* indicates required

LEAVE A REPLY

Please enter your comment!
Please enter your name here