专栏首页BestSDKGoogle开源Abseil,深度支持C++和Python

Google开源Abseil,深度支持C++和Python

Abseil 已在 Google 历经十多年的开发,它的目的是为 Google 编程人员在各种项目上的工作需求提供支持,这些项目包括 Protocol Buffers、gRPC 和 TensorFlow 等。Google 评价 Abseil 为:

它是从 Google 内部代码块中抽取出来的一系列最基础的软件库。作为基本的组成部分,这些软件库支撑了几乎全部 Google 在运行的项目。以前这些 API 是零零散散地嵌入在 Google 的大部分开源项目中,现在我们将它们规整在一起,形成这样一个全面的项目。 Abseil 是 Google 代码库的最基本构建模块,其代码经过了生产环节测试,此后还会继续得到完全的维护。

最初,Abseil 提供的抽象并非 C++ 14 或 C++ 17 的组成部分,但最终它们已被添加到 C++ 标准中。例如,Google 提供一个称为 StringPiece 的类型,随后 C++ 17 也添加了一个称为 std::string_view 的相近类型。为了与新的 C++ 17 类型具有一致的 API,Google 将 StringPiece 重构为 absl::string_view。从底层机制上看,如果开发人员正在使用的是 C++ 17,那么 Abseil 的 string_view 默认为标准实现;如果开发人员正在使用的是 C++ 17 以前的版本,那么 string_view 默认为 Google 的实现。

使用 Abseil 的优点在于可以访问一些目前依然尚未添加到标准中的 C++ 特性,并且一旦这些特性被添加到 C++ 标准中,Google 保证会重构这些特性为默认使用标准实现。Google 鼓励开发人员使用 Abseil,并提及已有超过两亿五千万行的 C++ 代码使用它,并且几乎所有从头开始构建的项目都使用了它。这意味着,Abseil 已被 Google 广为使用,并出于与项目需求同步的考虑而得以频繁维护。

Abseil 中包括如下的库:

  • base:初始化,以及其它的基础代码。
  • algorithm:对 C++ 的 库的补充,并为原算法提供了基于容器的版本。
  • container:提供了更多的 STL 类型容器。
  • debugging:用于检查泄漏的调试库。
  • memory:包括兼容 C++ 11 版本的 std::make_unique() 和内存管理。
  • meta:包括兼容 C++ 11 版本的类型检查,在 C++ 14 和 C++ 17 版本的 C++ 库中可用。
  • numeric:兼容 C++ 11 的 128 位整数。
  • strings:各种字符串工具。
  • synchronization:并发原语和同步抽象。
  • time:抽象了绝对时间点操作和时区操作。
  • types:非容器工具的类型。

Abseil 的代码采用 Apache 许可,已发布在 GitHub 上。其 Python 版本的软件库将随后发布。

本文分享自微信公众号 - BestSDK(bestsdk)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-10-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 重返中国遥遥无期,Google 中国要“文化先行”

    今年8月 1 日将北京总部从五道口的科建大厦搬到融科资讯中心后,Google中国又短暂地出现在了中国人的视野里,此时距离Google 进入中国已经过去了 10 ...

    BestSDK
  • 大疆与微软合作推出Win 10 SDK:以后Windows 可操控无人机

    日前在美国西雅图举行的Microsoft Build 2018,微软宣布大疆创新成为其新合作伙伴,DJI 将推出Windows 10 系统的软体开发工具(SDK...

    BestSDK
  • C++是程序界的“屠龙刀”,但是握刀的人经常用成“杀猪刀”

    C++的初衷 1)早期C++许多的工作是对于C的强化和净化,并把完全兼容C作为强制性要求。C89、C99中许多的改进正是从C++中所引进。可见,Stroustr...

    BestSDK
  • 信息的分类(续):ODP(Open Directory Project) 和 FreeBase

    我曾经在日志里写过,我希望找到一个好的分类法。当时我举了Google、Yahoo!和Wikipedia三个例子,并且表示我对它们都不是很满意。 今天,我看到了D...

    ruanyf
  • Google Nest收购Dropcam,不只是为了摄像头

    被Google以30亿美金收入囊中的Nest正式拿下了Dropcam,价格为5.55亿美金。对于收购目的,Nest联合创始人罗杰斯表示“Nest和Dropcam...

    罗超频道
  • Windows 技术篇-WPS关闭推送广告配置方法

    WPS 的推送广告非常的频繁,而且360软件净化也净化不了。 好的是,WPS 自带的配置工具就可以关闭广告推送,还是比较良心的。

    小蓝枣
  • 如何用 Python 爬取自己的微信朋友

    微信作为一款拥有将近9亿用户的超级APP,已经成为很多人生活中不可或缺的一部分,聊天、分享动态、阅读资讯、购物支付……微信就像一张移动互联网的身份证,拥有它就能...

    CDA数据分析师
  • OpenDaylight与Mininet应用实战之流表操作三

    本文简要介绍在虚拟机环境下,主要目的是对Open vSwitch下发的流表操作,通过OpenDaylight与Mininet熟悉添加、删除流表的命令及设备通信的...

    SDNLAB
  • 【上帝视角看微信】用 Python 爬取自己的微信朋友

    微信作为一款拥有将近9亿用户的超级APP,已经成为很多人生活中不可或缺的一部分,聊天、分享动态、阅读资讯、购物支付……微信就像一张移动互联网的身份证,拥有它就能...

    钱塘数据
  • Google将推中文信息流产品,今日头条们请注意~

    关于这款中文信息流产品,跟Google翻译、猜画小歌一脉相承,据称照样基于移动端、大概率是手机App,重点是为中文信息而生。

    量子位

扫码关注云+社区

领取腾讯云代金券