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
- 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.
- 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.
- C++11-compliant compiler is now required by the library.
- Its I/O extensions have been entirely rewritten.
- Added support for arbitrary precision complex valued quadrature and hence contour integration.
- Added support for contour integrals.
- Performance of polynomial addition is improved.
- Containers of moveable but non-copyable elements can now be serialized.
- The default constructor of multi_index_container is no longer explicit.
- The master_test_suite_t object is no more copyable.
- Dataset test case can now use command line parameters.
- 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.