リポジトリには、Abseil C++ ライブラリ コードが含まれています。 Abseil は、C++ 標準ライブラリを拡張するように設計された C++ コード (C++14 準拠) のオープンソース コレクションです。
アブセイルについて
クイックスタート
懸垂下降の構築
サポート
コードマップ
リリース
ライセンス
リンク
Abseil は、C++ 標準ライブラリを拡張するために設計された C++ ライブラリ コードのオープンソース コレクションです。 Abseil ライブラリ コードは、Google 独自の C++ コード ベースから収集され、広範囲にテストされ、本番環境で使用されており、私たちが日常のコーディング生活で依存しているコードと同じです。
場合によっては、Abseil は C++ 標準に欠けている部分を提供します。また、Abseil は、Google コード ベースでの使用を通じて発見された、特別なニーズに対応する標準の代替案を提供します。これらのケースは、提供するライブラリ コード内で明確に示されています。
Abseil は、標準ライブラリの競合となることを意図したものではありません。これらのユーティリティの多くがコード ベース内で目的を果たしていることがわかりました。現在、これらのリソースを C++ コミュニティ全体に提供したいと考えています。
すぐに始めたい場合は、少なくとも Abseil クイックスタートを実行してください。クイックスタートには、開発環境のセットアップ、Abseil コードのダウンロード、テストの実行、および単純なバイナリの動作に関する情報が含まれています。
Bazel と CMake は、Abseil の公式ビルド システムです。 Bazel ビルド システムを使用した Abseil のビルドの詳細については、クイックスタートを参照してください。 CMake のサポートが必要な場合は、CMake のビルド手順と CMake クイックスタートを確認してください。
Abseil は、Google の Foundational C++ サポート ポリシーに従います。現在サポートされているバージョンのコンパイラ、プラットフォーム、ビルド ツールのリストについては、この表を参照してください。
Abseil には、次の C++ ライブラリ コンポーネントが含まれています。
base
baseライブラリには、初期化コードと、他のすべての Abseil コードが依存するその他のコードが含まれています。 base内のコードは、他のコード (C++ 標準ライブラリ以外) に依存してはなりません。
algorithm
algorithmライブラリには、C++ <algorithm>ライブラリへの追加機能と、そのようなアルゴリズムのコンテナベースのバージョンが含まれています。
cleanup
cleanupライブラリには、スコープ終了時にコールバックを実行するために使用される、control-flow-construct のようなタイプabsl::Cleanupが含まれています。
container
containerライブラリには、Abseil の順序付けされていない「スイス テーブル」コンテナを含む追加の STL スタイル コンテナが含まれています。
crc crcライブラリcrcデータのエラー検出巡回冗長検査を計算するためのコードが含まれています。
debugging
debuggingライブラリには、リーク チェック、スタックトレースおよびシンボル化ユーティリティを有効にするのに役立つコードが含まれています。
flags
flagsライブラリには、Abseil で構築されたライブラリおよびバイナリのコマンド ライン フラグを処理するためのコードが含まれています。
hash
hashライブラリには、Abseil のハッシュ可能型のハッシュ フレームワークとデフォルトのハッシュ ファンクター実装が含まれています。
log
logライブラリには、 LOGおよびCHECKマクロと、ログに記録されたメッセージをディスク、 stderr 、またはユーザーが拡張可能な宛先に書き込むための機能が含まれています。
memory
memoryライブラリには、C++ の<memory>ライブラリを拡張するメモリ管理機能が含まれています。
meta
metaライブラリには、C++ <type_traits>ライブラリの C++14 および C++17 バージョン内で使用できる互換バージョンの型チェックが含まれています。
numeric
numericライブラリには、128 ビット整数型と C++20 のビットごとの数学関数の実装が含まれています。
profiling
profilingライブラリには、C++ エンティティをプロファイリングするためのユーティリティ コードが含まれています。 現在、これは他の Abseil ライブラリのプライベート依存関係です。
random
randomライブラリには、擬似乱数値を生成する関数が含まれています。
status
statusライブラリには、エラー処理の抽象化、具体的にはabsl::Statusおよびabsl::StatusOr<T>が含まれています。
strings
stringsライブラリには、C++17 std::string_view型の C++14 互換バージョンを含む、さまざまな文字列ルーチンとユーティリティが含まれています。
synchronization
synchronizationライブラリには、同時実行プリミティブ (Abseil のabsl::Mutexクラス、 std::mutexの代替) およびさまざまな同期抽象化が含まれています。
time
timeライブラリには、絶対的な時点、時間の長さ、およびタイム ゾーン内の時間のフォーマットと解析を計算するための抽象化が含まれています。
types
typesライブラリには、C++17 std::optional型の C++14 互換バージョンなど、非コンテナー ユーティリティ型が含まれています。
utility
utilityライブラリには、ユーティリティ コードとヘルパー コードが含まれています。
Abseil は、ユーザーに「ライブアットヘッド」(できるだけ頻繁に master ブランチから最新のコミットに更新する) を推奨します。ただし、この哲学がすべてのプロジェクトで機能するわけではないことを認識しているため、重大なバグの修正をバックポートする長期サポート リリースも提供しています。詳細については、リリース管理ドキュメントを参照してください。
Abseil C++ ライブラリは、Apache ライセンスの条件に基づいてライセンスされています。詳細については、「ライセンス」を参照してください。
アブセイルについて詳しくは、以下をご覧ください。
アブセイルの紹介を参照してください
当社の設計哲学を理解するには、「アブセイルを採用する理由」をお読みください。
当社のアブセイル互換性保証をよく読んで、当社がお客様に約束することと、お客様に期待することの両方を理解してください。