Imported Upstream version 1.36.0
[platform/upstream/grpc.git] / third_party / ABSEIL_MANUAL.md
1 # Abseil in gRPC
2
3 This document explains how to use Abseil throughout gRPC. Note that this isn't
4 supposed to explain general usage of Abseil.
5
6 ## The version of Abseil
7
8 gRPC intends to use the LTS versions of Abseil only because it simplifies
9 dependency management. Abseil is being distributed via package distribution
10 systems such as vcpkg and cocoapods. If gRPC depends on the certain version
11 that aren't registered, gRPC in that system cannot get the right version of
12 Abseil when being built, resulting in a build failure.
13 Therefore, gRPC will use the LTS version only, preferably the latest one.
14
15 ## Libraries that are not ready to use
16
17 Most of Abseil libraries are okay to use but there are some exceptions
18 because they're not going well yet on some of our test machinaries or
19 platforms it supports. The following is a list of targets that are NOT
20 ready to use.
21
22 - `absl/synchronization:*`: This will be ready from the LTS version in 2021.
23 - `absl/random`: [WIP](https://github.com/grpc/grpc/pull/23346).
24 - `absl/types:variant`: [WIP](https://github.com/grpc/grpc/pull/22961).
25
26 ## Implemetation only
27
28 You can use Abseil in gRPC Core and gRPC C++. But you cannot use it in
29 the public interface of gRPC C++ because i) it doesn't gurantee no breaking
30 API changes like gRPC C++ does and ii) it may make users change their build
31 system to address Abseil.  
32