GSoC/GCI Archive
Google Summer of Code 2014

Boost C++ Libraries

License: Boost Software License (BSL1.0)

Web Page:

Mailing List:

Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work well with the C++ Standard Library. Boost libraries are intended to be widely useful, and usable across a broad spectrum of applications. The Boost license encourages both commercial and non-commercial use. We aim to establish "existing practice" and provide reference implementations so that Boost libraries are suitable for eventual standardization. Ten Boost libraries are included in the C++ Standards Committee's Library Technical Report (TR1) and in the new C++11 Standard. C++11 also includes several more Boost libraries in addition to those from TR1. More Boost libraries are proposed for TR2.


  • A C++11 template metaprogramming library This project aims to provide a high quality template metaprogramming library for C++11. Based on previous work, I claim that this could increase the expressiveness and reduce the compilation time of template metaprograms, leading to more joy and productivity.
  • Boost.Math Generalized Hypergeometric Functions In this project, we will implement fast, accurate calculations of certain generalized hypergeometric functions and establish convergent parameter ranges for these. We will write them with generic templates, as is suitable for Boost.Math.
  • Boost.Pipeline Boost.Pipeline provides an easy way to break down large computations on batch data into smaller tasks which run parallel. The project is inspired by the Unix pipeline and based on the N3534 proposal submitted by Google.
  • Boost.Thread Scheduled Executors Boost.Thread and std::thread have provided C++ programmers with a mechanism to easily create threads. Unfortunately the management of these threads is still largely left to the programmer to handle. Scheduled executors, are mechanisms which can schedule work for execution, either synchronously or asynchronously. The key feature of scheduled executors is the ability to schedule a work unit at an exact time point in order to guarantee that certain work units are executed before other.
  • Boost.uBlas: Optimization via Smart Templating and a Tree Optimizer class Boost uBlas offers many different algorithms for operations on vectors and matrices. The selection of the best algorithms to use and the most efficient order of operations for a given problem is difficult and directly affects the libraries performance. This project seeks to introduce Smart Expression Templating and the compile time reorganization of expressions in order to maximize performance.
  • Boost.XML - A Standard XML Library To define and add a set of XML APIs for C++ ( like DOM, SAX, XMLReader, etc ) in Boost.XML and make it robust enough to wrap different back-ends. Boost.XML will be extended to work with multiple back-ends to make sure that the API is backend-agnostic.
  • Expand and Improve Boost.Compute Implement a parallel version of some algorithms which are present in C++ STL and are missing in Boost.Compute. Improve the Random Number Generation aspect of the library by adding few extra distributions and a new engine. Test and benchmark all of the above adequately. Improve the performance of some of the existing algorithms by providing alternate implementations to the ones already present. Note that this will also involve benchmarking them first.
  • HTTP server on Boost Design and implementation of a core HTTP server on Boost that can be embedded in other projects (and can co-exist with other embeddable communication facilities) on top of Boost ASIO. The server will expose the HTTP power (chunking, pipelining, persistent streams, continue, protocol upgrades, ...) and allow multiple backends (CoAP, built in server, ...) while keep a modular design to allow the library be used in resource-constrained devices.