Google представил открытую библиотеку Abseil для разработчиков на C++
В состав библиотеки включены функции общего назначения, используемые в продуктах Google и хорошо протестированные на реально работающих проектах. Одна часть предложенных в Abseil функций заполняет ниши, не определённые в стандарте C++, а другая предоставляет альтернативные реализации штатных возможностей стандартов C++14 и C++17, адаптированные для использования в коде на C++11 (например, типы optional, any и string_view). Google не пытается продвигать Abseil как альтернативу стандартной библиотеке, а лишь желает поделиться с сообществом кодом, который оказался полезен в собственных проектах.
Компоненты библиотеки:
- base - базовая часть, включающая код для инициализации и первичные примитивы, которые используют только стандартную библиотеку C++, но при этом выступают в качестве зависимостей для других компонентов Abseil;
- algorithm - библиотека с коллекцией алгоритмов, дополняющая одноимённую стандартную библиотеку C++ и включающая варианты предложенных в ней алгоритмов, оформленных с использованием контейнеров;
- container - библиотека с дополнительными контейнерами в стиле STL;
- debugging - отладочная библиотека, добавляющая проверки для выявления утечек;
- memory - включает совместимую с C++11 реализацию std::make_unique() и других функций, связанных с управлением памятью;
- meta - включает совместимые с C++11 версии механизмов проверок типов, появившихся в библиотеке type_traits в C++14 и C++17;
- numeric - предоставляет совместимые с C++11 реализации 128-разрядных целых типов;
- strings - подборка функций для обработки строк, включая absl::StrCat(), absl::StrJoin() и absl::StrSplit(), а также совместимую с C++11 версию типа std::string_view, появившегося в стандарте C++17
- synchronization - примитивы для организации параллельно выполняемых потоков, класс absl::Mutex (оптимизированная замена std::mutex) и набор абстракций для синхронизации потоков;
- time - функции для операций с абсолютными моментами времени (absl::Time), отрезками времени (absl::Duration), форматирования и разбора значений времени. Также предложен absl::Now() , оптимизированный вариант std::chrono::system_clock::now();
- types - подборка типов, например, совместимый с C++11 вариант absl::optional.
Дополнительно развивается вариант библиотеки для языка Python, включающий систему обработки флагов командной строки и модуль для организации ведения логов.
Источник: http://www.opennet.ru/opennews/art.shtml?num=47275
|
0 | Tweet | Нравится |
|