El repositorio contiene el código de la biblioteca Abseil C++. Abseil es una colección de código abierto de código C++ (compatible con C++14) diseñada para aumentar la biblioteca estándar de C++.
Sobre rappel
Inicio rápido
Construyendo rappel
Apoyo
Mapa de códigos
Lanzamientos
Licencia
Campo de golf
Abseil es una colección de código abierto de código de biblioteca C++ diseñada para aumentar la biblioteca estándar de C++. El código de la biblioteca Abseil se recopila de la propia base de código C++ de Google, se ha probado y utilizado exhaustivamente en producción y es el mismo código del que dependemos en nuestra vida diaria de codificación.
En algunos casos, Abseil proporciona piezas que faltan en el estándar C++; en otros, Abseil ofrece alternativas al estándar para necesidades especiales que hemos encontrado mediante el uso en el código base de Google. Denotamos esos casos claramente dentro del código de biblioteca que le proporcionamos.
Abseil no pretende ser un competidor de la biblioteca estándar; Acabamos de descubrir que muchas de estas utilidades tienen un propósito dentro de nuestra base de código y ahora queremos proporcionar esos recursos a la comunidad C++ en su conjunto.
Si desea comenzar, asegúrese de ejecutar al menos el inicio rápido de Abseil. El inicio rápido contiene información sobre cómo configurar su entorno de desarrollo, descargar el código Abseil, ejecutar pruebas y hacer funcionar un binario simple.
Bazel y CMake son los sistemas de compilación oficiales de Abseil. Consulte el inicio rápido para obtener más información sobre cómo crear Abseil utilizando el sistema de compilación Bazel. Si necesita soporte de CMake, consulte las instrucciones de compilación de CMake y el inicio rápido de CMake.
Abseil sigue la política fundamental de compatibilidad con C++ de Google. Consulte esta tabla para obtener una lista de las versiones actualmente admitidas de compiladores, plataformas y herramientas de compilación.
Abseil contiene los siguientes componentes de la biblioteca C++:
base
La biblioteca base
contiene código de inicialización y otro código del que depende el resto del código Abseil. El código dentro de base
no puede depender de ningún otro código (aparte de la biblioteca estándar de C++).
algorithm
La biblioteca algorithm
contiene adiciones a la biblioteca <algorithm>
de C++ y versiones basadas en contenedores de dichos algoritmos.
cleanup
La biblioteca cleanup
contiene el tipo absl::Cleanup
similar a una construcción de flujo de control que se utiliza para ejecutar una devolución de llamada al salir del alcance.
container
La biblioteca container
contiene contenedores adicionales de estilo STL, incluidos los contenedores desordenados de "tabla suiza" de Abseil.
crc
La biblioteca crc
contiene código para calcular comprobaciones de redundancia cíclica de detección de errores en los datos.
debugging
La biblioteca debugging
contiene código útil para habilitar comprobaciones de fugas y utilidades de simbolización y seguimiento de pila.
flags
La biblioteca flags
contiene código para manejar banderas de línea de comando para bibliotecas y binarios creados con Abseil.
hash
La biblioteca hash
contiene el marco hash y las implementaciones de functor hash predeterminadas para tipos hashable en Abseil.
log
La biblioteca log
contiene macros LOG
y CHECK
y funciones para escribir mensajes registrados en disco, stderr
o destinos extensibles por el usuario.
memory
La biblioteca memory
contiene funciones de administración de memoria que aumentan la biblioteca <memory>
de C++.
meta
La meta
contiene versiones compatibles de comprobaciones de tipos disponibles en las versiones C++14 y C++17 de la biblioteca C++ <type_traits>
.
numeric
La biblioteca numeric
contiene tipos de enteros de 128 bits, así como implementaciones de funciones matemáticas bit a bit de C++20.
profiling
La biblioteca profiling
contiene código de utilidad para crear perfiles de entidades C++. Actualmente es una dependencia privada de otras bibliotecas de Abseil.
random
La biblioteca random
contiene funciones para generar valores pseudoaleatorios.
status
La biblioteca status
contiene abstracciones para el manejo de errores, específicamente absl::Status
y absl::StatusOr<T>
.
strings
La biblioteca strings
contiene una variedad de rutinas y utilidades de cadenas, incluida una versión compatible con C++14 del tipo std::string_view
C++17.
synchronization
La biblioteca synchronization
contiene primitivas de concurrencia (la clase absl::Mutex
de Abseil, una alternativa a std::mutex
) y una variedad de abstracciones de sincronización.
time
La biblioteca time
contiene abstracciones para calcular puntos absolutos en el tiempo, duraciones de tiempo y formato y análisis de tiempo dentro de zonas horarias.
types
La biblioteca types
contiene tipos de utilidades que no son contenedores, como una versión compatible con C++14 del tipo std::optional
de C++17.
utility
La biblioteca utility
contiene código de utilidad y de ayuda.
Abseil recomienda a los usuarios "en vivo" (actualizar a la última confirmación desde la rama maestra con la mayor frecuencia posible). Sin embargo, nos damos cuenta de que esta filosofía no funciona para todos los proyectos, por lo que también proporcionamos versiones de soporte a largo plazo a las que respaldamos correcciones para errores graves. Consulte nuestro documento de gestión de versiones para obtener más detalles.
La biblioteca Abseil C++ tiene licencia según los términos de la licencia Apache. Consulte LICENCIA para obtener más información.
Para más información sobre Rappel:
Consulta nuestra Introducción al Rappel
Lea Por qué adoptar Abseil para comprender nuestra filosofía de diseño.
Lea detenidamente nuestras Garantías de compatibilidad de Abseil para comprender lo que le prometemos y lo que esperamos de usted a cambio.