Bazel 2.0 構建系統發布

可用的 發布開放式組裝工具 巴塞爾2.0Bazel 由 Google 工程師開發,用於建立公司的大部分內部專案。它負責專案構建,運行必要的編譯器和測試。 Bazel 支援使用 Java、C++、Objective-C、Python、Rust、Go 和許多其他語言建立和測試程式碼,以及建立行動應用程式。 Android 以及 iOS。專案程式碼 分發者 在 Apache 2.0 下獲得許可。

重大的版本變更涉及增加破壞向後相容性的變更。從 Bazel 2.0 開始,預設啟用以下模式:「--incompatible_remap_main_repo」(按名稱和透過 @ 引用現在引用同一個儲存庫)、「--incompatible_disallow_dict_lookup」(使用不可散列的鍵)、
“--incompatible_remove_native_maven_jar”和“--incompatible_prohibit_aapt1”。其他變化包括:

  • 在一個團隊中 查詢 已新增對新版「proto」輸出格式(--output=proto)的實驗性支持,該支援目前預設為停用狀態(--incompatible_proto_output_v2),並提供更緊湊的資料表示;
  • 新增了「--incompatible_remove_enabled_toolchain_types」標誌以刪除 PlatformConfiguration.enabled_toolchain_types 欄位;
  • 增加了對擴展路徑時使用循環符號連結的包的載入保護;
  • 實現了將「--disk_cache」標誌與外部 gRPC 快取一起使用的能力;
  • 在包裹中 Debian 二進位安裝程式包含一個改進層,用於處理 ~/.bazelversion 檔案和 $USE_BAZEL_VERSION 環境變數;
  • 為了準備棄用執行文件清單文件,已新增「--experimental_skip_runfiles_manifests」標誌。

Bazel 的顯著特點包括裝配過程的高速、可靠性和可重複性。 為了實現高構建速度,Bazel 在構建過程中積極使用緩存和並行化技術。 BUILD 文件必須完全定義所有依賴關係,在此基礎上做出更改後重建組件的決策(僅重建更改的文件)並並行化構建過程。 該工具包還保證裝配的可重複性,即在開發人員的機器上構建項目的結果將完全匹配第三方系統(例如持續集成服務器)上的構建。

與 Make 和 Ninja 不同,Bazel 使用更高級別的方法來構建構建規則,其中不是定義命令到正在構建的文件的綁定,而是使用更抽象的現成塊,例如“在C++”、“用C++ 構建庫”或“C++ 測試運行”,以及定義目標和構建平台。 在 BUILD 文本文件中,項目組件被描述為一堆庫、可執行文件和測試,而沒有在單個文件和編譯器調用命令的級別進行詳細說明。 附加功能是通過連接擴展的機制來實現的。

支援針對不同平台和架構使用單一彙編文件,例如,一個無需修改的彙編文件即可用於伺服器系統,又可用於行動裝置。建置系統從一開始就被設計為最佳地建置 Google 項目,包括非常大的項目、包含多種語言程式碼的專案、需要大量測試的專案以及為多個平台建置的專案。

來源: opennet.ru

為具有 DDoS 保護、VPS VDS 服務器的站點購買可靠的主機 🔥 購買具備 DDoS 防護的可靠網站寄存服務,包括 VPS 和 VDS 伺服器 | ProHoster