Репозиторий содержит код библиотеки 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++ <algorithm> и контейнерные версии таких алгоритмов.
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 содержит средства управления памятью, которые дополняют библиотеку <memory> C++.
meta
meta библиотека содержит совместимые версии проверок типов, доступные в версиях C++14 и C++17 библиотеки <type_traits> C++.
numeric
numeric библиотека содержит 128-битные целочисленные типы, а также реализации поразрядных математических функций C++20.
profiling
Библиотека profiling содержит служебный код для профилирования сущностей C++. В настоящее время это частная зависимость от других библиотек Abseil.
random
Библиотека random содержит функции для генерации псевдослучайных значений.
status
Библиотека status содержит абстракции для обработки ошибок, в частности absl::Status и absl::StatusOr<T> .
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, чтобы понять, что мы обещаем вам и чего мы ожидаем от вас взамен.