Go 編程語言發布 1.13

介紹 編程語言發布 轉到1.13,由谷歌在社區參與下開發,作為混合解決方案,結合了編譯語言的高性能 和腳本語言的優點 \uXNUMXb\uXNUMXb例如易於編寫代碼,開發速度,和錯誤保護。 項目代碼 分發者 在 BSD 許可證下。

Go 的語法基於 C 語言的熟悉元素,並藉鑑了 Python 語言。 語言相當簡潔,但代碼易於閱讀和理解。 Go 代碼被編譯成獨立的二進制可執行文件,無需使用虛擬機(分析、調試和其他運行時問題檢測子系統集成為 運行時組件),它可以讓您獲得與 C 語言程序相媲美的性能。

該項目最初的開發著眼於多線程編程和多核系統上的高效操作,包括提供在操作員級別實施的方法,用於組織並行計算和並行執行方法之間的交互。 該語言還提供內置保護,防止分配的內存塊溢出,並提供使用垃圾收集器的能力。

主要的 創新,在 Go 1.13 版本中引入:

  • crypto/tls 包預設啟用協議支持 TLS 1.3的。 新增了新套件“crypto/ed25519”,支援 Ed25519 數位簽章;
  • 增加了對新數字文字前綴的支持,以定義二進制數(例如0b101)、八進制(0o377)、虛數(2.71828i)和十六進制浮點(0x1p-1021),並能夠使用“_”字符在視覺上分隔數字大量 (1_000_000);
  • 取消了在移位操作中僅使用無符號計數器的限制,這避免了在使用“←”和“←”運算符之前不必要地轉換為 uint 類型;
  • 增加了對 Illumos 平台 (GOOS=illumos) 的支援。 保證了與Android 10平台的兼容性,提高了對FreeBSD(11.2)和macOS(10.11“El Capitan”)最低版本的要求。
  • 繼續開發新的模組系統,可以作為GOPATH的替代品。 與先前在 Go 1.13 中宣布的計劃相反,該系統預設未啟用,需要透過 GO111MODULE=on 變數或使用自動應用模組的上下文來啟動。 新的模組系統具有整合的版本控制支援、套件交付功能和改進的依賴關係管理。 使用模組,開發人員不再局限於在 GOPATH 樹中工作,可以明確定義版本化依賴項,並創建可重複的構建。

    與先前的版本不同,當執行 go 命令時當前工作目錄或父目錄中存在 go.mod 檔案時,包括當它位於 GOPATH/src 目錄中時,新系統的自動應用程式現在可以工作。 新增了新的環境變數:GOPRIVATE,定義可公開存取的模組的路徑;GOSUMDB,指定 go.sum 檔案中未列出的模組的校驗和資料庫的存取參數;

  • 預設情況下,「go」命令會載入模組並使用 Google 維護的模組鏡像和校驗和資料庫(proxy.golang.org、sum.golang.org 和 index.golang.org)檢查其完整性;
  • 對僅二進位套件的支援已停止;以「//go:binary-only-package」模式建置套件現在會導致錯誤;
  • 在“go get”命令中添加了對“@patch”後綴的支持,表示模組應更新到最新的維護版本,但不更改當前的主要或次要版本;
  • 從原始碼控制系統檢索模組時,「go」指令現在會對版本字串執行額外檢查,嘗試將偽版本號與儲存庫中的元資料進行比對;
  • 增加了支持 錯誤檢查 (錯誤包裝)透過建立允許使用標準錯誤處理程序的包裝器。 例如, 錯誤 “e”可以透過提供一種方法來包裹錯誤“w” 開卷,返回“w”。 程式中存在錯誤“e”和“w”,並根據錯誤“w”做出決策,但“e”為“w”提供了額外的上下文或對其進行了不同的解釋;
  • 運行時組件的效能已得到最佳化(已註意到速度提高了高達30%),並且已實現更積極地將記憶體返回給作業系統(以前,記憶體會在五分鐘或更長時間後返回,但現在會立即返回)減少堆大小後)。

來源: opennet.ru

添加評論