Bug: webrtc:8821 Change-Id: Ifb3bacd3403bbf823c78fff47571a83159f1da73 No-Try: True Reviewed-on: https://webrtc-review.googlesource.com/95880 Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org> Reviewed-by: Danil Chapovalov <danilchap@webrtc.org> Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org> Cr-Commit-Position: refs/heads/master@{#24437}
1.8 KiB
Using Abseil in WebRTC
You may use a subset of the utilities provided by the Abseil library when writing WebRTC C++ code. Below, we list the explicitly allowed and the explicitly disallowed subsets of Abseil; if you find yourself in need of something that isn’t in either subset, please add it to the allowed subset in this doc in the same CL that adds the first use.
Allowed
absl::InlinedVectorabsl::make_uniqueandabsl::WrapUniqueabsl::optionaland related stuff fromabsl/types/optional.h.absl::string_viewabsl::variantand related stuff fromabsl/types/variant.h.
Disallowed
absl::Mutex
Use rtc::CriticalSection instead.
Chromium has a ban on new static initializers, and absl::Mutex uses
one. To make absl::Mutex available, we would need to nicely ask the
Abseil team to remove that initializer (like they already did for a
spinlock initializer). Additionally, absl::Mutex handles time in a
way that may not be compaible with the rest of WebRTC.
absl::Span
Use rtc::ArrayView instead.
absl::Span differs from rtc::ArrayView on several points, and both
of them differ from the std::span that was voted into
C++20—and std::span is likely to undergo further changes
before C++20 is finalized. We should just keep using rtc::ArrayView
and avoid absl::Span until C++20 is finalized and the Abseil team
has decided if they will change absl::Span to match.
Bug.
absl::StrCat and absl::StrAppend
Use rtc::SimpleStringBuilder instead.
These are optimized for speed, not binary size. Even StrCat calls
with a modest number of arguments can easily add several hundred bytes
to the binary.