TIGの伊藤真彦です。
2022.1.14(金)に Go 1.18 Release Notes みんなで読む会 というイベントを開催しました。
Go 1.18 Release Notes みんなで読む会
フューチャーでは定期的に勉強会などのイベントを開催しています。詳細はconnpassで確認できます、今後もイベントを開催予定ですので、ぜひご確認ください。
Go 1.18 Release Notes みんなで読む会はタイトルの通りGo 1.18のリリースノートを読み、適宜解説を行うイベントです。
がっつりと資料を作りこむスタイルではなく、社内勉強会くらいの軽めのノリでオープンなイベントを開催するという試みでもありました。詳しくは、がんばらない手ぶらオンライン勉強会の記事で説明しています。
視聴枠40人が埋まり、楽しくイベントを開催できました、今後はこういったスタイルのイベントを高頻度に開催できると良いかもしれませんね。
リリースノートの内容を紹介
イベントで取り上げたリリースノートの注目ポイントを軽く紹介します。内容はYouTube動画で公開予定です。
Generics
Go1.18の目玉機能と言えばGenericsの導入です。
Genericsは既にチュートリアルも公開されていますが、Type ParametersProposalで提案された内容に従った新機能が提供されます。
リリースノートの内容だけでもある程度紹介にはなりますが、非常に大きく複雑な新機能であるため、詳しくは様々な資料を見たり実際に触れながら勉強していくと良いでしょう。
またリリースノートにはメソッド内の型宣言など、Go 1.18では提供しないが、Go 1.19で追加を検討している機能もあるなど注意事項も書かれています。
Bug fixes
勿論バグの修正もリリースノートには記載されています。
今回は使用されていない変数をコンパイラが検知できないエッジケースの修正などが含まれています。普通に使っていて同じ現象に遭遇する事はほぼ無いであろうケースが紹介されており、これはこれで勉強になります。
Port
Portとはビルド対象のアーキテクチャにまつわる話です。AMD64、RISC-Vなど各アーキテクチャ向けにビルドした際の挙動の変更などが記載されています。CPU命令セットの話など詳しい人と一緒に読んでいくと大きな学びになります。
GoはPlan 9対応が強いよね。理由は開発チームにメンバーがいて..といった小話をしました。
Fuzzing
Genericsの導入が大きいため他の変更は少ないと思いきや、その他様々な新機能も提供されています。
Go1.18からテストでFuzzingを行う事が可能になります。詳しくはfuzzing landing pageをご覧ください。
イベント当日で私が喋った部分です。
Go command
go get
、go instal
等の各種コマンドの細かな変更から、前述のFuzzing機能の追加によるコマンド追加などが説明されています。
Runtime
ガベージコレクタの改善などが説明されています。
Compiler
コンパイル結果の改善やジェネリクスの追加によるコンパイル速度への影響などのトピックがあります。-asan
オプションについてはリリースノートを読むまで知らなかった、という方も多いのではないでしょうか。
Linker
リンカについては-asan
オプションについて記述があります。
asanとはつまりAddress Sanitizerの事ですね。cgoを利用する際に起こり得るメモリエラーを検知できるようになります。
Core library
Genericsの登場に伴いconstraints
パッケージが登場する事が大きなニュースではありますが、net/netip
パッケージの登場などGenerics以外でも様々なニュースがありました。
Go 1.18はジェネリクスなど大きな目玉機能が多いので、コアライブラリなどの機能追加は減らそうという
まとめ
- リリースノートを読む会を開催しました
- Genericsの導入が目玉ですがその他にも様々な変更があります
- connpassに今後のイベント予定を掲載しています
次回は2022/1/28(金)にAWSを中心とした勉強会を開催します。
ぜひご参加ください。