abseil / 为何采用 Abseil?

主要观点:推荐 Abseil 作为新 C++项目实用代码的首选,原因包括与当前和未来 C++标准兼容、与 Google OSS 项目兼容、提供升级支持、有生产经验以及有不同设计优先级等。
关键信息:

  • 与 C++标准兼容:Abseil 中的抽象与 C++14、C++17 及后续版本的特性匹配,能提前访问未来标准库的功能,且通过预处理器条件结构实现与标准类型的转换。
  • 与 Google OSS 项目兼容:多年来 Google 对兼容性需求变化,Abseil 有助于解决与其他 Google OSS 项目的 API 摩擦问题。
  • 升级支持:推荐“live at head”,承诺代码按兼容性指南行为则不会因 Abseil 变化而中断,若需重构会提供工具,也可选择不“live at head”并定期获得支持分支。
  • 生产经验:Abseil 库有在 Google 生产环境的使用经验,包含一些针对生产问题的小特性。
  • 不同设计优先级:C++标准注重运行时不付费和通用 API,Abseil 则针对常见用例提供优化设计,如absl::Timeabsl::Duration类型。
    重要细节:
  • Google 内部有超过 2.5 亿行 C++代码且几乎每个项目都从源头构建,以解决软件工程中的版本不匹配等问题。
  • 在 Abseil 的string_view.h中通过预处理器条件结构处理与std::string_view的关系。
  • 在 Google Cloud 等项目中,Abseil 能解决 API 依赖问题。
  • Abseil 的更新命令行标志 API 包含“retired flags”特性以处理大型共享代码基中的问题。
  • 不同设计优先级的例子中,absl::Timeabsl::Duration类型针对常见任务提供更简单的代码。
阅读 11
0 条评论