Go version 1のプレビュー
A preview of Go version 1 by Russ Cox
私たちは、Goを使う人々に安定した基盤を提供できるようにしたいと考えています。 Goプログラムを書いた人は、それが何年という時間軸においても変更なくコンパイルでき、 動作し続けることを期待できるべきです。同様に、Goについて本を書く人は、 その本がどのバージョンのGoについて書かれているかを明示でき、 そのバージョン番号は後になっても意味を持ち続けるべきです。 しかし、これらの性質はどれも今日のGoには当てはまりません。
私たちは、来年早々に「Go version 1」、略して「Go 1」と呼ばれるリリースを 出すことを提案します。これは、このように安定した最初のGoリリースになります。 Go version 1でコンパイルできるコードは、私たちがGo version 1.1、1.2といった アップデートやバグ修正をリリースしていく間も、いくつかの例外を除いて、 そのバージョンが存続する限りコンパイルし続けられるべきです。 またGo version 1は、他のバージョンが進化を続ける間も、バグやセキュリティ上の 欠陥に対する修正がなされ続けます。さらに、Google App Engineのような本番環境でも、 長期間にわたりサポートされます。
Go version 1は、安定したライブラリを備えた安定した言語になります。 重大な修正を除いて、バージョン1.1、1.2などに向けてライブラリやパッケージに 加えられる変更は、機能を追加することはあっても、既存のGo version 1の プログラムを壊すことはありません。
私たちの目標は、Go 1を今日のGoの安定版にすることであり、言語を一から 考え直すことではありません。特に、新しい言語機能を「委員会方式」で 設計しようとする試みには明確に抵抗しています。
とはいえ、Goの言語やパッケージには、以前から意図し試作もしてきたものの、 まだ導入していない変更がいくつかあります。導入を見送ってきた主な理由は、 それらが大きく、後方互換性のない変更だからです。Go 1を末永く使われるものに するには、これらの変更をGo 1の準備の一環として計画し、発表し、実装し、 テストしておく必要があります。リリース後まで先送りすれば、 私たちの目標に反する分岐を生んでしまいます。
本日、私たちはGoコミュニティからのフィードバックを募るため、 Go 1に向けた予備的な計画を 公開します。フィードバックがあれば、 golang-nutsメーリングリストのスレッドに 返信してください。
By Russ Cox