Boost (C ++ library)

from Wikipedia, the free encyclopedia
Boost C ++ libraries

Boost logo, light version
Basic data

Current  version 1.73.0
( April 22, 2020 )
operating system portable; Unix , BSD, macOS , GNU / Linux , Windows etc. a.
programming language C ++
category Program library
License Boost software license
www.boost.org

Boost ( English Boost C ++ libraries ) is a free C ++ - library consisting of a plurality of portable sub-libraries. The sub-libraries serve a wide variety of tasks from algorithms on graphs to metaprogramming and memory management .

New libraries can be suggested for inclusion in Boost at any time, but they have to go through an extensive review process. Parts of Boost were included in a so-called technical report of the standardization committee for C ++ and later integrated into the C ++ language (ISO / IEC 14882: 2011).

application areas

Boost consists of sub-libraries for various purposes. What they have in common is the goal of increasing productivity when programming with C ++. In addition, Boost libraries should be portable and generally applicable. Otherwise they serve no special purpose in their entirety.

The following topics are currently covered by Boost, among others:

development

The Boost project was originally founded in 2000 by members of the C ++ standardization committee to make suggestions for C ++ extensions public and to test them in practical use. Boost is now a large collection of C ++ libraries regardless of their relevance for the next C ++ standard.

Well-known commercial companies also contribute code and libraries, such as the GIL (Generic Image Library) graphics library from Adobe .

Some of the libraries have meanwhile been included in the C ++ Library Technical Report 1 (TR1), which has already been adopted , and can therefore be found in the coming C ++ standard. Ten Boost libraries were accepted by the C ++ committee. In addition, some additional Boost libraries were proposed for the planned Technical Report 2 (an extension of the upcoming C ++ standard to be adopted by the standardization committee).

Beman Dawes and David Abrahams are still active initiators of Boost in the community. The author of several books on C ++, Nicolai Josuttis , made the Boost.Array library available in 2001. About 3000 people have subscribed to the Boost mailing lists , and a few dozen of them are also regularly active.

quality control

Inclusion of new libraries

Every new library that is to be included in Boost must be subjected to a so-called review by the Boost community. Interested developers can give ratings as well as express approval or rejection. These are evaluated and have an impact on inclusion in the library. This process is intended to achieve a high level of quality, as this may find its way into the C ++ standard.

Regardless of the review process, a library that is to become part of Boost must, among other things

  • are in a clarified copyright situation,
  • meet certain license conditions (the Boost Software License is recommended ),
  • be of general use,
  • be portable .

The author must also take an active part in the quality assurance process and deal with formal issues such as B. Source code formatting or documentation must conform to the agreed guidelines.

License terms

To be part of Boost, a library must have a license that meets the following conditions:

  • It must be easy to read and understand.
  • It must grant everyone free copying, usage and modification rights for any purpose (commercial and non-commercial).
  • It must require that the validity of the license be stated in any copy or modification of the software sources.
  • It may not require that the license be specified for any executable or binary files generated.
  • It may not require that the source text be supplied with the generated executable or binary files.
  • You may limit the use of the library name and description to the standard version on the Boost website.

As a result of these conditions, it is possible to use all Boost libraries without knowing the specific license. Boost libraries can be used in projects that are under a license with a copyleft clause, as well as in projects that are not open source .

It is strongly recommended to use the Boost Software License , as it is a long-term goal to make all Boost libraries available under a uniform license. In fact, it is unlikely that a library will be accepted without a Boost Software License .

Tests and maintenance

All Boost components are regularly tested on various old and new compilers. Various things are checked, such as the compilability, functionality and completeness of the license information. The results are regularly announced on the Boost mailing list and published on the Boost website.

Boost contains its own test framework which is also used to try to maintain the quality of the Boost libraries. This is loosely structured according to the maxims of Extreme Programming .

In the event of bugs , the Boost developers ask for a report on one of the mailing lists or in Boost's own trac , but preferably only after the reporting programmer has checked whether the bug has been corrected in the current developer version.

Testing and maintenance of Boost is made more difficult by the strongly varying quality of the supported platforms and, above all, compilers, which can be seen, among other things, from the numerous variants and workarounds within the Boost code.

It is critical that some Boost libraries have not received or have not received any maintenance for a long time, which can at least limit their suitability for modern applications.

technology

Many parts of Boost make extensive use of templates ; H. generic programming or metaprogramming . This places high demands on the conformity of the compilers to be used . In parallel, however, an attempt is made to bypass as many compiler errors as possible. The developments also uncover the limitations of the previous compilers and can thus lead to further proposals for the standardization of compilers and their conformity tests.

literature

  • Boris Schäling: The Boost C ++ Libraries . 2nd Edition. XML Press, 2015, ISBN 1-937434-37-0 .
  • Boris Schäling: The Boost C ++ Libraries . XML Press, 2012, ISBN 0-9822191-5-6 .
  • Björn Karlsson: Beyond the C ++ Standard Library. An Introduction to Boost . Addison-Wesley, 2007, ISBN 0-321-13354-4 .
  • Jeremy G. Siek, Lie-Quan Lee, Andrew Lumsdaine: The Boost Graph Library: User Guide and Reference Manual . Addison-Wesley, 2002, ISBN 0-201-72914-8 .

Web links

credentials

  1. Release 1.73.0 . April 22, 2020 (accessed April 28, 2020).
  2. The boost Open Source Project on Open Hub: Languages ​​Page . In: Open Hub . (accessed on July 18, 2018).
  3. a b c Boost Software License: Text of version 1.0 , explanation of the license
  4. a b Review process for boost libraries
  5. a b C ++ Technical Report 1 (PDF; 1.37 MB)
  6. Boost.org "Background" page
  7. a b c Requirements and Guidelines for Boost Libraries
  8. List of Boost Libraries
  9. Adobe Generic Image Library ( Memento of the original from July 7, 2007 in the Internet Archive ) Info: The archive link was inserted automatically and has not yet been checked. Please check the original and archive link according to the instructions and then remove this notice. @1@ 2Template: Webachiv / IABot / opensource.adobe.com
  10. C ++ Technical Report 2
  11. Information on Boost's licensing policy
  12. Boost Compiler Status Report
  13. Boost Test Library
  14. Boost page about reporting bugs