xref: /aosp_15_r20/external/grpc-grpc/third_party/ABSEIL_MANUAL.md (revision cc02d7e222339f7a4f6ba5f422e6413f4bd931f2)
1*cc02d7e2SAndroid Build Coastguard Worker# Abseil in gRPC
2*cc02d7e2SAndroid Build Coastguard Worker
3*cc02d7e2SAndroid Build Coastguard WorkerThis document explains how to use Abseil throughout gRPC. Note that this isn't
4*cc02d7e2SAndroid Build Coastguard Workersupposed to explain general usage of Abseil.
5*cc02d7e2SAndroid Build Coastguard Worker
6*cc02d7e2SAndroid Build Coastguard Worker## The version of Abseil
7*cc02d7e2SAndroid Build Coastguard Worker
8*cc02d7e2SAndroid Build Coastguard WorkergRPC intends to use the LTS versions of Abseil only because it simplifies
9*cc02d7e2SAndroid Build Coastguard Workerdependency management. Abseil is being distributed via package distribution
10*cc02d7e2SAndroid Build Coastguard Workersystems such as vcpkg and cocoapods. If gRPC depends on the certain version
11*cc02d7e2SAndroid Build Coastguard Workerthat aren't registered, gRPC in that system cannot get the right version of
12*cc02d7e2SAndroid Build Coastguard WorkerAbseil when being built, resulting in a build failure.
13*cc02d7e2SAndroid Build Coastguard WorkerTherefore, gRPC will use the LTS version only, preferably the latest one.
14*cc02d7e2SAndroid Build Coastguard Worker
15*cc02d7e2SAndroid Build Coastguard Worker## Libraries that are not ready to use
16*cc02d7e2SAndroid Build Coastguard Worker
17*cc02d7e2SAndroid Build Coastguard WorkerMost of Abseil libraries are okay to use but there are some exceptions
18*cc02d7e2SAndroid Build Coastguard Workerbecause they're not going well yet on some of our test machinaries or
19*cc02d7e2SAndroid Build Coastguard Workerplatforms it supports. The following is a list of targets that are NOT
20*cc02d7e2SAndroid Build Coastguard Workerready to use.
21*cc02d7e2SAndroid Build Coastguard Worker
22*cc02d7e2SAndroid Build Coastguard Worker- `absl/synchronization:*`: Blocked by b/186685878.
23*cc02d7e2SAndroid Build Coastguard Worker- `absl/random`: [WIP](https://github.com/grpc/grpc/pull/23346).
24*cc02d7e2SAndroid Build Coastguard Worker
25*cc02d7e2SAndroid Build Coastguard Worker## Implemetation only
26*cc02d7e2SAndroid Build Coastguard Worker
27*cc02d7e2SAndroid Build Coastguard WorkerYou can use Abseil in gRPC Core and gRPC C++. But you cannot use it in
28*cc02d7e2SAndroid Build Coastguard Workerthe public interface of gRPC C++ because i) it doesn't gurantee no breaking
29*cc02d7e2SAndroid Build Coastguard WorkerAPI changes like gRPC C++ does and ii) it may make users change their build
30*cc02d7e2SAndroid Build Coastguard Workersystem to address Abseil.
31*cc02d7e2SAndroid Build Coastguard Worker