boost 1.53 - a short overview

published at 07.02.2013 21:01 by Jens Weller
Save to Instapaper Pocket

So, there I was on my way to Amsterdam on Monday evening, reading on twitter that boost 1.53 had been released. Which is really great, as I think that this is really an important release. Not only does it offer 5 new libraries, it also brings some important updates and patches. But I've been busy with BlackBerry 10 till yesterday, so now a blogpost about boost 1.53, which it really deserves.

New Libraries

Its pretty rare that we get so many new libraries into boost in one release. There is still a bunch of good libraries in review (f.e. there is still no boost::log, and a lot of other interesting libraries waiting for review). So, what did we get? The 5 new libraries are:

Especially odeint makes me happy, as Karsten Ahnert presented it at C++Now and Meeting C++ last year. boost::atomic shows an important role for boost in the future: to enable C++11 features in C++03 applications. Boost offers with boost::atomic now a C++03 atomic implementation, which mimimcs the C++11 Standard atomics. boost::atomic shares with coroutine and lockfree, that it is also meant for the Async/Multithreaded domain. As the name tells, boost::coroutine is a coroutine implementation for boost. It enables you to run blocking code in a coroutine, hence not blocking your (main) thread. Lockfree offers lock free datastructures, what I've seen from it, looks good, but there is no STL like container interface yet... Multiprecision offers "provides integer, rational and floating-point types in C++ that have more range and precision than C++'s ordinary built-in types", so its a very mathematical library. Not my domain ;) But nice, for example it offers floats with user set precision:

//a float variable with a precision of 300 digits
boost::multiprecision::number<boost::multiprecision::mpfr_float_backend<300> > my_float;

That's pretty nice. I know my friends from the scientific domain of C++ are going to love it. From this domain comes also odeint, which is a library for ordinary differential equations in C++. Last year odeint was already presented at C++Now and later Karsten Ahnert also gave a talk at Meeting C++ about his library. The odeint overview has further details.

Updates / Patches

This is also an important issue, why this release is so unique. Its not often, that there are two news for a single release at boost. This time it is because there is an important patch for boost::locale handling utf8. For versions 1.48 - 1.52 there is a patch available. The details and code showing the issue, the actual bug is in the validation code for UTF8, so that non UTF8 code is accepted as UTF8.

With each release of boost there is a lot of updates and fixes for boost libraries, and its always a long list, so I'm not going to cover this here, but show some highlights. The patch for boost::locale is the most outstanding one I would say. Geometry adds new functionality in supporting combinations of point/ring, point/polygon, point/multi_polygon in disjoin and intersects. Graph is now able to read GraphML Files with multiple Graphs. shared_ptr can now also allocate shared arrays, hence there is also a make_shared and allocate_shared for arrays now. Also boost::thread gets an update, making it more C++11 compatible and adding more functionality. Also there is a good number of bug fixes for Thread.

 

Join the Meeting C++ patreon community!
This and other posts on Meeting C++ are enabled by my supporters on patreon!