Abseil is an open-source collection of C++ libraries designed to augment the C++ standard library, maintained by Google and distributed under the Apache license. The library code originates from Google's internal C++ codebase, has been extensively tested in production environments, and represents the same utilities that Google engineers depend on in their daily work. Abseil is compliant with C++17 and is not intended to compete with the standard library but rather to provide utilities and abstractions that have proven valuable in large-scale production systems.
The repository contains seventeen distinct library components, each addressing specific domains of C++ development. The base library provides initialization code and foundational utilities that all other Abseil components depend on. The algorithm library extends the C++ algorithm library with container-based versions of standard algorithms. The container library introduces additional STL-style containers, notably Abseil's Swiss table implementations for unordered containers. The strings library offers a variety of string routines and utilities, while the time library provides abstractions for working with absolute points in time, durations, and timezone-aware formatting and parsing.
For concurrent programming, the synchronization library provides primitives including Abseil's Mutex class as an alternative to std::mutex, along with various synchronization abstractions. The status library contains error handling abstractions through absl::Status and absl::StatusOr<T>. The random library generates pseudorandom values, and the numeric library provides 128-bit integer types and C++20 bitwise math function implementations. The hash library implements a hashing framework with default hash functors, while the memory library augments C++'s memory management facilities.
Additional specialized components include the debugging library for leak checks and stacktrace utilities, the flags library for command-line flag handling, the log library for LOG and CHECK macros with extensible output destinations, the cleanup library providing scope-exit callback execution, the crc library for cyclic redundancy check computation, the meta library for type checks similar to C++ type_traits, the types library for non-container utility types, the utility library for helper code, and the profiling library for profiling utilities.
The project supports both Bazel and CMake as official build systems. Abseil follows Google's Foundational C++ Support Policy and maintains compatibility with specified compiler versions, platforms, and build tools. The project recommends users adopt a "live-at-head" philosophy by updating to the latest master branch commits regularly, though Long Term Support Releases are also provided for projects requiring stability, with backported fixes for severe bugs. Documentation is available through the Abseil website, including quickstart guides, compatibility guarantees, and design philosophy materials.