Google開源了Abseil,為C++和Python開發提供支援
Google公開了其專案內部使用的一系列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++的
\u0026lt;algorithm\u0026gt;
庫的補充,併為原演算法提供了基於容器的版本。 \\ - container:提供了更多的STL型別容器。 \\
- debugging:用於檢查洩漏的除錯庫。 \\
- memory:包括相容C++ 11版本的
std::make_unique()
和記憶體管理。 \\ - meta:包括相容C++ 11版本的型別檢查,在C++ 14和C++ 17版本的C++
\u0026lt;type_traits\u0026gt;
庫中可用。 \\ - numeric:相容C++ 11的128位整數。 \\
- strings:各種字串工具。 \\
- synchronization:併發原語和同步抽象。 \\
- time:抽象了絕對時間點操作和時區操作。 \\
- types:非容器工具的型別。\
Abseil的程式碼採用Apache許可,已釋出在GitHub上。其Python版本的軟體庫將隨後釋出。
\\檢視英文原文: Google Open Sources Abseil, a Collection of C++ and Python Utilities
相關文章
- Google 開源主管解釋為什麼開源“殘酷”Go
- Google開源Carbon語言,旨在成為C++的繼任者GoC++
- 玩轉Google開源C++單元測試框架Google Test系列(gtest)(總)GoC++框架
- Grumpy:Google開源神器 Go上執行PythonGoPython
- 開源鉅獻:2017 年 Google 開源了這些超讚的專案Go
- 開源了!唱吧 UI 元件庫開源了!UI元件
- Google計劃開發開源WebKit核心Android瀏覽器GoWebKitAndroid瀏覽器
- Google 正式開源 ParanoidGo
- 何為開源,聊聊軟體開發中的那些開源協議協議
- 當前低程式碼開發平臺給哪些應用程式開發提供支援
- TiFlash 開源了
- 使用Java和Google Guava簡化開發JavaGoGuava
- 5W1H聊開源之Who——誰“發明”了開源?
- 開源了我獨立開發的評論元件 SaaS ? ?元件
- 有了開源框架A-Frame,開發VR網頁soeasy!框架VR網頁
- 2017 年 Google 開源了這些超讚的專案Go
- Python開源非同步併發框架Python非同步框架
- 為何我選擇了iOS開發?iOS
- Google開原始碼網站搬家了Go原始碼網站
- 開源軟體為中國軟體提供了發展機遇–陸首群
- 阿里最強 Python 自動化工具開源了!阿里Python
- Python如何嵌入C/C++進行開發PythonC++
- GoogleGuice3.0開發GoGUI
- Google VR 開發簡介GoVR
- 邀請學生加入 Google Summer of Code,為開源做出貢獻!Go
- 開源低程式碼時代,企業自主開發管理系統已成為了一種新常態
- Linux C++ 開發1 - 搭建C++開發環境LinuxC++開發環境
- Adobe和Google聯合推出開源字型“思源黑體”Go
- Pyston:Dropbox 正開發的開源 Python 直譯器Python
- 為什麼機器學習行業的發展離不開 “開源”機器學習行業
- ASP.NET Core 修改開源協議為MIT,.NET全平臺 MIT協議開源了ASP.NET協議MIT
- 【開源】.net微服務開發引擎Anno開源啦微服務
- Linus Torvalds:開發Linux不是為了認真,就是為了好玩!Linux
- C++開源專案等收集C++
- c++為什麼適合桌面軟體開發?C++
- 中國和開源
- Unity遊戲示例來了,用Unity開源遊戲資源做遊戲,遊戲開發不再難!Unity遊戲開發
- Java和Python的Web開發JavaPythonWeb