Bibliotecas Boost

De Wikipedia, la enciclopedia libre
(Redirigido desde «Boost»)
Saltar a: navegación, búsqueda
Bibliotecas Boost C++
Boost.png
Desarrollador
Comunidad de Boost C++[1]
boost.org
Información general
Última versión estable 1.56.0
7 de agosto de 2014; hace 3 meses (2014-08-07)
Género Biblioteca
Programado en C++
Sistema operativo Multiplataforma
Licencia Boost Software License[2]
En español No No

Boost es un conjunto de bibliotecas de software libre y revisión por pares preparadas para extender las capacidades del lenguaje de programación C++. Su licencia, de tipo BSD, permite que sea utilizada en cualquier tipo de proyectos, ya sean comerciales o no.

Descripción[editar]

Su diseño e implementación permiten que sea utilizada en un amplio espectro de aplicaciones y plataformas. Abarca desde bibliotecas de propósito general hasta abstracciones del sistema operativo. Con el objetivo de alcanzar el mayor rendimiento y flexibilidad se hace un uso intensivo de plantillas. Boost ha representado una fuente de trabajo e investigación en programación genérica y metaprogramación en C++.

Varios fundadores de Boost pertenecen al Comité ISO de Estándares C++. La próxima versión estándar de C++ incorporará varias de estas bibliotecas.[3]

Actualmente Boost está formada por más de 80 bibliotecas individuales, incluidas las bibliotecas de álgebra lineal, la generación de números pseudoaleatorios, multihilos, procesamiento de imágenes, expresiones regulares, pruebas unitarias, entre otros. La mayoría de las bibliotecas Boost están basadas en cabeceras, funciones en línea y plantillas, por lo que no tienen que ser construidas antes de su uso.[4]

Desarrolladores[editar]

Los creadores originales de Boost, Beman Dawes y David Abrahams, siguen activos en la comunidad. El autor de varios libros sobre C++, Nicolai Josuttis también ha contribuido la biblioteca array de Boost en 2001. Alrededor de 3.000 personas están suscritas a la lista de correo y decenas de ellos son muy activos.

Lista de bibliotecas de Boost[editar]

Procesamiento de cadenas y texto[editar]

  • conversion/lexical_cast: plantilla de conversion léxica, por Kevlin Henney.
  • format: Operaciones de formato de tipo seguro (similares a printf), por Samuel Krempp.
  • iostreams: Marco para la definición de flujos, buffers de flujos y filtros de entrada/salida, por Jonathan Turkanis.
  • regex: Biblioteca de expresiones regulares, por John Maddock
  • spirit: Marco analizador de LL que representa los analizadores directamente como gramáticas EBNF en funciones "inline" de C++, por Joel de Guzmán, Hartmut Kaiser, Nuffer Dan y su equipo.
  • string_algo: Biblioteca de algoritmos de cadena, por Pavol Droba.
  • tokenizer: Separación de una cadena o secuencia de caracteres en una serie de "tokens", de John Bandela.
  • wave: Implementación conforme al estándar de la funcionalidad del preprocesador C99/C++ tras una interfaz de iteradores fácil de usar, por Hartmut Kaiser.
  • xpressive: Expresiones regulares que se pueden escribir como cadenas o como expresión de plantillas, y que puede referirse el uno al otro y a sí mismos de forma recursiva con el poder de las gramáticas libres de contexto, por Eric Niebler.

Contenedores[editar]

  • array: Envoltura del contenedor de la STL para matrices de tamaño constante, por Nicolai Josuttis.
  • bimap: Mapas bidireccionales, por Matías Capeletto.
  • circular_buffer: Contenedor compatible con el de la STL también conocido como "anillo" o "buffer cíclico", por Jan Gaspar.
  • dynamic_bitset: Versión ejecutable mayor std::bitset por Jeremy Siek y Chuck Allison.
  • gil: Biblioteca genérica de imágenes, por Lubomir Bourdev y Hailin Jin.
  • graph: Componentes y algoritmos genéricos de grafos, por Jeremy Siek y un equipo de la Universidad de Notre Dame.
  • intrusive: Contenedores y algoritmos intrusivos, por Ion Gaztañaga.
  • multi_array: Contenedores multidimensionales y adaptadores para las matrices de datos contiguos, por Ron García.
  • multi_index: Contenedores con múltiples interfaces de acceso compatibles con la STL, por Joaquín M López Muñoz.
  • pointer container: Contenedores para el almacenamiento de objetos polimórficos acumulados para facilitar la programación orientada a objetos, por Thorsten Ottosen.
  • property map: Conceptos que definen interfaces que mapean claves de objetos a valores de objetos, por Jeremy Siek.
  • unordered: Contenedores asociativos desordenados, por Daniel James.
  • variant: Contenedor seguro, genérico, basado en pilas, por Eric Friedman y Itay Maman.

Iteradores[editar]

  • gil: Biblioteca genérica de imágenes, por Lubomir Bourdev y Hailin Jin.
  • graph: Contenedores y algoritmos genéricos de grafos, por Jeremy Siek y un equipo de la Universidad de Notre Dame; ahora mantenido por Andrew Sutton y Jeremiah Willcock.
  • iterators: Marco de construcción de iteradores, adaptadores, conceptos y más, por Dave Abrahams, Jeremy Siek, y Thomas Witt.
  • operators: Clases e iteradores de plantillas aritméticas, por Dave Abrahams y Jeremy Siek.
  • tokenizer: Separación de una cadena o secuencia de caracteres en una serie de "tokens", por John Bandela.

Algoritmos[editar]

  • foreach: Macro BOOST_FOREACH para desplazarnos fácilmente por los elementos de una secuencia, por Eric Niebler.
  • gil: Biblioteca genérica de imágenes, por Lubomir Bourdev y Hailin Jin.
  • graph: Componentes y algoritmos genéricos de grafos, por Jeremy Siek y un equipo de la Universidad de Notre Dame.
  • minmax: Entensiones de la biblioteca estándar para computaciones simultáneas de min/max, por Hervé Brönnimann.
  • range: Una nueva infraestructura para algoritmos genéricos que proporciona nuevos iteradores, por Thorsten Ottosen.
  • string_algo: Biblioteca de algoritmos de cadena, por Pavol Droba.
  • utility: Plantillas para las funciones next() y prior(), por Dave Abrahams y otros.

Programación de funciones de orden superior[editar]

  • bind y mem_fn: Binding generalizado para funciones/objetos/punteros y métodos miembros, por Peter Dimov.
  • function: Envoltorios para llamadas diferidas o devoluciones de llamada, por Doug Gregor.
  • functional: Adaptadores de funciones de objetos mejorados, por Mark Rodgers.
  • functional/factory: Plantillas para la creación dinámica y estática de objetos, por Tobias Schwinger.
  • functional/forward: Adaptadores que pemiten que objetos con funciones genéricas acepten argumentos arbitrarios, por Tobias Schwinger.
  • functional/hash: Un hash TR1 que puede ser extendido a tipos definidos por el usuario, por Daniel James.
  • lambda: Define pequeñas funciones sin nombre en la llamada actual, entre otras cosas, por Jaakko Järvi y Gary Powell.
  • ref: Una biblioteca de utilidades para pasar referencias a funciones genéricas, por Jaako Järvi, Peter Dimov, Doug Gregor y Dave Abrahams.
  • signals: Implementación del manejo de señales y devoluciones de llamada, por Doug Gregor.
  • signals2: Segunda versión de la biblioteca anterior, por Frank Mori Hess.
  • result_of: Determina el tipo de la expresión de una llamada a una función.

Programación genérica[editar]

  • call_traits: Define tipos para pasar parámetros, por John Maddock, Howard Hinnant, ...
  • concept check: Herramientas para programación genérica, por Jeremy Siek.
  • enable_if: Inclusión selectiva de sobrecargas de funciones, por Jaakko Järvi, Jeremiah Willcock y Andrew Lumsdaine.
  • function_types: Características de tipos para llamadas, construcción de tipos, por Tobias Schwinger.
  • gil: Biblioteca genérica de imágenes, por Lubomir Bourdev y Hailin Jin.
  • in_place_factory, typed_in_place_factory: Construcción genérica de objetos con una variada lista de argumentos, por Fernando Cacciola.
  • operators: Clases e iteradores de plantillas aritméticas, por Dave Abrahams y Jeremy Siek.
  • property map: Conceptos que definen interfaces que mapean claves de objetos a valores de objetos, por Jeremy Siek.
  • static_assert: Aserciones estáticas (aserciones en tiempo de compilación), por John Maddock.
  • type_traits: Plantillas para las propiedades fundamentales de tipos, por John Maddock, Steve Cleary, ...

Metaprogramación de plantillas[editar]

  • function_types: Características de tipos para llamadas, construcción de tipos, por Tobias Schwinger.
  • fusion: Biblioteca para trabajar con tuplas, incluyendo varios contenedores, algoritmos, ... por Joel de Guzman, Dan Marsden y Tobias Schwinger.
  • mpl: Marco de plantillas de metaprogramación de algoritmos, secuencias y clases de metafunciones en tiempo de compilación, por Aleksey Gurtovoy.
  • proto: Biblioteca de plantillas de expresión y kit de herramientas del compilador de construcción de lenguajes específicos de dominio embebidos, por Eric Niebler.
  • static_assert: Aserciones estáticas (aserciones en tiempo de compilación), por John Maddock.
  • type_traits: Plantillas para las propiedades fundamentales de tipos, por John Maddock, Steve Cleary, ...

Metaprogramación de preprocesador[editar]

  • preprocessor: Herramientas de metaprogramación de preprocesador incluyendo repetición y recursión, por Vesa Karvonen y Paul Mensonides.

Programación Concurrente[editar]

  • asio: Redes portables y otros flujos de entrada/salida de bajo nivel, incluyendo sockets, temporizadores, resolución de host, flujos de sockets, puertos serie, descriptores de ficheros y manejadores de Windows, por Chris Kohlhoff.
  • interprocess: Memoria compartida, ficheros mapeados de memoria, exclusiones mutuas para compartir procesos, variables de condición, contenedores y asignadores, por Ion Gaztañaga.
  • MPI: Biblioteca de interfaz de paso de mensajes, para usar en la programación de aplicaciones paralelas, por Douglas Gregor y Matthias Troyer.
  • thread: Multihilos de C++ portable, por William Kempf.

Matemáticas y numéricos[editar]

  • accumulators: Marco para cálculos incrementales, y colección de acumuladores estadísticos, por Eric Niebler.
  • integer: Cabeceras para tratar con tipos enteros.
  • interval: Amplía las funciones aritméticas habituales a intervalos matemáticos, por Guillaume Melquiond, Hervé Brönnimann y Sylvain Pion.
  • math: Varias contribuciones en el ámbito de las matemáticas, por varios autores.
  • math/complex number algorithms: Algoritmos de números complejos que son las inversas de las funciones trigonométricas están actualmente presentes en el estándar de C++, por John Maddock.
  • math/common_factor: Máximo común divisor y mínimo común múltiple, por Daryle Walker.
  • math/octonion: Octoniones, por Hubert Holin.
  • math/quaternion: Cuaterniones, por Hubert Holin.
  • math/special_functions: Una amplia selección de funciones matemáticas especiales, por John Maddock, Paul Bristow, Hubert Holin y Xiaogang Zhang.
  • math/statistical distributions: Una amplia selección de distribuciones estadísticas univariantes y funciones que operan en ellos, por John Maddock y Paul Bristow.
  • multi_array: Contenedores multidimensionales y adaptadores para las matrices de datos contiguos, por Ron Garcia.
  • numeric/conversion: Conversiones numéricas optimizadas basadas en políticas, por Fernando.
  • operators: Plantillas e iteradores de clases de aritmética, por Dave Abrahams y Jeremy Siek.
  • random: Un sistema completo de generación de números aleatorios, por Jens Maurer.
  • rational: Clase de números racionales, por Paul Moore.
  • uBLAS: Álgebra lineal básica para matrices, por Joerg Walter y Mathias Koch.

Corrección y prueba[editar]

  • concept check: Herramientas para programación genérica, por Jeremy Siek.
  • static_assert: Aserciones estáticas (aserciones en tiempo de compilación), por John Maddock.
  • test: Soporte para testeo de programas simples, testeo unitario completo y monitorización de ejecución de programas, por Gennadiy Rozental.

Estructuras de datos[editar]

  • any: Contenedor genérico y seguro para valores individuales de diferentes tipos de valores, por Kevlin Henney.
  • bimap: Mapas bidireccionales, por Matias Capeletto.
  • compressed_pair: Optimización de miembro vacío, por John Maddock, Howard Hinnant, ...
  • fusion: Biblioteca para trabajar con tuplas, incluyendo varios contenedores, algoritmos, ... por Joel de Guzman, Dan Marsden y Tobias Schwinger.
  • multi_index: Contenedores con múltiples interfaces de acceso compatibles con la STL, por Joaquín M López Muñoz.
  • pointer container: Contenedores para el almacenamiento de objetos polimórficos acumulados para facilitar la programación orientada a objetos, por Thorsten Ottosen.
  • property tree: Estructura de árbol de datos especialmente utilizada para guardar datos de configuración, por Marcin Kalicinski y Sebastian Redl.
  • tuple: Definición de funciones que devuelven múltiples valores y más, por Jaakko Järvi.
  • uuid: Identificador único universal, por Andy Tompkins.
  • variant: Contenedor seguro, genérico, basado en pilas, por Eric Friedman y Itay Maman.

Procesamiento de imágenes[editar]

  • gil: Biblioteca genérica de imágenes, por Lubomir Bourdev y Hailin Jin.

Entrada/Salida[editar]

  • asio: Redes portables y otros flujos de entrada/salida de bajo nivel, incluyendo sockets, temporizadores, resolución de host, flujos de sockets, puertos serie, descriptores de ficheros y manejadores de Windows, por Chris Kohlhoff.
  • assign: Contenedores de llenado con datos constantes o generados, por Thorsten Ottosen.
  • format: Operaciones de formato de tipo seguro (similares a printf), por Samuel Krempp.
  • io state savers: Guardado del estado de entrada/salida para evitar datos desordenados, por Daryle Walker.
  • iostreams: Marco para flujos definidos, buffers de flujos y filtros de entrada/salida, por Jonathan Turkanis.
  • program_options: Acceso a los datos de configuración dados en la línea de comandos, en los ficheros de configuración u otras fuentes, por Vladimir Prus.
  • serialization: Serialización de datos arbitrarios para persistencia y clasificación, por Robert Ramey.

Soporte a otros lenguajes de programación[editar]

  • python: Refleja clases y funciones de C++ en Python, por Dave Abrahams.

Memoria[editar]

  • pool: Administración de bloques de memoria, por Steve Cleary.
  • smart_ptr: Plantillas para clases con punteros inteligentes, por Greg Colvin, Beman Dawes, Peter Dimov y Darin Adler.
  • utility: Clase noncopyable más plantillas de las funciones checked_delete(), checked_array_delete(), next(), prior(), más lenguaje a base de miembros, por Abrahams y others.

Análisis (parsing)[editar]

  • spirit: Marco analizador de LL que representa los analizadores directamente como gramáticas EBNF en funciones "inline" de C++, por Joel de Guzmán, Hartmut Kaiser, Nuffer Dan y su equipo.

Interfaces de programación[editar]

  • function: Envoltorios para llamadas diferidas o devoluciones de llamada, por Doug Gregor.
  • parameter: Funciones que aceptan argumentos por nombre, por David Abrahams y Daniel Wallin.

Miscelánea[editar]

  • base-from-member: Lenguaje para inicializar una clase base con un miembro, por Daryle Walker.
  • compressed_pair: Optimización de miembro vacío, por John Maddock, Howard Hinnant, ...
  • conversion: Conversores polimórficos y léxicos, por Dave Abrahams y Kevlin Henney.
  • crc: Código de redundancia cíclica, por Daryle Walker.
  • date_time: Biblioteca Fecha-Hora, por Jeff Garland.
  • exception: Una biblioteca para el transporte de datos arbitrarios en objetos de excepción, y el transporte de excepciones entre hilos (N2179, por Emil Dotchevski.
  • filesystem: Rutas portables, iteración sobre directorios, y otras operaciones útiles de sistemas de ficheros, por Beman Dawes.
  • flyweight: Diseño de patrones para gestionar grandes cantidades de objetos muy redundantes, por Joaquín M López Muñoz.
  • lexical_cast: Conversiones generales de texto literal, como un entero representado como una cadena, o viceversa, por Kevlin Henney.
  • numeric/conversion: Conversiones numéricas optimizadas, por Fernando Cacciola.
  • optional: Envoltorio para valores opcionales, por Fernando Cacciola.
  • program_options: Acceso a los datos de configuración dados en la línea de comandos, en los ficheros de configuración u otras fuentes, por Vladimir Prus.
  • scope_exit: Ejecutar código arbitrario al salir de ámbitos, por Alexander Nasonov.
  • statechart: Máquinas de estados finitos arbitrariamente compleja pueden ser implementadas en código C++ fácilmente comprensible y mantenible, por Andreas Huber.
  • swap: Funciones mejoradas de intercambio genérico, por José Gauterin.
  • system: Soporte de sistemas operativos, incluyendo el apoyo de diagnóstico que será parte de la biblioteca estándar C++0x, por Beman Dawes.
  • timer: Temporizador de eventos, contador de tiempo de progreso, clases de muestra de progreso, por Beman Dawes.
  • TR1: Una implementación del Informe Técnico sobre las extensiones de la Biblioteca C++, con otras bibliotecas Boost como base, por John Maddock.
  • tribool: Biblioteca de tipos lógicos de 3 estados, por Doug Gregor.
  • typeof: Emulación del operador typeof, por Arkadiy Vertleyb y Peder Holt.
  • units: Análisis dimensional y manipulación y conversión de unidad/cantidad, por Matthias Schabel y Steven Watanabe.
  • utility: Clase noncopyable más plantillas de las funciones checked_delete(), checked_array_delete(), next(), prior(), más lenguaje a base de miembros, por Abrahams y others.
  • value_initialized: Envoltorio para inicialización de valores de sintaxis uniforme, por Fernando Cacciola, basada en la idea original de David Abrahams.

Soluciones de "compilador roto"[editar]

  • compatibility: Ayuda para bibliotecas que no siguen el estándar, por Ralf Grosse-Kunstleve y Jens Maurer.
  • config: Ayuda a los programadores de bibliotecas boost a adaptarse a la idiosincrasia del compilador. No está destinada a usuarios de la biblioteca.

Bibliotecas retiradas de Boost[editar]

  • compose: Adaptadores para composición funcional para la STL, por Nicolai Josuttis. Eliminada en la versión 1.32. Utilizar Bind o Lambda en su lugar.

Referencias[editar]

  1. «Comunidad de Boost C++» (en inglés). Consultado el 15 de julio de 2010. «Although Boost was begun by members of the C++ Standards Committee Library Working Group, participation has expanded to include thousands of programmers from the C++ community at large.».
  2. Boost Software License 1.0
  3. ISO/IEC JTC1/SC22/WG21 (2005). «Draft Technical Report on C++ Library Extensions» (en inglés) (PDF).
  4. «Bibliotecas de Boost 1.43.0» (en inglés). Consultado el 15 de julio de 2010.

Enlaces externos[editar]