Abseil provides its repository as source code, and specifically does not offer binary releases. Instead, we encourage you to either “live at head” (build from the latest version of Abseil) or, if necessary, build against a known, supported branch, known as a Long Term Support (LTS) branch.
This document outlines the specifics of what releases we provide, and options for how you build and distribute Abseil within your source code, binary, or library.
Abseil encourages developers to “live at head” but we understand that philosophy may not work for everyone. We are therefore providing snapshots of the Abseil codebase. These snapshots are available as “Long Term Support” (LTS) branches of Abseil, and we intend to provide a new snapshot every 6 months or so.
We pledge to support these LTS snapshots for at least 2 years. If critical bug fixes, such as security issues, require us to change Abseil, we will also change them within any supported LTS snapshot.
NOTE: we don’t want you to think of these snapshots as “versions.” They are simply a snapshot of the codebase at a specific point in time. If you cannot build from source or otherwise live at head, prefer to use the latest LTS branch of Abseil instead.
The set of LTS branches of Abseil is available on our Long Term Support (LTS) Branches page. As LTS branches are added to this page, entries will be added to the list. We will also list any critical fixes to specific LTS branches on this page.
Including Abseil code in your project, as long as it is provided as source code or within your own binary, is relatively straightfoward. You have a few options, listed in order of higher preference:
WORKSPACEfile. Note that if you build from source and use an unsupported build system, we can’t support you at the moment, though we are open to adding support if you contact us or provide us with a pull request.
Including Abseil code in your library requires more care, as that library in turn may be used by other projects that depend on Abseil. In particular, to avoid ODR violations, your library must be built with the same compiler flags as other binaries or libraries using Abseil. See Abseil Compiler Flags. (Building Abseil with the different compiler flags would cause ABI changes between different builds of Abseil.)
absl::symbols, collisions between potential Abseil “versions” should not occur, though your library may incur code bloat.