1*9356374aSAndroid Build Coastguard Worker# Abseil - C++ Common Libraries 2*9356374aSAndroid Build Coastguard Worker 3*9356374aSAndroid Build Coastguard WorkerThe repository contains the Abseil C++ library code. Abseil is an open-source 4*9356374aSAndroid Build Coastguard Workercollection of C++ code (compliant to C++14) designed to augment the C++ 5*9356374aSAndroid Build Coastguard Workerstandard library. 6*9356374aSAndroid Build Coastguard Worker 7*9356374aSAndroid Build Coastguard Worker## Table of Contents 8*9356374aSAndroid Build Coastguard Worker 9*9356374aSAndroid Build Coastguard Worker- [About Abseil](#about) 10*9356374aSAndroid Build Coastguard Worker- [Quickstart](#quickstart) 11*9356374aSAndroid Build Coastguard Worker- [Building Abseil](#build) 12*9356374aSAndroid Build Coastguard Worker- [Support](#support) 13*9356374aSAndroid Build Coastguard Worker- [Codemap](#codemap) 14*9356374aSAndroid Build Coastguard Worker- [Releases](#releases) 15*9356374aSAndroid Build Coastguard Worker- [License](#license) 16*9356374aSAndroid Build Coastguard Worker- [Links](#links) 17*9356374aSAndroid Build Coastguard Worker 18*9356374aSAndroid Build Coastguard Worker<a name="about"></a> 19*9356374aSAndroid Build Coastguard Worker## About Abseil 20*9356374aSAndroid Build Coastguard Worker 21*9356374aSAndroid Build Coastguard WorkerAbseil is an open-source collection of C++ library code designed to augment 22*9356374aSAndroid Build Coastguard Workerthe C++ standard library. The Abseil library code is collected from Google's 23*9356374aSAndroid Build Coastguard Workerown C++ code base, has been extensively tested and used in production, and 24*9356374aSAndroid Build Coastguard Workeris the same code we depend on in our daily coding lives. 25*9356374aSAndroid Build Coastguard Worker 26*9356374aSAndroid Build Coastguard WorkerIn some cases, Abseil provides pieces missing from the C++ standard; in 27*9356374aSAndroid Build Coastguard Workerothers, Abseil provides alternatives to the standard for special needs 28*9356374aSAndroid Build Coastguard Workerwe've found through usage in the Google code base. We denote those cases 29*9356374aSAndroid Build Coastguard Workerclearly within the library code we provide you. 30*9356374aSAndroid Build Coastguard Worker 31*9356374aSAndroid Build Coastguard WorkerAbseil is not meant to be a competitor to the standard library; we've 32*9356374aSAndroid Build Coastguard Workerjust found that many of these utilities serve a purpose within our code 33*9356374aSAndroid Build Coastguard Workerbase, and we now want to provide those resources to the C++ community as 34*9356374aSAndroid Build Coastguard Workera whole. 35*9356374aSAndroid Build Coastguard Worker 36*9356374aSAndroid Build Coastguard Worker<a name="quickstart"></a> 37*9356374aSAndroid Build Coastguard Worker## Quickstart 38*9356374aSAndroid Build Coastguard Worker 39*9356374aSAndroid Build Coastguard WorkerIf you want to just get started, make sure you at least run through the 40*9356374aSAndroid Build Coastguard Worker[Abseil Quickstart](https://abseil.io/docs/cpp/quickstart). The Quickstart 41*9356374aSAndroid Build Coastguard Workercontains information about setting up your development environment, downloading 42*9356374aSAndroid Build Coastguard Workerthe Abseil code, running tests, and getting a simple binary working. 43*9356374aSAndroid Build Coastguard Worker 44*9356374aSAndroid Build Coastguard Worker<a name="build"></a> 45*9356374aSAndroid Build Coastguard Worker## Building Abseil 46*9356374aSAndroid Build Coastguard Worker 47*9356374aSAndroid Build Coastguard Worker[Bazel](https://bazel.build) and [CMake](https://cmake.org/) are the official 48*9356374aSAndroid Build Coastguard Workerbuild systems for Abseil. 49*9356374aSAndroid Build Coastguard WorkerSee the [quickstart](https://abseil.io/docs/cpp/quickstart) for more information 50*9356374aSAndroid Build Coastguard Workeron building Abseil using the Bazel build system. 51*9356374aSAndroid Build Coastguard WorkerIf you require CMake support, please check the [CMake build 52*9356374aSAndroid Build Coastguard Workerinstructions](CMake/README.md) and [CMake 53*9356374aSAndroid Build Coastguard WorkerQuickstart](https://abseil.io/docs/cpp/quickstart-cmake). 54*9356374aSAndroid Build Coastguard Worker 55*9356374aSAndroid Build Coastguard Worker<a name="support"></a> 56*9356374aSAndroid Build Coastguard Worker## Support 57*9356374aSAndroid Build Coastguard Worker 58*9356374aSAndroid Build Coastguard WorkerAbseil follows Google's [Foundational C++ Support 59*9356374aSAndroid Build Coastguard WorkerPolicy](https://opensource.google/documentation/policies/cplusplus-support). See 60*9356374aSAndroid Build Coastguard Worker[this 61*9356374aSAndroid Build Coastguard Workertable](https://github.com/google/oss-policies-info/blob/main/foundational-cxx-support-matrix.md) 62*9356374aSAndroid Build Coastguard Workerfor a list of currently supported versions compilers, platforms, and build 63*9356374aSAndroid Build Coastguard Workertools. 64*9356374aSAndroid Build Coastguard Worker 65*9356374aSAndroid Build Coastguard Worker<a name="codemap"></a> 66*9356374aSAndroid Build Coastguard Worker## Codemap 67*9356374aSAndroid Build Coastguard Worker 68*9356374aSAndroid Build Coastguard WorkerAbseil contains the following C++ library components: 69*9356374aSAndroid Build Coastguard Worker 70*9356374aSAndroid Build Coastguard Worker* [`base`](absl/base/) 71*9356374aSAndroid Build Coastguard Worker <br /> The `base` library contains initialization code and other code which 72*9356374aSAndroid Build Coastguard Worker all other Abseil code depends on. Code within `base` may not depend on any 73*9356374aSAndroid Build Coastguard Worker other code (other than the C++ standard library). 74*9356374aSAndroid Build Coastguard Worker* [`algorithm`](absl/algorithm/) 75*9356374aSAndroid Build Coastguard Worker <br /> The `algorithm` library contains additions to the C++ `<algorithm>` 76*9356374aSAndroid Build Coastguard Worker library and container-based versions of such algorithms. 77*9356374aSAndroid Build Coastguard Worker* [`cleanup`](absl/cleanup/) 78*9356374aSAndroid Build Coastguard Worker <br /> The `cleanup` library contains the control-flow-construct-like type 79*9356374aSAndroid Build Coastguard Worker `absl::Cleanup` which is used for executing a callback on scope exit. 80*9356374aSAndroid Build Coastguard Worker* [`container`](absl/container/) 81*9356374aSAndroid Build Coastguard Worker <br /> The `container` library contains additional STL-style containers, 82*9356374aSAndroid Build Coastguard Worker including Abseil's unordered "Swiss table" containers. 83*9356374aSAndroid Build Coastguard Worker* [`crc`](absl/crc/) The `crc` library contains code for 84*9356374aSAndroid Build Coastguard Worker computing error-detecting cyclic redundancy checks on data. 85*9356374aSAndroid Build Coastguard Worker* [`debugging`](absl/debugging/) 86*9356374aSAndroid Build Coastguard Worker <br /> The `debugging` library contains code useful for enabling leak 87*9356374aSAndroid Build Coastguard Worker checks, and stacktrace and symbolization utilities. 88*9356374aSAndroid Build Coastguard Worker* [`flags`](absl/flags/) 89*9356374aSAndroid Build Coastguard Worker <br /> The `flags` library contains code for handling command line flags for 90*9356374aSAndroid Build Coastguard Worker libraries and binaries built with Abseil. 91*9356374aSAndroid Build Coastguard Worker* [`hash`](absl/hash/) 92*9356374aSAndroid Build Coastguard Worker <br /> The `hash` library contains the hashing framework and default hash 93*9356374aSAndroid Build Coastguard Worker functor implementations for hashable types in Abseil. 94*9356374aSAndroid Build Coastguard Worker* [`log`](absl/log/) 95*9356374aSAndroid Build Coastguard Worker <br /> The `log` library contains `LOG` and `CHECK` macros and facilities 96*9356374aSAndroid Build Coastguard Worker for writing logged messages out to disk, `stderr`, or user-extensible 97*9356374aSAndroid Build Coastguard Worker destinations. 98*9356374aSAndroid Build Coastguard Worker* [`memory`](absl/memory/) 99*9356374aSAndroid Build Coastguard Worker <br /> The `memory` library contains memory management facilities that augment 100*9356374aSAndroid Build Coastguard Worker C++'s `<memory>` library. 101*9356374aSAndroid Build Coastguard Worker* [`meta`](absl/meta/) 102*9356374aSAndroid Build Coastguard Worker <br /> The `meta` library contains compatible versions of type checks 103*9356374aSAndroid Build Coastguard Worker available within C++14 and C++17 versions of the C++ `<type_traits>` library. 104*9356374aSAndroid Build Coastguard Worker* [`numeric`](absl/numeric/) 105*9356374aSAndroid Build Coastguard Worker <br /> The `numeric` library contains 128-bit integer types as well as 106*9356374aSAndroid Build Coastguard Worker implementations of C++20's bitwise math functions. 107*9356374aSAndroid Build Coastguard Worker* [`profiling`](absl/profiling/) 108*9356374aSAndroid Build Coastguard Worker <br /> The `profiling` library contains utility code for profiling C++ 109*9356374aSAndroid Build Coastguard Worker entities. It is currently a private dependency of other Abseil libraries. 110*9356374aSAndroid Build Coastguard Worker* [`random`](absl/random/) 111*9356374aSAndroid Build Coastguard Worker <br /> The `random` library contains functions for generating psuedorandom 112*9356374aSAndroid Build Coastguard Worker values. 113*9356374aSAndroid Build Coastguard Worker* [`status`](absl/status/) 114*9356374aSAndroid Build Coastguard Worker <br /> The `status` library contains abstractions for error handling, 115*9356374aSAndroid Build Coastguard Worker specifically `absl::Status` and `absl::StatusOr<T>`. 116*9356374aSAndroid Build Coastguard Worker* [`strings`](absl/strings/) 117*9356374aSAndroid Build Coastguard Worker <br /> The `strings` library contains a variety of strings routines and 118*9356374aSAndroid Build Coastguard Worker utilities, including a C++14-compatible version of the C++17 119*9356374aSAndroid Build Coastguard Worker `std::string_view` type. 120*9356374aSAndroid Build Coastguard Worker* [`synchronization`](absl/synchronization/) 121*9356374aSAndroid Build Coastguard Worker <br /> The `synchronization` library contains concurrency primitives (Abseil's 122*9356374aSAndroid Build Coastguard Worker `absl::Mutex` class, an alternative to `std::mutex`) and a variety of 123*9356374aSAndroid Build Coastguard Worker synchronization abstractions. 124*9356374aSAndroid Build Coastguard Worker* [`time`](absl/time/) 125*9356374aSAndroid Build Coastguard Worker <br /> The `time` library contains abstractions for computing with absolute 126*9356374aSAndroid Build Coastguard Worker points in time, durations of time, and formatting and parsing time within 127*9356374aSAndroid Build Coastguard Worker time zones. 128*9356374aSAndroid Build Coastguard Worker* [`types`](absl/types/) 129*9356374aSAndroid Build Coastguard Worker <br /> The `types` library contains non-container utility types, like a 130*9356374aSAndroid Build Coastguard Worker C++14-compatible version of the C++17 `std::optional` type. 131*9356374aSAndroid Build Coastguard Worker* [`utility`](absl/utility/) 132*9356374aSAndroid Build Coastguard Worker <br /> The `utility` library contains utility and helper code. 133*9356374aSAndroid Build Coastguard Worker 134*9356374aSAndroid Build Coastguard Worker<a name="releases"></a> 135*9356374aSAndroid Build Coastguard Worker## Releases 136*9356374aSAndroid Build Coastguard Worker 137*9356374aSAndroid Build Coastguard WorkerAbseil recommends users "live-at-head" (update to the latest commit from the 138*9356374aSAndroid Build Coastguard Workermaster branch as often as possible). However, we realize this philosophy doesn't 139*9356374aSAndroid Build Coastguard Workerwork for every project, so we also provide [Long Term Support 140*9356374aSAndroid Build Coastguard WorkerReleases](https://github.com/abseil/abseil-cpp/releases) to which we backport 141*9356374aSAndroid Build Coastguard Workerfixes for severe bugs. See our [release 142*9356374aSAndroid Build Coastguard Workermanagement](https://abseil.io/about/releases) document for more details. 143*9356374aSAndroid Build Coastguard Worker 144*9356374aSAndroid Build Coastguard Worker<a name="license"></a> 145*9356374aSAndroid Build Coastguard Worker## License 146*9356374aSAndroid Build Coastguard Worker 147*9356374aSAndroid Build Coastguard WorkerThe Abseil C++ library is licensed under the terms of the Apache 148*9356374aSAndroid Build Coastguard Workerlicense. See [LICENSE](LICENSE) for more information. 149*9356374aSAndroid Build Coastguard Worker 150*9356374aSAndroid Build Coastguard Worker<a name="links"></a> 151*9356374aSAndroid Build Coastguard Worker## Links 152*9356374aSAndroid Build Coastguard Worker 153*9356374aSAndroid Build Coastguard WorkerFor more information about Abseil: 154*9356374aSAndroid Build Coastguard Worker 155*9356374aSAndroid Build Coastguard Worker* Consult our [Abseil Introduction](https://abseil.io/about/intro) 156*9356374aSAndroid Build Coastguard Worker* Read [Why Adopt Abseil](https://abseil.io/about/philosophy) to understand our 157*9356374aSAndroid Build Coastguard Worker design philosophy. 158*9356374aSAndroid Build Coastguard Worker* Peruse our 159*9356374aSAndroid Build Coastguard Worker [Abseil Compatibility Guarantees](https://abseil.io/about/compatibility) to 160*9356374aSAndroid Build Coastguard Worker understand both what we promise to you, and what we expect of you in return. 161