abseil/abseil-cpp
GitHub: abseil/abseil-cpp
Google 开源的 C++ 基础库集合,提供经过大规模生产验证的容器、字符串处理、并发原语、日志系统等通用组件,旨在补充和增强 C++ 标准库。
Stars: 17076 | Forks: 2974
# Abseil - C++ 通用库
本代码库包含 Abseil C++ 库代码。Abseil 是一个开源的 C++ 代码集合(符合 C++17 标准),旨在扩充 C++ 标准库。
## 目录
- [关于 Abseil](#about)
- [快速入门](#quickstart)
- [构建 Abseil](#build)
- [支持](#support)
- [代码地图](#codemap)
- [版本发布](#releases)
- [许可证](#license)
- [链接](#links)
## 关于 Abseil
Abseil 是一个开源的 C++ 库代码集合,旨在扩充 C++ 标准库。Abseil 库代码收集自 Google 内部的 C++ 代码库,经过了广泛的测试和生产环境的检验,这也是我们在日常编码生活中所依赖的相同代码。
在某些情况下,Abseil 提供了 C++ 标准中缺失的部分;在其他情况下,Abseil 针对我们在 Google 代码库中发现的各种特殊需求提供了标准库的替代方案。我们会在提供的库代码中清楚地注明这些情况。
Abseil 旨在扩充而非竞争 C++ 标准库;我们只是发现这些工具在我们的代码库中非常有用,现在希望将这些资源提供给整个 C++ 社区。
## 快速入门
如果您想立即开始,请确保至少阅读一遍 [Abseil 快速入门](https://abseil.io/docs/cpp/quickstart)。该快速入门包含有关设置开发环境、下载 Abseil 代码、运行测试以及运行一个简单二进制文件的信息。
## 构建 Abseil
[Bazel](https://bazel.build) 和 [CMake](https://cmake.org/) 是 Abseil 的官方构建系统。
有关使用 Bazel 构建系统构建 Abseil 的更多信息,请参阅 [快速入门](https://abseil.io/docs/cpp/quickstart)。
如果您需要 CMake 支持,请查看 [CMake 构建说明](CMake/README.md) 和 [CMake 快速入门](https://abseil.io/docs/cpp/quickstart-cmake)。
## 支持
Abseil 遵循 Google 的 [基础 C++ 支持政策](https://opensource.google/documentation/policies/cplusplus-support)。请参阅
[此表格](https://github.com/google/oss-policies-info/blob/main/foundational-cxx-support-matrix.md) 以获取当前支持的编译器、平台和构建工具版本列表。
## 代码地图
Abseil 包含以下 C++ 库组件:
* [`base`](absl/base/)
`base` 库包含初始化代码以及其他所有 Abseil 代码所依赖的代码。`base` 中的代码不得依赖任何其他代码(C++ 标准库除外)。 * [`algorithm`](absl/algorithm/)
`algorithm` 库包含对 C++ `` 库的补充以及基于容器的算法版本。
* [`cleanup`](absl/cleanup/)
`cleanup` 库包含类似控制流结构的类型 `absl::Cleanup`,用于在作用域退出时执行回调。 * [`container`](absl/container/)
`container` 库包含额外的 STL 风格容器,包括 Abseil 的无序 "Swiss table" 容器。 * [`crc`](absl/crc/) `crc` 库包含用于计算数据错误检测循环冗余校验(Cyclic Redundancy Checks)的代码。 * [`debugging`](absl/debugging/)
`debugging` 库包含用于启用泄漏检查以及堆栈跟踪和符号化功能的实用代码。 * [`flags`](absl/flags/)
`flags` 库包含用于处理使用 Abseil 构建的库和二进制文件的命令行标志的代码。 * [`hash`](absl/hash/)
`hash` 库包含哈希框架以及 Abseil 中可哈希类型的默认哈希仿函数实现。 * [`log`](absl/log/)
`log` 库包含 `LOG` 和 `CHECK` 宏,以及用于将记录的消息写入磁盘、`stderr` 或用户自定义扩展目标的工具。 * [`memory`](absl/memory/)
`memory` 库包含用于扩充 C++ `` 库的内存管理工具。
* [`meta`](absl/meta/)
`meta` 库包含类似于 C++ `` 库中可用的类型检查。
* [`numeric`](absl/numeric/)
`numeric` 库包含 128 位整数类型以及 C++20 位运算数学函数的实现。 * [`profiling`](absl/profiling/)
`profiling` 库包含用于分析 C++ 实体的实用代码。它目前是其他 Abseil 库的私有依赖项。 * [`random`](absl/random/)
`random` 库包含生成伪随机值的函数。 * [`status`](absl/status/)
`status` 库包含错误处理的抽象,特别是 `absl::Status` 和 `absl::StatusOr`。
* [`strings`](absl/strings/)
`strings` 库包含各种字符串例程和工具。 * [`synchronization`](absl/synchronization/)
`synchronization` 库包含并发原语(Abseil 的 `absl::Mutex` 类,`std::mutex` 的替代方案)以及各种同步抽象。 * [`time`](absl/time/)
`time` 库包含用于计算绝对时间点、时间段以及在时区内格式化和解析时间的抽象。 * [`types`](absl/types/)
`types` 库包含非容器实用工具类型。 * [`utility`](absl/utility/)
`utility` 库包含实用工具和辅助代码。 ## 版本发布 Abseil 建议用户采用 "live-at-head"(尽可能频繁地更新到 master 分支的最新提交)策略。然而,我们意识到这种理念并不适用于每个项目,因此我们也提供 [长期支持版本](https://github.com/abseil/abseil-cpp/releases),我们会将严重错误的修复反向移植到这些版本中。有关更多详细信息,请参阅我们的 [版本管理](https://abseil.io/about/releases) 文档。 ## 许可证 Abseil C++ 库根据 Apache 许可证的条款授权。有关更多信息,请参阅 [LICENSE](LICENSE)。 ## 链接 有关 Abseil 的更多信息: * 请参阅我们的 [Abseil 简介](https://abseil.io/about/intro) * 阅读 [为何采用 Abseil](https://abseil.io/about/philosophy) 以了解我们的设计理念。 * 细读我们的 [Abseil 兼容性保证](https://abseil.io/about/compatibility),以了解我们要对您做出的承诺,以及作为回报我们对您的期望。
`base` 库包含初始化代码以及其他所有 Abseil 代码所依赖的代码。`base` 中的代码不得依赖任何其他代码(C++ 标准库除外)。 * [`algorithm`](absl/algorithm/)
`algorithm` 库包含对 C++ `
`cleanup` 库包含类似控制流结构的类型 `absl::Cleanup`,用于在作用域退出时执行回调。 * [`container`](absl/container/)
`container` 库包含额外的 STL 风格容器,包括 Abseil 的无序 "Swiss table" 容器。 * [`crc`](absl/crc/) `crc` 库包含用于计算数据错误检测循环冗余校验(Cyclic Redundancy Checks)的代码。 * [`debugging`](absl/debugging/)
`debugging` 库包含用于启用泄漏检查以及堆栈跟踪和符号化功能的实用代码。 * [`flags`](absl/flags/)
`flags` 库包含用于处理使用 Abseil 构建的库和二进制文件的命令行标志的代码。 * [`hash`](absl/hash/)
`hash` 库包含哈希框架以及 Abseil 中可哈希类型的默认哈希仿函数实现。 * [`log`](absl/log/)
`log` 库包含 `LOG` 和 `CHECK` 宏,以及用于将记录的消息写入磁盘、`stderr` 或用户自定义扩展目标的工具。 * [`memory`](absl/memory/)
`memory` 库包含用于扩充 C++ `
`meta` 库包含类似于 C++ `
`numeric` 库包含 128 位整数类型以及 C++20 位运算数学函数的实现。 * [`profiling`](absl/profiling/)
`profiling` 库包含用于分析 C++ 实体的实用代码。它目前是其他 Abseil 库的私有依赖项。 * [`random`](absl/random/)
`random` 库包含生成伪随机值的函数。 * [`status`](absl/status/)
`status` 库包含错误处理的抽象,特别是 `absl::Status` 和 `absl::StatusOr
`strings` 库包含各种字符串例程和工具。 * [`synchronization`](absl/synchronization/)
`synchronization` 库包含并发原语(Abseil 的 `absl::Mutex` 类,`std::mutex` 的替代方案)以及各种同步抽象。 * [`time`](absl/time/)
`time` 库包含用于计算绝对时间点、时间段以及在时区内格式化和解析时间的抽象。 * [`types`](absl/types/)
`types` 库包含非容器实用工具类型。 * [`utility`](absl/utility/)
`utility` 库包含实用工具和辅助代码。 ## 版本发布 Abseil 建议用户采用 "live-at-head"(尽可能频繁地更新到 master 分支的最新提交)策略。然而,我们意识到这种理念并不适用于每个项目,因此我们也提供 [长期支持版本](https://github.com/abseil/abseil-cpp/releases),我们会将严重错误的修复反向移植到这些版本中。有关更多详细信息,请参阅我们的 [版本管理](https://abseil.io/about/releases) 文档。 ## 许可证 Abseil C++ 库根据 Apache 许可证的条款授权。有关更多信息,请参阅 [LICENSE](LICENSE)。 ## 链接 有关 Abseil 的更多信息: * 请参阅我们的 [Abseil 简介](https://abseil.io/about/intro) * 阅读 [为何采用 Abseil](https://abseil.io/about/philosophy) 以了解我们的设计理念。 * 细读我们的 [Abseil 兼容性保证](https://abseil.io/about/compatibility),以了解我们要对您做出的承诺,以及作为回报我们对您的期望。
标签:Abseil, Bash脚本, Bazel, C++, C++14, C++17, CMake, Google, HTTP头分析, Nuclei, 内存管理, 基础库, 头部文件, 字符串处理, 实用程序, 容器, 工具库, 并发编程, 底层库, 开源库, 搜索引擎爬虫, 数据擦除, 数据管道, 时间库, 构建系统, 标准库扩展, 模板库, 算法, 编程工具, 软件工程, 软件开发, 远程代码执行