Open21

Go1.19 new features

Koya IWAMURAKoya IWAMURA

LoongArch アーキテクチャ(中国企業の完全オリジナルCPU命令セット)のサポート

Koya IWAMURAKoya IWAMURA

image/draw パッケージの Draw 関数が後方互換性を満たしていなかったので修正

Koya IWAMURAKoya IWAMURA

環境変数 GOMEMLIMIT でランタイムのメモリ使用量を制限できるようになった

制限されるのはヒープ及びランタイムが管理するメモリのみ
CGO などにより他の言語が使用するメモリや、実行バイナリ自身、OS が管理するメモリは制限されない

GC を off にしている場合でも機能する

Koya IWAMURAKoya IWAMURA

fmt パッケージに Append, Appendf, Appendln 関数が追加された
あらかじめ用意した byte slice に対し、要素を byte slice 化したものを追加するときに使う

Koya IWAMURAKoya IWAMURA

net/url パッケージに JoinPath 関数と URL.JoinPath メソッドが追加された
第一引数に渡されたベースの URL と、第二引数以降に渡された文字列をくっつけた URL を作る

Koya IWAMURAKoya IWAMURA

Linux で Race Detector を使う場合は最新の glibc と binutils(glibc: 2.17, binutils: 2.26)が必須になった

Koya IWAMURAKoya IWAMURA

riscv64 でもレジスタベースの引数を取れるようになり、10%以上パフォーマンスが向上した

Koya IWAMURAKoya IWAMURA

Go独自のメモリモデルではなく、C, C++, Java, JavaScript, Swift, Rust などと同様のメモリモデルに変更

Koya IWAMURAKoya IWAMURA

ビルド制約 //go:build で unix like な OS を指定できるようになった

unix like な OS と判断されるのは GOOS が次のいずれかの場合である

  • aix
  • android
  • darwin
  • dragonfly
  • freebsd
  • hurd
  • illumos
  • ios
  • linux
  • netbsd
  • openbsd
  • solaris
Koya IWAMURAKoya IWAMURA

GoDoc でリンク、リスト、見出しがサポートされた

また、go/doc/comment が標準パッケージとして入り、HTML, Markdown 等で GoDoc を出力できるようになった

Koya IWAMURAKoya IWAMURA

頻繁に GC が実行されるのを防ぐために、GC の実行時間よりもアプリケーションの実行時間が長い場合は GC が実行されないようになった

Koya IWAMURAKoya IWAMURA

os/exec パッケージの Command や LookPath は、環境変数 PATH を元にしてコマンドを検索するが、セキュリティの都合で相対パスで設定される PATH は検索対象から除外されるようになった

Koya IWAMURAKoya IWAMURA

encoding/binary パッケージに関数 AppendUvarint, AppendVarint が追加され、byte スライスに整数をそのまま追加しやすくなった

Koya IWAMURAKoya IWAMURA

flag パッケージに関数 TextVar が定義され、encoding.TextUnmarshaler に対応した値をフラグ経由で入力しやすくなった

つまり、big.Int, netip.Addr, time.Time などを変換を挟まずに入力できるようになった