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