Microsoft發布了Visual Studio中的標準C ++庫代碼

微軟標誌

微軟徽標

在CppCon 2019大會上 這些天一直在慶祝 微軟的倡導者藉此機會宣布了代碼的公開 為其實施 從C ++標準庫 (也稱為STL),它是MSVC Toolkit和Visual Studio開發環境的一部分。

該庫實現了當前C ++ 14和C ++ 17標準中描述的功能, 並且它是根據當前工作草案中的更改而朝著支持將來的C ++ 20標準的方向開發的。

通過 微軟員工決定採取此行動的原因,他們在聲明中解釋:

我們這樣做的原因有很多,其中之一是在GitHub上的STL上工作,這將使我們的客戶能夠隨時了解我們的發展情況,測試我們的最新更改,並通過查看它們來幫助我們改善拉動請求。

隨著C ++標準化的加速發展,並且每年都會投票選出更大的功能,我們認為接受核心功能作為開源貢獻非常重要。 (例如,C ++ 20格式和按時間順序排列的庫是可能的候選對象。) 我們還希望通過實現我們的核心功能來為C ++社區做出貢獻。 (例如,C ++ 17中的charconv)

有了它 微軟公司的人們知道他們計劃繼續將該庫作為一個開放項目進行開發 它正在GitHub上開發,將接受來自外部開發人員的修復和新功能實現的拉取請求(要參與開發,需要CLA協議才能將所有權轉讓給所轉讓的代碼)。

據觀察, 將開發從STL遷移到GitHub將有助於Microsoft客戶 跟踪開發進度,嘗試最新變化,並幫助審核傳入的創新要求。

也打開代碼 允許社區使用現成的實現 其他項目中新標準的機會。

關於該庫代碼的許可, 提議在Apache 2.0許可證下以開放形式提供,但二進製文件除外,該二進製文件解決了在生成的可執行文件的組成中包括運行時庫的問題。

要清楚一點 MSVC STL未與libc ++合併,因為它們仍是單獨的庫。

微軟解釋了為什麼代碼許可證 以允許與LLVM項目的libc ++庫進行代碼交換的方式選擇。 STL和libc ++在數據結構的內部表示形式上有所不同,但是,如果願意,libc ++開發人員可以移植有趣的STL功能(例如charconv),或者兩個項目可以共同開發一些創新。

MSVC STL是在Apache v2.0許可下分發的,具有LLVM例外,該許可是最近由Clang / LLVM / libc ++項目創建的。

Apache許可證中添加的例外取消了在向最終用戶交付STL編譯的二進製文件時提及使用源產品的要求。

選擇此開放源代碼許可證是因為它具有與libc ++相同的許可證 這將使在庫之間共享代碼更加容易。 需要明確的是,MSVC STL沒有與libc ++合併; 它們仍然是不同的庫,它們支持具有不同數據結構表示形式的不同平台。

另一方面,該項目的關鍵目標之一就是完全符合要求 規範,確保高性能,易用性(調試,診斷,錯誤檢測工具)以及與Visual Studio 2015/2017早期版本的源和ABI級別兼容性。

在這些領域中 Microsoft對開發是否可移植到其他平台以及添加自定義擴展不感興趣。

如果您想了解有關Microsoft所作聲明的更多信息,可以查閱該聲明。 在下面的鏈接中。


發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責資料:AB Internet Networks 2008 SL
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。