Go プログラミング言語 1.18 のリリース

Go 1.18 プログラミング言語のリリースが発表されました。これは、コンパイル言語の高いパフォーマンスと、コードの記述の容易さなどのスクリプト言語の利点を組み合わせたハイブリッド ソリューションとして、Google によってコミュニティの参加を得て開発されています。 、開発速度とエラー保護。 プロジェクト コードは BSD ライセンスに基づいて配布されます。

Go の構文は、Python 言語から一部借用した、使い慣れた C 言語の要素に基づいています。 言語は非常に簡潔ですが、コードは読みやすく、理解しやすいです。 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 Numberinterface { 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 が必要になります。

出所: オープンネット.ru

コメントを追加します