Go編程語言1.18發布

Go 1.18 程式語言發布,由 Google 在社群參與下開發,作為混合解決方案,結合了編譯語言的高效能和腳本語言易於編寫程式碼等優點、開發速度和錯誤保護。 項目代碼在 BSD 許可證下分發。

Go 的語法是基於熟悉的 C 語言元素,並藉鏡了一些 Python 語言。 語言相當簡潔,但程式碼很容易閱讀和理解。 Go 程式碼被編譯成獨立的二進位可執行文件,無需使用虛擬機即可在本機運行(分析、調試模組和其他運行時問題檢測子系統集成為運行時組件),從而實現與C 程式相當的性能。

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

新版本增加了對泛型函數和類型(泛型)的支持,開發人員可以藉助泛型函數和類型來定義和使用旨在同時處理多種類型的函數。 也可以使用介面來建立跨越多種資料類型的組合類型。 實現對泛型的支援不會破壞與現有程式碼的向後相容性。 // 求和設定值,適用於 int64 和 float64 類型 func SumIntsOrFloats[K相當,V int64 | float64](m map[K]V) V { var s V for _, v := range m { s += v } return s } // 另一個另一個具有泛型型別定義的選項: type Number interface { int64 | float64 } func SumNumbers[K 可比較,V Number](m map[K]V) V { var s V for _, v := range m { s += v } return s }

其他改進:

  • 用於模糊程式碼測試的實用程式已整合到標準工具包中。 在模糊測試期間,會產生輸入資料的所有可能隨機組合的流,並記錄處理過程中可能出現的故障。 如果序列崩潰或與預期回應不匹配,則此行為很可能表示存在錯誤或漏洞。
  • 新增了對多模組工作區的支持,可讓您同時在多個模組上執行命令,從而允許您同時在多個模組中建置和運行程式碼。
  • 針對基於 Apple M1、ARM64 和 PowerPC64 處理器的系統進行了重大效能最佳化。 啟用使用暫存器而不是堆疊將參數傳遞給函數並傳回結果的能力。 改進了編譯器對迴圈的內聯展開。 編譯器中的類型檢查已完全重新設計。 一些測試顯示,與先前的版本相比,程式碼效能提高了 20%,但編譯本身花費的時間大約長 15%。
  • 在運行時,將釋放的記憶體返回給作業系統的效率得到了提高,垃圾收集器的操作也得到了改進,其行為變得更加可預測。
  • 新的套件 net/netip 和 debug/buildinfo 已新增至標準庫。 預設情況下,客戶端程式碼中會停用對 TLS 1.0 和 1.1 的支援。 crypto/x509 模組已停止處理使用 SHA-1 雜湊簽署的憑證。
  • 對 Linux 環境的要求已經提高;為了工作,您現在需要有至少 2.6.32 版本的 Linux 核心。 在下一個版本中,預計 FreeBSD 也會發生類似的變化(將停止對 FreeBSD 11.x 分支的支援),並且至少需要 FreeBSD 12.2 才能運作。

來源: opennet.ru

添加評論