Google предоставляет ряд библиотек C++, используемых внутри своих проектов, а также позже представит свои библиотеки Python.
AbseilРазрабатываемый в Google более десяти лет, он предназначен для удовлетворения потребностей программистов Google, работающих над различными проектами, включая Protocol Buffers, gRPC и TensorFlow. Google оценил Abseil как:
Первоначально абстракции, предоставляемые Abseil, не были частью C++14 или C++17, но со временем они были добавлены в стандарт C++. Например, Google предлагаетStringPiece
type, а впоследствии C++17 также добавил тип, называемыйstd::string_view
подобные типы. Чтобы иметь согласованный API с новыми типами C++17, GoogleStringPiece
преобразован вabsl::string_view
. Из базового механизма, если разработчик использует C++
17, затем спускstring_view
По умолчанию используется стандартная реализация; если разработчик использует версию до C++17, тоstring_view
По умолчанию используется реализация Google.
Преимущество использования Abseil заключается в том, что вы можете получить доступ к некоторым функциям C++, которые еще не были добавлены в стандарт, и как только эти функции будут добавлены в стандарт C++, Google гарантирует, что эти функции будут реорганизованы для использования стандартной реализации по умолчанию. Google рекомендует разработчикам использовать Abseil, отмечая, что он уже используется более чем в 250 миллионах строк кода C++, и почти каждый проект, созданный с нуля, использует его. Это означает, что Abseil широко используется Google и часто поддерживается в соответствии с потребностями проекта.
Следующие библиотеки включены в Abseil:
- base: инициализация и другой базовый код.
-
algorithm: для С++
<algorithm>
Дополняет библиотеку и предоставляет контейнерную версию исходного алгоритма. - container: Предоставляет больше контейнеров типа STL.
- debugging: Библиотека отладки для проверки утечек.
-
memory: включая версии, совместимые с C++11
std::make_unique()
и управление памятью. -
meta: включает проверку типов на совместимость с версиями C++11, в версиях C++14 и C++17 C++.
<type_traits>
доступны в библиотеке. - numeric: совместимое с C++11 128-битное целое число.
- strings: Различные струнные инструменты.
- synchronization: Примитивы параллелизма и абстракции синхронизации.
- time: абстрагирует операции абсолютного момента времени и операции часового пояса.
- types: Тип неконтейнерного инструмента.
Код Abseil распространяется под лицензией Apache,Опубликовано на GitHub. Программная библиотека для его версии Python будет выпущена позже.
Посмотреть исходный английский текст: Google Open Sources Abseil, a Collection of C++ and Python Utilities