Boost es un conjunto de bibliotecas para el lenguaje de programación C++ que brinda soporte para tareas y estructuras como álgebra lineal , generación de números pseudoaleatorios , multiprocesamiento, procesamiento de imágenes , expresiones regulares y pruebas unitarias . Contiene 164 bibliotecas individuales (a partir de la versión 1.76). [3]
Todas las bibliotecas Boost están licenciadas bajo la Licencia de Software Boost, diseñada para permitir que Boost se use con proyectos de software libre y propietario. [4] Muchos de los fundadores de Boost están en el comité de estándares de C++ , y varias bibliotecas Boost han sido aceptadas para su incorporación en el Informe Técnico de C++ 1 , el estándar C++11 (por ejemplo, punteros inteligentes, subprocesos, expresiones regulares, aleatorios, proporción, tuplas) [5] [6] y el estándar C++17 (por ejemplo, sistema de archivos, cualquiera, opcional, variante, string_view). [7]
La comunidad Boost surgió alrededor de 1998, cuando se publicó la primera versión del estándar. Desde entonces ha crecido continuamente y ahora desempeña un papel importante en la estandarización de C++. Aunque no existe una relación formal entre la comunidad Boost y el comité de estandarización, algunos de los desarrolladores participan activamente en ambos grupos.
Las bibliotecas están dirigidas a una amplia gama de usuarios de C++ y dominios de aplicación. Abarcan desde bibliotecas de uso general como la biblioteca de punteros inteligentes , pasando por abstracciones de sistemas operativos como Boost FileSystem , hasta bibliotecas dirigidas principalmente a otros desarrolladores de bibliotecas y usuarios avanzados de C++, como la metaprogramación de plantillas (MPL) y la creación de lenguajes específicos de dominio (DSL) (Proto).
Para garantizar la eficiencia y la flexibilidad, Boost hace un uso extensivo de plantillas . Boost ha sido una fuente de trabajo e investigación extensas sobre programación genérica y metaprogramación en C++. [8]
La mayoría de las bibliotecas Boost se basan en encabezados , consisten en funciones y plantillas en línea y, como tales, no es necesario compilarlas antes de su uso. Algunas bibliotecas Boost coexisten como bibliotecas independientes. [9] [10]
Entre los fundadores originales de Boost que aún están activos en la comunidad se encuentra David Abrahams . Nicolai Josuttis, autor de varios libros sobre C++, contribuyó a la biblioteca de matrices Boost en 2001. Existen listas de correo dedicadas al uso y desarrollo de bibliotecas Boost, activas a partir de 2023. [actualizar][ 11]
Boost está licenciado bajo su propia licencia libre y de código abierto , conocida como Boost Software License. [13] Es una licencia permisiva al estilo de la licencia BSD y la licencia MIT , pero sin requerir atribución para la redistribución en forma binaria . [14] La licencia ha sido aprobada por OSI desde febrero de 2008 [15] [16] y es considerada una licencia de software libre , compatible con la Licencia Pública General GNU , por la Free Software Foundation . [12]