Releases: abseil/abseil-cpp
Releases · abseil/abseil-cpp
Abseil LTS branch, January 2026, Patch 1
Abseil LTS 20260107.1
What's New
absl::StringResizeAndOverwrite(): A new function inabsl/strings/resize_and_overwrite.hthat acts as a polyfill for C++23'sstd::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 inabsl/container/chunked_queue.hoptimized for use as a FIFO (First-In, First-Out) queue.absl::linked_hash_mapandabsl::linked_hash_set: New hash containers that maintain iteration order matching the insertion order. These are available inabsl/container/linked_hash_map.handabsl/container/linked_hash_set.h.absl::down_cast: Added toabsl/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 usesdynamic_castto verify the validity of the cast and terminates the program if the cast is invalid. In optimized builds, it usesstatic_castfor performance.
Breaking Changes
- Mutex Deprecations: Legacy
Mutexmethods andMutexLockpointer constructors have been marked as deprecated. Users should migrate to the recommended APIs. - The polyfill type
absl::string_viewis now an alias forstd::string_viewin 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
Abseil LTS 20250814.2
What's New:
absl::Mutexnow contains lower-case method names likelock()andshared_lock()to align with standard C++ mutex methods. This allowsabsl::Mutexto be used withstd::scoped_lockand 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 toabsl::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 anassertfailure. Note that unless you changedabsl/base/options.h,absl::string_viewis an alias forstd::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
Abseil LTS 20250512.2
What's New:
- The polyfill types
absl::any,absl::optional, andabsl::variantare now aliases forstd::any,std::optional, andstd::variantin all builds. (Note that the polyfill implementationabsl::string_viewremains at the present time, but it defaults to being an aliasstd::string_viewin all builds.) - Added
absl::FastTypeId<Type>(), which evaluates at compile-time to a unique id for the passed-in type. - Added
absl::endianandabsl::byteswappolyfills (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
Abseil LTS 20250127.2
What's New:
- Added support for Bazel 8.0
- Added support for Bazel Platforms for better portability
- Added
ABSL_ATTRIBUTE_VIEWandABSL_ATTRIBUTE_OWNERfor diagnosing certain lifetime issues - Many performance improvements
- A security issue in hash container create/resize has been fixed. Note that the latest patch releases for previous LTS versions also address this issue.
Breaking Changes:
- Bazel
BUILDfiles now reference repositories by their canonical names from the Bazel Central Registry. For example, Abseil is now@abseil-cppinstead of@com_google_absl, and GoogleTest is now@googletestinstead of@com_google_googletest. Users still using the oldWORKSPACEsystem may need to userepo_mappingon repositories that still use the old names. See 90a7ba6 for an example.
Other:
- This will be the last release to support C++14. Future releases will require at least C++17.
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
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 usesabsl::Status. - Patch 1 addresses a security issue in hash container create/resize.
Breaking Changes:
absl::AlphaNumno longer allows brace-initialization. This was never intended to be supported, nor is it recommended thatabsl::AlphaNumever be spelled in user code.- The deprecated symbol
absl::kuint128maxhas been removed and should be replaced withabsl::Uint128Max(). absl::aligned_storage_t, which was a polyfill consistent withstd::aligned_storage_t, has been removed.std::aligned_storage_tis deprecated in C++23. See https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1413r3.pdf for a suggested replacement.absl::StrJoinnow has aabsl::string_viewoverload. This allows for passing a collection of string-like objects without having to convert everything to the same type first. However, this may be a breaking change for users passing an explicit template argument toabsl::StrJoin. In this case, simply remove the explicit template parameter.vlog_is_on.his now a public header and is no longer included fromlog.h. To useVLOG_IS_ON(),absl/log/vlog_is_on.hmust be included.
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
Abseil LTS 20260107.0
What's New
absl::StringResizeAndOverwrite(): A new function inabsl/strings/resize_and_overwrite.hthat acts as a polyfill for C++23'sstd::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 inabsl/container/chunked_queue.hoptimized for use as a FIFO (First-In, First-Out) queue.absl::linked_hash_mapandabsl::linked_hash_set: New hash containers that maintain iteration order matching the insertion order. These are available inabsl/container/linked_hash_map.handabsl/container/linked_hash_set.h.absl::down_cast: Added toabsl/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 usesdynamic_castto verify the validity of the cast and terminates the program if the cast is invalid. In optimized builds, it usesstatic_castfor performance.
Breaking Changes
- Mutex Deprecations: Legacy
Mutexmethods andMutexLockpointer constructors have been marked as deprecated. Users should migrate to the recommended APIs. - The polyfill type
absl::string_viewis now an alias forstd::string_viewin all builds. (9ebd93a)
Abseil LTS branch, August 2025, Patch 1
Abseil LTS 20250814.1
What's New:
absl::Mutexnow contains lower-case method names likelock()andshared_lock()to align with standard C++ mutex methods. This allowsabsl::Mutexto be used withstd::scoped_lockand 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 toabsl::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 anassertfailure. Note that unless you changedabsl/base/options.h,absl::string_viewis an alias forstd::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).
Abseil LTS branch, August 2025
Abseil LTS 20250814.0
What's New:
absl::Mutexnow contains lower-case method names likelock()andshared_lock()to align with standard C++ mutex methods. This allowsabsl::Mutexto be used withstd::scoped_lockand 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 toabsl::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 anassertfailure. Note that unless you changedabsl/base/options.h,absl::string_viewis an alias forstd::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
Abseil LTS branch, May 2025, Patch 1
Abseil LTS 20250512.1
What's New:
- The polyfill types
absl::any,absl::optional, andabsl::variantare now aliases forstd::any,std::optional, andstd::variantin all builds. (Note that the polyfill implementationabsl::string_viewremains at the present time, but it defaults to being an aliasstd::string_viewin all builds.) - Added
absl::FastTypeId<Type>(), which evaluates at compile-time to a unique id for the passed-in type. - Added
absl::endianandabsl::byteswappolyfills (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.
Abseil LTS branch, May 2025
Abseil LTS 20250512.0
What's New:
- The polyfill types
absl::any,absl::optional, andabsl::variantare now aliases forstd::any,std::optional, andstd::variantin all builds. (Note that the polyfill implementationabsl::string_viewremains at the present time, but it defaults to being an aliasstd::string_viewin all builds.) - Added
absl::FastTypeId<Type>(), which evaluates at compile-time to a unique id for the passed-in type. - Added
absl::endianandabsl::byteswappolyfills (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
- This release fails to compile with GCC7 and GCC8. This is fixed in 20250512.1.
Baseline: bc257a8