Репозиторий содержит код библиотеки Abseil C++. Abseil — это коллекция кода C++ с открытым исходным кодом (совместимая с C++14), предназначенная для расширения стандартной библиотеки C++.
О Абселе
Быстрый старт
Строительство Абселя
Поддерживать
Кодовая карта
Релизы
Лицензия
Ссылки
Abseil — это коллекция библиотечного кода C++ с открытым исходным кодом, предназначенная для расширения стандартной библиотеки C++. Код библиотеки Abseil собран из собственной базы кода C++ Google, тщательно протестирован и использован в производстве, и это тот же код, от которого мы зависим в нашей повседневной жизни.
В некоторых случаях Abseil предоставляет элементы, отсутствующие в стандарте C++; в других случаях Abseil предоставляет альтернативы стандарту для особых нужд, которые мы обнаружили в базе кода Google. Мы четко обозначаем эти случаи в коде библиотеки, который мы вам предоставляем.
Abseil не должен быть конкурентом стандартной библиотеки; мы только что обнаружили, что многие из этих утилит служат определенной цели в нашей кодовой базе, и теперь мы хотим предоставить эти ресурсы сообществу C++ в целом.
Если вы хотите просто начать, обязательно пройдите хотя бы краткий старт Abseil. Краткое руководство содержит информацию о настройке среды разработки, загрузке кода Abseil, запуске тестов и запуске простого двоичного файла.
Bazel и CMake — официальные системы сборки Abseil. Дополнительную информацию о сборке Abseil с использованием системы сборки Bazel см. в кратком руководстве. Если вам требуется поддержка CMake, ознакомьтесь с инструкциями по сборке CMake и кратким руководством по CMake.
Abseil следует фундаментальной политике поддержки C++ Google. В этой таблице приведен список поддерживаемых в настоящее время версий компиляторов, платформ и инструментов сборки.
Abseil содержит следующие компоненты библиотеки C++:
base
base
библиотека содержит код инициализации и другой код, от которого зависит весь остальной код Abseil. Код внутри base
не может зависеть ни от какого другого кода (кроме стандартной библиотеки C++).
algorithm
Библиотека algorithm
содержит дополнения к библиотеке C++
и контейнерные версии таких алгоритмов.
cleanup
Библиотека cleanup
содержит тип absl::Cleanup
подобный конструкции потока управления, который используется для выполнения обратного вызова при выходе из области действия.
container
Библиотека container
содержит дополнительные контейнеры в стиле STL, включая неупорядоченные контейнеры «швейцарской таблицы» Abseil.
crc
Библиотека crc
содержит код для вычисления циклических избыточных проверок данных с обнаружением ошибок.
debugging
Библиотека debugging
содержит код, полезный для проверки утечек, а также утилиты трассировки стека и символизации.
flags
Библиотека flags
содержит код для обработки флагов командной строки для библиотек и двоичных файлов, созданных с помощью Abseil.
hash
hash
библиотека содержит структуру хеширования и реализации хэш-функторов по умолчанию для хешируемых типов в Abseil.
log
Библиотека log
содержит макросы LOG
и CHECK
, а также средства для записи зарегистрированных сообщений на диск, stderr
или в расширяемые пользователем места назначения.
memory
Библиотека memory
содержит средства управления памятью, которые дополняют библиотеку
C++.
meta
meta
библиотека содержит совместимые версии проверок типов, доступные в версиях C++14 и C++17 библиотеки
C++.
numeric
numeric
библиотека содержит 128-битные целочисленные типы, а также реализации поразрядных математических функций C++20.
profiling
Библиотека profiling
содержит служебный код для профилирования сущностей C++. В настоящее время это частная зависимость других библиотек Abseil.
random
Библиотека random
содержит функции для генерации псевдослучайных значений.
status
Библиотека status
содержит абстракции для обработки ошибок, в частности absl::Status
и absl::StatusOr
.
strings
Библиотека strings
содержит множество строковых подпрограмм и утилит, включая C++14-совместимую версию типа C++17 std::string_view
.
synchronization
Библиотека synchronization
содержит примитивы параллелизма (класс Abseil absl::Mutex
, альтернатива std::mutex
) и множество абстракций синхронизации.
time
Библиотека time
содержит абстракции для вычислений с абсолютными моментами времени, продолжительностью времени, а также форматированием и анализом времени в часовых поясах.
types
Библиотека types
содержит неконтейнерные служебные типы, такие как C++14-совместимая версия C++17 std::optional
типа.
utility
Библиотека utility
содержит служебный и вспомогательный код.
Abseil рекомендует пользователям «живать в голове» (как можно чаще обновлять последнюю фиксацию из основной ветки). Однако мы понимаем, что эта философия работает не для каждого проекта, поэтому мы также предоставляем выпуски с долгосрочной поддержкой, в которые мы переносим исправления серьезных ошибок. Дополнительную информацию см. в нашем документе по управлению выпусками.
Библиотека Abseil C++ лицензируется на условиях лицензии Apache. См. ЛИЦЕНЗИЮ для получения дополнительной информации.
Для получения дополнительной информации об Абселе:
Ознакомьтесь с нашим введением в Abseil.
Прочтите «Почему стоит выбрать Abseil», чтобы понять нашу философию дизайна.
Ознакомьтесь с нашими гарантиями совместимости Abseil, чтобы понять, что мы обещаем вам и чего мы ожидаем от вас взамен.