abseil

Коллекция фундаментальных библиотек для языка C++, которые предназначены для решения широкого спектра задач системного программирования. Библиотека заполняет пробелы, существующие в стандартной библиотеке C++, предоставляя оптимизированные и надежные реализации распространенных алгоритмов и структур данных.

Особенности

  • кросс-платформенная совместимость;
  • модульность библиотек, возможность включать только нужные компоненты;
  • совместимость с существующей стандартной библиотекой C++.

Основные компоненты

Библиотека состоит из нескольких модульных компонентов, каждый из которых решает конкретные задачи (подробнее с документацией можно ознакомиться здесь):

Абстракции строк и текстовой обработки

Центральным компонентом является absl::string_view — невладеющий вид строки, который позволяет передавать подстроки без дорогостоящих операций копирования. Этот тип особенно полезен в API функций, которые принимают строки только для чтения, так как устраняет необходимость создания временных объектов.

Основные функции обработки строк:

  • absl::StrCat() и absl::StrAppend() для эффективной конкатенации;

  • absl::StrSplit() и absl::StrJoin() для разделения и объединения коллекций;

  • absl::StrFormat() для типобезопасного форматирования;

  • absl::Substitute() для простой шаблонизации текста.

Контейнеры и структуры данных

absl::flat_hash_map и absl::flat_hash_set используют алгоритмы открытой адресации с квадратичным пробированием, что обеспечивает отличную локальность данных и минимизирует количество кэш-промахов. Эти контейнеры особенно эффективны для небольших и средних коллекций, где они могут быть в несколько раз быстрее стандартных реализаций.

Специализированные контейнеры:

  • absl::InlinedVector — вектор с inline-хранением для оптимизации мелких коллекций;

  • absl::FixedArray — массив с compile-time или runtime размером;

  • absl::node_hash_map — хеш-таблица с узловым хранением для стабильных указателей;

  • absl::btree_map — B-дерево для упорядоченных ассоциативных массивов.

Утилиты времени и таймеров

Abseil предоставляет единую, последовательную модель времени, которая минимизирует ошибки и упрощает временные расчеты. Центральными типами являются absl::Time (момент времени) и absl::Duration (временной интервал). Эти типы обеспечивают строгую типизацию, предотвращая случайное смешивание различных временных единиц.

Библиотека также предоставляет высокоточные функции для измерений производительности, такие как absl::Now() и absl::GetCurrentTimeNanos(), которые гарантируют монотонность и устойчивость к корректировкам системного времени.

Средства синхронизации и параллелизма

Модуль синхронизации содержит промышленные реализации примитивов для многопоточного программирования. absl::Mutex представляет собой расширенную реализацию мьютекса с дополнительными функциями отладки и профилирования. В отличие от простых мьютексов стандартной библиотеки, он предоставляет встроенную поддержку условных переменных, reader-writer блокировок и механизмы обнаружения deadlock'ов.

Примитивы синхронизации:

  • absl::CondVar для условных ожиданий;

  • absl::Notification для однократных уведомлений между потоками;

  • absl::Barrier и absl::BlockingCounter для координации групп потоков;

  • absl::call_once() для гарантированно однократного выполнения;

  • absl::AnyInvocable — современная замена std::function, которая поддерживает move-only типы и предоставляет лучшую производительность за счет исключения type erasure в некоторых случаях.

Система диагностики и логирования

Cистема Abseil предоставляет структурированный и настраиваемый подход к диагностике. Логгер поддерживает различные уровни детализации, структурированные данные и условное логирование.

Диагностические возможности:

  • ABSL_CHECK() макросы для валидации с информативными сообщениями;

  • absl::Status и absl::StatusOr<T> для обработки ошибок без исключений;

  • Встроенная символизация стектрейсов для отладки креш-дампов;

  • Обработчики фатальных сигналов с сохранением диагностической информации.

Библиотека также включает систему флагов командной строки (absl::Flags), которая предоставляет типобезопасный доступ к параметрам конфигурации с автоматической генерацией help-сообщений и валидацией значений.

Использование в проекте

Документация по использованию Conan-пакетов для разработки приложений для ОС Аврора.

На сервере Conan библиотеки заранее собраны и размещены под различные версии ОС Аврора 4 и ОC Аврора 5. Для данных версий представлены архитектуры armv7hl, aarch64 и x84_64.

Библиотеку можно использовать в проекте с помощью данного conanfile.py

from conan import ConanFile

class Application(ConanFile):
    settings = "os", "compiler", "arch", "build_type"
    generators = "PkgConfigDeps"

    requires = (
        "abseil/20240722.0@aurora",
    )    

Процесс локальной сборки описан в документации.

abseil

Abseil Common Libraries (C++) from Google
Лицензия
Apache-2.0
Версия
Домашняя страница
Скачать
armv7
1.44 Mb
MD5: 65d07ed9e3cb94c85d442abbe949bcba
Updated: 29.01.2026, 13:02:35
armv8
1.63 Mb
MD5: b4143a42e600839c33a041ce21546e8b
Updated: 29.01.2026, 13:02:28
x86_64
1.5 Mb
MD5: f4e135176e76e518ad55e83c8ece1465
Updated: 29.01.2026, 13:02:39
Использование в проекте

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.