Abseil - C++ 通用库:开源代码集合扩展标准库,多方面信息全解析!
Abseil - C++ 通用库
该仓库包含 Abseil C++ 库代码。Abseil 是一个开源的 C++ 代码集合(符合 C++17 标准),旨在扩展 C++ 标准库。
目录
- 关于 Abseil
- 快速开始
- 构建 Abseil
- 支持情况
- 代码映射
- 版本发布
- 许可证
- 相关链接
关于 Abseil
Abseil 是个开源的 C++ 库代码集合,目的是扩展 C++ 标准库。其库代码来自谷歌内部的 C++ 代码库,经过大量测试且已投入生产使用,也是我们日常编码依赖的代码。在某些情况中,Abseil 提供了 C++ 标准库缺失的功能;在其他情况里,针对谷歌代码库使用时发现的特殊需求,Abseil 给出了标准库的替代方案。我们会在提供的库代码里明确标注这些情况。Abseil 并非要和标准库竞争,只是我们发现这些实用工具在我们的代码库中很有用,现在想把这些资源提供给整个 C++ 社区。
快速开始
要是您想马上开始使用,得至少阅读 Abseil 快速入门指南。该指南涵盖了设置开发环境、下载 Abseil 代码、运行测试以及让一个简单二进制文件正常工作的相关信息。
构建 Abseil
Bazel 和 CMake 是 Abseil 官方支持的构建系统。关于使用 Bazel 构建系统构建 Abseil 的更多信息,可参阅快速入门指南。要是您需要 CMake 支持,可查看 CMake 构建说明和 CMake 快速入门。
支持情况
Abseil 遵循谷歌的基础 C++ 支持政策。有关当前支持的编译器版本、平台和构建工具的列表,可参阅相关表格。
代码映射
Abseil 包含以下 C++ 库组件:
-base:基础库包含初始化代码以及其他 Abseil 代码所依赖的代码。基础库中的代码不能依赖其他代码(除了 C++ 标准库)。
-algorithm:算法库包含对 C++ 库的扩展以及基于容器的算法实现。
-cleanup:清理库包含类似控制流结构的类型 `absl::Cleanup`,用于在作用域退出时执行回调。
-container:容器库包含额外的 STL 风格容器,包括 Abseil 的无序 “Swiss table” 容器。
-crc:循环冗余校验(CRC)库包含用于计算数据错误检测循环冗余校验的代码。
-debugging:调试库包含用于启用内存泄漏检查、堆栈跟踪和符号化工具的代码。
-flags:标志库包含处理使用 Abseil 构建的库和二进制文件的命令行标志的代码。
-hash:哈希库包含哈希框架以及 Abseil 中可哈希类型的默认哈希函数实现。
-log:日志库包含 `LOG` 和 `CHECK` 宏,以及将日志消息写入磁盘、标准错误输出或用户可扩展目标的工具。
-memory:内存库包含增强 C++ 内存管理的工具。
-meta:元库包含类似于 C++ 库中可用的类型检查。
-numeric:数值库包含 128 位整数类型以及 C++20 位运算数学函数的实现。
-profiling:性能分析库包含用于对 C++ 实体进行性能分析的实用代码。目前它是其他 Abseil 库的私有依赖项。
-random:随机库包含生成伪随机值的函数。
-status:状态库包含用于错误处理的抽象,特别是 `absl::Status` 和 `absl::StatusOr`。
-strings:字符串库包含各种字符串处理例程和实用工具。
-synchronization:同步库包含并发原语(Abseil 的 `absl::Mutex` 类,是 `std::mutex` 的替代方案)和各种同步抽象。
-time:时间库包含用于处理绝对时间点、时间间隔以及在时区中进行时间格式化和解析的抽象。
-types:类型库包含非容器实用类型。
-utility:实用工具库包含实用工具和辅助代码。
版本发布
Abseil 建议用户 “紧跟最新版本”(尽可能频繁地更新到主分支的最新提交)。不过,我们也知道这种方式并非适合所有项目,所以我们还提供长期支持版本,并会把严重 bug 的修复补丁回溯到这些版本。有关更多详细信息,可参阅我们的版本管理文档。
许可证
Abseil C++ 库遵循 Apache 许可证。有关更多信息,可参阅 `LICENSE` 文件。
相关链接
如需了解更多关于 Abseil 的信息:
- 请阅读我们的 [Abseil 简介](链接待补充)。
- 阅读 [为何采用 Abseil](链接待补充) 以了解我们的设计理念。
- 查看 [Abseil 兼容性保证](链接待补充),了解我们对您的承诺以及我们对您的期望。