Google開源了Abseil,爲C++和Python提供支持

Google公開了其項目內部使用的一系列C++庫,隨後還會公開其Python庫。
Google開源了Abseil,爲C++和Python提供支持Google開源了Abseil,爲C++和Python提供支持
Abseil已在Google歷經十多年的開發,它的目的是爲Google編程人員在各類項目上的工做需求提供支持,這些項目包括Protocol Buffers、gRPC和TensorFlow等。Google評價Abseil爲:linux

它是從Google內部代碼塊中抽取出來的一系列最基礎的軟件庫。做爲基本的組成部分,這些軟件庫支撐了幾乎所有Google在運行的項目。之前這些API是零零散散地嵌入在Google的大部分開源項目中,如今咱們將它們規整在一塊兒,造成這樣一個全面的項目。git

Abseil是Google代碼庫的最基本構建模塊,其代碼通過了生產環節測試,此後還會繼續獲得徹底的維護。github

最初,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++的<algorithm>庫的補充,併爲原算法提供了基於容器的版本。
  • container:提供了更多的STL類型容器。
  • debugging:用於檢查泄漏的調試庫。
  • memory:包括兼容C++ 11版本的std::make_unique()和內存管理。
  • meta:包括兼容C++ 11版本的類型檢查,在C++ 14和C++ 17版本的C++ <type_traits>庫中可用。
  • numeric:兼容C++ 11的128位整數。
  • strings:各類字符串工具。
  • synchronization:併發原語和同步抽象。
  • time:抽象了絕對時間點操做和時區操做。
  • types:非容器工具的類型。

Abseil的代碼採用Apache許可,已發佈在GitHub上。其Python版本的軟件庫將隨後發佈。工具

免費提供最新Linux技術教程書籍,爲開源技術愛好者努力作得更多更好:http://www.linuxprobe.com/  測試

相關文章
相關標籤/搜索