CppCon 2019會議是 實現 微軟的重要公告, 好在她 公佈了STL庫源代碼的發布 Visual C ++隨附的C ++標準,該公告自發布之日起可用 在免費許可下,特別是Apache 2.0 (這是相當寬鬆的)。
LLVM / Clang C ++標準庫libcxx已使用此許可證,這應該有助於項目之間的代碼交換。 該庫的所有源代碼都是可用的,並且可以與Visual C ++一起編譯,但尚未包括測試。
該開放項目預計將在GitHub上開發並接收請求請求 具有新功能和補丁的第三方。 要成為會員,您必須簽署CLA代碼轉移協議。
MSVC團隊認為,從STL到GitHub的遷移將幫助Microsoft客戶保持開發過程的最新狀態,嘗試創新並幫助開發項目。
取而代之的是, 開發人員將能夠在其他項目中使用新標準的現成實現。
例如,您可以與LLVM項目中可用的libc ++庫交換代碼。 Microsoft強調STL和libc ++不會合併,它們仍然是不同的庫, 具有不同的結構和平台。 但是,現在您可以為這兩個庫使用新功能,而不必擔心許可問題
標準庫的此實現不旨在與GCC或Clang提供的實現競爭,例如:Microsoft項目不計劃支持Microsoft以外的其他平台。
但是,開發人員的目標是實現高質量的實施:符合標準且非常快速。
Visual C ++版本2015和2017保證二進制兼容性 (該庫是2019年版本提供的庫),但在標准定稿之前已實現的功能(工作文件和技術規範C ++標準委員會)除外。
WCBF02分支(仍在Microsoft內部)在二進制級別包含不兼容的更改,但在源代碼級別不包含(對於標準庫的更新,有必要重新編譯項目,而不僅僅是更改DLL)。 該分支包含許多改進和修復,將很快公開發布。
與某些被描述為免費的項目不同, Microsoft建議報告缺陷並為項目代碼做貢獻 (在這種情況下,有必要簽署CLA,以賦予Microsoft必要的權利來重新分配文稿,尤其是在項目許可證變更的情況下,LLVM面臨著幾年的困難。)
在不遠的將來, Microsoft應該將其內部測試套件添加到項目中。 內部升級的錯誤列表正在遷移到GitHub。 目前,編譯是通過MSBuild完成的,但正在進行向CMake的遷移。 正在實現C ++ 20功能。
其他Visual C ++組件不應免費獲得許可證。 Microsoft通過聲明標準C ++庫完全獨立於編譯器(例如,與標準C庫相對),並且與其他編譯器組件相比發展非常迅速,證明了這一選擇的合理性。
STL源代碼位於 現在可以在Github上使用 感興趣的人將可以在這裡下載或檢查其代碼。
GitHub存儲庫包含該產品的所有源代碼, 具有更多信息的新CMake和README構建系統。 該庫是根據Apache 2.0許可獲得許可的(某些二進製文件除外)。
顯然, 這不會影響只想使用STL的開發人員, 因為它可以在Visual Studio IDE中使用。 但是,想要參與STL開發的開發人員可以使用GitHub存儲庫進行。
遷移到GitHub的工作仍在進行中,但是您現在可以克隆並構建代碼。