本日、Go 1.1がリリースされました。(http://golang.org/doc/go1.1)
以下、Go 1からの変更点の要約です。
ゼロ除算
Go 1では、定数0による除算ではランタイムパニックが発生していましたが、Go 1.1ではコンパイル時にエラーとなります。
Unicodeリテラルのサロゲート
文字列リテラル、およびルーンリテラルでは、サロゲートハーフが使用できなくなりました。
メソッド値
新機能の「メソッド値」とは、特定の値をレシーバとする「関数の値」です。
例)f := t.Mv; f(7)
gccgoの状況
Go言語とGCCのリリーススケジュールとは一致しないため、どうしても差が生じます。
バージョン4.8.0では、Go1.1がほぼ実装されますが、メソッド値は実装されません。
コマンドラインのフラグ処理
コンパイラなどのGo言語のツール類は、Go言語のflagパッケージと同じ処理に変わります。
【Go 1】 go tool 6c -Fw -Dfoo
【Go 1.1】 go tool 6c -F -w -D foo
64ビット環境におけるintのサイズ
以前のバージョンでは、どの環境でもintおよびuint型のサイズは32ビットでしたが、64ビット環境では64ビットになります。
64ビット環境におけるヒープサイズ
64ビット環境における最大ヒープサイズは数ギガ~数10ギガに拡大されました。
Unicode
UTF-16で、65535以上のコードポイント値を表せるようになりました。これはUTF-16のみで、それ以外ではサロゲート領域のコードポイントは不正となります。
Race detector
「Race detector」はバグ発見ツールです。現在は64ビットx86プロセッサにのみ対応しています。
例) go test -race