Google открыла Abseil для поддержки разработки на C++ и Python

задняя часть Python Google C++

Google предоставляет ряд библиотек C++, используемых внутри своих проектов, а также позже представит свои библиотеки Python.

AbseilРазрабатываемый в Google более десяти лет, он предназначен для удовлетворения потребностей программистов Google, работающих над различными проектами, включая Protocol Buffers, gRPC и TensorFlow. Google оценил Abseil как:

Первоначально абстракции, предоставляемые Abseil, не были частью C++14 или C++17, но со временем они были добавлены в стандарт C++. Например, Google предлагаетStringPiecetype, а впоследствии 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++11std::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