Skip to content

Releases: abseil/abseil-cpp

Abseil LTS branch, May 2026

Choose a tag to compare

@derekmauro derekmauro released this 01 Jun 18:54
5650e9c

Abseil LTS 20260526.0

What's New

  • status_macros.h: Helper macros and methods to return and propagate errors with absl::Status.
  • absl::StatusBuilder: A builder type that implicitly converts to absl::Status and absl::StatusOr<T> that helps add additional information.
  • absl::SourceLocation: A type that provides source-code location info for C++17 and later. It differs from std::source_location in several ways. See source_location.h for more information.
  • absl::ClockInterface: An abstract interface representing a clock, allowing decoupling code that uses time from the code that creates a point in time. Useful for injecting clocks into interfaces, especially for testing purposes.
  • absl::SimulatedClock: A concrete clock implementation that does not "tick" on its own. Useful for manipulating time for testing purposes.
  • absl::AnySpan: A type that provides a view of any random access container.
  • absl::optional_ref: A type that provides a std::optional-like interface around T*.
  • absl::bind_back: A drop-in replacement for C++23's std::bind_back().
  • absl::CopyCordToSpan: A safer way to copy the contents of an absl::Cord to a buffer.
  • absl::HighPrecision: An absl::StrCat formatter that produces strings that would parse to the exact original floating point value (except in the case of NaNs).
  • throw_delegate.h: Helper functions that allow throwing exceptions consistently from anywhere without risking ODR violations.

Breaking Changes

  • For GCC users, Abseil now requires at least GCC 10 following Google's Foundational C++ Support Policy. See this table for a list of currently supported versions compilers, platforms, and build tools.
  • Many pre-C++17 polyfill types are marked deprecated. Users should migrate to the std:: equivalent.

Known Issues

  • Bazel's compatibility_level was deprecated in 8.6.0 and 9.1.0 and thus removed from MODULE.bazel. However, this is causing builds with Bazel versions prior to 8.6.0 and 9.1.0 to fail. The recommended workaround is to update to a newer version of Bazel.
  • Abseil fails to compile with GCC 16 when BMI2 extensions are enabled. See #2071 for details.

Baseline: b29e7f9
Cherry-pick: 5650e9c

Abseil LTS branch, May 2026, Release Candidate 1

Choose a tag to compare

@derekmauro derekmauro released this 28 May 18:05
b29e7f9

Abseil LTS 20260526.rc1

What's New

  • status_macros.h: Helper macros and methods to return and propagate errors with absl::Status.
  • absl::StatusBuilder: A builder type that implicitly converts to absl::Status and absl::StatusOr<T> that helps add additional information.
  • absl::SourceLocation: A type that provides source-code location info for C++17 and later. It differs from std::source_location in several ways. See source_location.h for more information.
  • absl::ClockInterface: An abstract interface representing a clock, allowing decoupling code that uses time from the code that creates a point in time. Useful for injecting clocks into interfaces, especially for testing purposes.
  • absl::SimulatedClock: A concrete clock implementation that does not "tick" on its own. Useful for manipulating time for testing purposes.
  • absl::AnySpan: A type that provides a view of any random access container.
  • absl::optional_ref: A type that provides a std::optional-like interface around T*.
  • absl::bind_back: A drop-in replacement for C++23's std::bind_back().
  • absl::CopyCordToSpan: A safer way to copy the contents of an absl::Cord to a buffer.
  • absl::HighPrecision: An absl::StrCat formatter that produces strings that would parse to the exact original floating point value (except in the case of NaNs).
  • throw_delegate.h: Helper functions that allow throwing exceptions consistently from anywhere without risking ODR violations.

Breaking Changes

Baseline: b29e7f9

Abseil LTS branch, January 2026, Patch 1

Choose a tag to compare

@derekmauro derekmauro released this 11 Feb 15:41
255c84d

Abseil LTS 20260107.1

What's New

  • absl::StringResizeAndOverwrite(): A new function in absl/strings/resize_and_overwrite.h that acts as a polyfill for C++23's std::basic_string::resize_and_overwrite. This allows for efficient resizing and in-place initialization of strings, avoiding the overhead of default initialization, which is particularly useful when working with C-style APIs that write directly to a buffer. See #1136 (comment) for performance notes.
  • absl::chunked_queue: A new container in absl/container/chunked_queue.h optimized for use as a FIFO (First-In, First-Out) queue.
  • absl::linked_hash_map and absl::linked_hash_set: New hash containers that maintain iteration order matching the insertion order. These are available in absl/container/linked_hash_map.h and absl/container/linked_hash_set.h.
  • absl::down_cast: Added to absl/base/casts.h. This function provides a safer way to perform downcasts in a polymorphic type hierarchy. In debug builds (or when hardened asserts are enabled), it uses dynamic_cast to verify the validity of the cast and terminates the program if the cast is invalid. In optimized builds, it uses static_cast for performance.

Breaking Changes

  • Mutex Deprecations: Legacy Mutex methods and MutexLock pointer constructors have been marked as deprecated. Users should migrate to the recommended APIs.
  • The polyfill type absl::string_view is now an alias for std::string_view in all builds. (9ebd93a)

Baseline: 1e566d9
Cherry-pick: d9d76ba
Cherry-pick: a3bf78f
Cherry-pick: 7313246 (Patch 1)
Cherry-pick: 5b086d7 (Patch 1)

Abseil LTS branch, August 2025, Patch 2

Choose a tag to compare

@derekmauro derekmauro released this 11 Feb 15:43
0cf0a5c

Abseil LTS 20250814.2

What's New:

  • absl::Mutex now contains lower-case method names like lock() and shared_lock() to align with standard C++ mutex methods. This allows absl::Mutex to be used with std::scoped_lock and friends. The old names are still present but may be removed in a future release.
  • The RAII Mutex-locker types like absl::MutexLock, absl::ReaderMutexLock, and friends now accept references to absl::Mutex. The pointer-accepting constructors are now deprecated, and may be removed in a future release.

Breaking Changes:

  • Nullability template types, which were deprecated in the May 2025 release, have been removed.
  • absl::string_view(nullptr), which is undefined behavior according to the C++ standard, now triggers an assert failure. Note that unless you changed absl/base/options.h, absl::string_view is an alias for std::string_view, so by default you will be inheriting the behavior of your standard library instead of using the Abseil implementation.
  • Abseil's hash tables now require a hash function that has a return type with size >= sizeof(size_t).

Baseline: 987c57f
Cherry-pick: d38452e (Patch 1)
Cherry-pick: 7313246 (Patch 2)

Abseil LTS branch, May 2025, Patch 2

Choose a tag to compare

@derekmauro derekmauro released this 11 Feb 15:45
38bb0b9

Abseil LTS 20250512.2

What's New:

  • The polyfill types absl::any, absl::optional, and absl::variant are now aliases for std::any, std::optional, and std::variant in all builds. (Note that the polyfill implementation absl::string_view remains at the present time, but it defaults to being an alias std::string_view in all builds.)
  • Added absl::FastTypeId<Type>(), which evaluates at compile-time to a unique id for the passed-in type.
  • Added absl::endian and absl::byteswap polyfills (25bce12).

Breaking Changes:

  • Abseil now requires at least C++17 and follows Google's Foundational C++ Support Policy. See this table for a list of currently supported versions compilers, platforms, and build tools.
  • Nullability template types are deprecated and will be removed in a future release. The macro-style annotations (absl_nonnull, absl_nullable) should be used instead (caf854d).

Known Issues

  • None known at this time.

Baseline: bc257a8
Cherry-pick: 76bb243 (Patch 1)
Cherry-pick: 7313246 (Patch 2)

Abseil LTS branch, January 2025, Patch 2

Choose a tag to compare

@derekmauro derekmauro released this 11 Feb 15:51
3cb205c

Abseil LTS 20250127.2

What's New:

Breaking Changes:

  • Bazel BUILD files now reference repositories by their canonical names from the Bazel Central Registry. For example, Abseil is now @abseil-cpp instead of @com_google_absl, and GoogleTest is now @googletest instead of @com_google_googletest. Users still using the old WORKSPACE system may need to use repo_mapping on repositories that still use the old names. See 90a7ba6 for an example.

Other:

Known Issues

  • None known at this time.

Baseline: 98ebd7e
Cherry-pick: 9ac7062
Cherry-pick: d9e4955 (Patch 1)
Cherry-pick: 7313246 (Patch 2)

Abseil LTS branch, July 2024, Patch 2

Choose a tag to compare

@derekmauro derekmauro released this 11 Feb 15:53
216a6be

Abseil LTS 20240722.2

What's New:

  • Added GoogleTest matchers for absl::Status. These matchers make it easier to write unit tests for code that uses absl::Status.
  • Patch 1 addresses a security issue in hash container create/resize.

Breaking Changes:

Known Issues

  • None known at this time.

Baseline: 3358286
Cherry-pick: 2138590
Cherry-pick: 9a0743a
Cherry-pick: 4447c75
Cherry-pick: dd4c89b (Patch 1)
Cherry-pick: 7313246 (Patch 2)

Abseil LTS branch, January 2026

Choose a tag to compare

@derekmauro derekmauro released this 07 Jan 19:59
d407ef1

Abseil LTS 20260107.0

What's New

  • absl::StringResizeAndOverwrite(): A new function in absl/strings/resize_and_overwrite.h that acts as a polyfill for C++23's std::basic_string::resize_and_overwrite. This allows for efficient resizing and in-place initialization of strings, avoiding the overhead of default initialization, which is particularly useful when working with C-style APIs that write directly to a buffer. See #1136 (comment) for performance notes.
  • absl::chunked_queue: A new container in absl/container/chunked_queue.h optimized for use as a FIFO (First-In, First-Out) queue.
  • absl::linked_hash_map and absl::linked_hash_set: New hash containers that maintain iteration order matching the insertion order. These are available in absl/container/linked_hash_map.h and absl/container/linked_hash_set.h.
  • absl::down_cast: Added to absl/base/casts.h. This function provides a safer way to perform downcasts in a polymorphic type hierarchy. In debug builds (or when hardened asserts are enabled), it uses dynamic_cast to verify the validity of the cast and terminates the program if the cast is invalid. In optimized builds, it uses static_cast for performance.

Breaking Changes

  • Mutex Deprecations: Legacy Mutex methods and MutexLock pointer constructors have been marked as deprecated. Users should migrate to the recommended APIs.
  • The polyfill type absl::string_view is now an alias for std::string_view in all builds. (9ebd93a)

Baseline: 1e566d9
Cherry-pick: d9d76ba
Cherry-pick: a3bf78f

Abseil LTS branch, August 2025, Patch 1

Choose a tag to compare

@derekmauro derekmauro released this 22 Sep 18:29
d38452e

Abseil LTS 20250814.1

What's New:

  • absl::Mutex now contains lower-case method names like lock() and shared_lock() to align with standard C++ mutex methods. This allows absl::Mutex to be used with std::scoped_lock and friends. The old names are still present but may be removed in a future release.
  • The RAII Mutex-locker types like absl::MutexLock, absl::ReaderMutexLock, and friends now accept references to absl::Mutex. The pointer-accepting constructors are now deprecated, and may be removed in a future release.

Breaking Changes:

  • Nullability template types, which were deprecated in the May 2025 release, have been removed.
  • absl::string_view(nullptr), which is undefined behavior according to the C++ standard, now triggers an assert failure. Note that unless you changed absl/base/options.h, absl::string_view is an alias for std::string_view, so by default you will be inheriting the behavior of your standard library instead of using the Abseil implementation.
  • Abseil's hash tables now require a hash function that has a return type with size >= sizeof(size_t).

Baseline: 987c57f
Cherry-pick: d38452e (Patch 1)

Abseil LTS branch, August 2025

Choose a tag to compare

@derekmauro derekmauro released this 14 Aug 19:59
987c57f

Abseil LTS 20250814.0

What's New:

  • absl::Mutex now contains lower-case method names like lock() and shared_lock() to align with standard C++ mutex methods. This allows absl::Mutex to be used with std::scoped_lock and friends. The old names are still present but may be removed in a future release.
  • The RAII Mutex-locker types like absl::MutexLock, absl::ReaderMutexLock, and friends now accept references to absl::Mutex. The pointer-accepting constructors are now deprecated, and may be removed in a future release.

Breaking Changes:

  • Nullability template types, which were deprecated in the May 2025 release, have been removed.
  • absl::string_view(nullptr), which is undefined behavior according to the C++ standard, now triggers an assert failure. Note that unless you changed absl/base/options.h, absl::string_view is an alias for std::string_view, so by default you will be inheriting the behavior of your standard library instead of using the Abseil implementation.
  • Abseil's hash tables now require a hash function that has a return type with size >= sizeof(size_t).

Known Issues

  • CHECK_<OP> is failing to compile on older versions of GCC when one of the arguments is a C-style string. This is fixed by ba9a180 and will be included in a future patch release.

Baseline: 987c57f