Testing

Introduction

Will all Boost libraries work with your compiler?  Unfortunately, the answer is "it depends". See the regression testing results to see exactly what works and what doesn't.

Boost libraries rely on modern C++ features such as templates and the C++ Standard Library.  Most modern compilers support those major features fairly well. But even today, years after the adoption of the C++ Standard, some compilers still don't support important minor features like partial template specialization.

Boost library authors often expend a great deal of effort trying to work around compiler deficiencies.  Nevertheless, some libraries will not compile at all with certain compilers or may have crippled functionality.  Even if the current release of a compiler supports a boost library, older versions of the compiler may not work properly.

Boost releases are run through regression tests which automatically generates compiler status tables for various platforms. Unless otherwise indicated, the C++ Standard Library implementation is the one shipped with the compiler.

Warnings:

  • These tables are not a good indication of a particular compiler's compliance with the C++ Standard.  The Boost libraries often contain workarounds which mask compiler deficiencies.
  • Some regression tests are run only occasionally, and so are relatively out-of-date.  Check the date for each table.

The development code is being updated several times a day, so it may contain bug fixes, compiler workarounds, new features, and even whole new libraries. It may be unstable, however.

Regression Testing

A group of volunteers donate CPU cycles, and large amounts of disk space, to collectively produce the regression testing result tables. Various Boost releases are tested for the benefit of library developers and interested users:

Version Users Developers
Local Results
Main trunk Summary Unresolved Issues
Release branch Summary Summary Unresolved Issues
Alternate Results @ MetaCommunications
Main trunk Summary Unresolved Issues

Smoke Testing

The full regression test reports give a broad and deep view of how Boost libraries perform across many platforms and compilers. But developers often need a quick snapshot of how tests are doing on representative platforms and compilers. The smoke tests check the repository at regular intervals and run incremental tests if anything has changed. Test results may be available as little as 5 minutes later, depending on the platform and how many libraries were affected by changes. More extensive changes take a couple of hours to test.

Version Platform and Compiler
Main Trunk Windows (32-bit), Visual C++ 2005 SP1
Main Trunk Ubuntu Linux (X86 32-bit), gcc-4.1.2

Inspection

The Boost Subversion trunk is inspected daily to detect problems such as missing copyrights or licenses. The Boost Inspection Report tells all!

Release Branch Snapshots

 

Release branch snapshots are built on a daily basis. They are used for quality control checks on the release currently under development.  The Unix tarballs and Windows zipballs are identical except for the line endings exported from Subversion.

Because the snapshots represent work-in-process, they are not suitable for production use.

A Boost Inspection Report is also run on the release branch snapshot.

The Subversion release branch can be checked out from http://svn.boost.org/svn/boost/branches/release.

Acknowledgements

The compiler status tables have been prepared with resources donated by a number of individuals, educational institutions, and companies. Boost would like to thank them for their support.

Note, however, that Boost does not endorse any product or service, nor does Boost guarantee that some or all of its libraries work with any of the products or services mentioned above.