Google Summer of CodeにRust Foundationで採択された (2回目)
#zatsu #gsoc 2026-05-01
今年のGoogle Summer of Code(以下GSoC)でThe Rust Foundation,平たく言えばRust言語コミュニティに対して"Adding WebAssembly Linking Support to Wild"という題でプロポーザルを送り,無事採択されました.

採択通知
既にRustとGoogleの双方からも告知が出ています:
...という一連の流れを私は1年前もやっています:
すなわち同じOrganizationで2年連続2回目の採択がなされたということになります.GSoC参加者は多くいますが,2年目をやったことがある人はそこまで多くないように思います.実際過去の公式による統計情報を見ても,"92.32% are participating in their first GSoC"とあります.
GSoCが何かとかどういう仕組みで動いているかとかは,大体上に挙げた去年の採択時の記事に書いてあると思いますし,そうでなくてもインターネット上に先人たちが多くのことを残してくれているので本稿では説明しません.
Wildリンカーは現在Linux向け実行可能形式(ELF)に対して大変高速にリンクを行うことのできるリンカーです.高速,というのはこれまで高速とされてきたlldやmoldよりも多くのベンチマークにおいて数倍程度良いパフォーマンスを出すことができます.
Wildリンカーは主にRustコードをビルドする際のビルド時間削減を目的としているので,より多くのRustによる開発の場面でWildを使えるようになると嬉しいです.これには様々なアプローチがありますがWebAssemblyフォーマットへの対応は1つあるな,と考えたので公式のアイディアリストには存在しませんでしたが,これを独自提案として持込み,プロポーザルを提出しました.GSoCにおいてはOrganizationのアイディアリストから適当に選んでプロポーザルを提出することもできますが,独自にアイディアを考えて,これに対するプロポーザルを提出することもできます.ただし少なくともRust Foundationにおいては事前にメンターの都合を付けておくことが求められています.
提出まで踏み切った,すなわちプロジェクトとしてスタートさせたいという判断をしたのは後述する参加資格を満たしていたというのもありますし,出力ファイルの種別による処理をトレイト等で大方抽象化する作業が済んでいて[1],自分でWasmサポートを追加するにあたって必要な機能の洗い出しを行ったうえで,Wasmサポートを現実的に追加できる段階に来ていると考えたためです.
現在Wasmに対するリンカーとしてはlldベースのwasm-ldが多く使われているように思いますが,結局リンクという作業の大枠は共通したような処理が存在するため,これまでWildがELF用に提供していた既存の処理の多くの部分をWasm向けにも再利用できます.このため達成がプロジェクトの期間中か以後になるかは分かりませんが,wasm-ldよりも高速なリンクを達成できると良いなと思っています.
さて,GSoCの概念を多少ご存じの方であれば次のような疑問を持たれるかもしれません:
- GSoCはオープンソース貢献者を増やすことが目的のプログラムであって,既にある程度やっている人間は対象外なのでは?
- 2年目,同じOrganizationってありなの?
これらに対する答えは存外シンプルで,ルールの7.1中に書いてあります.まず"Requirements"の項目を見ると
To participate in the Program, a GSoC Contributor must be a student or a beginner to open source software development.
とあります."a beginner to open source software development"は参加資格のor条件でしかなく,私は学生なので有資格です.これは私見ですが,GSoCの目的は何も新規の貢献者創出だけにあるのではなく,中長期的にオープンソースコミュニティの発展に寄与することも意図しているように思います.慣れている人間であればその後も継続してくれる可能性が高いだろうから,あえてオープンソース初心者でなくとも参加可能な制度になっているのだと思います.
2度目の参加については"Ineligible Individuals"を見ると
A GSoC Contributor may not participate in the Program if they have previously participated as a GSoC Student or GSoC Contributor in Google Summer of Code two (2) or more times.
とあるので2回までなら参加可能ということになります[2].同一Organizationに関する縛りは存在しません.実際Rust Foundationは2年前からGSoCのOrganizationとして参加している(すなわち今年が3回目)のですが,2年連続で参加した人を数人知っています.逆に言うと2回採択されたら次からは応募できません.すなわち私は来年以降仮に学生をやっていたとしても応募資格を失います.
しかしながら私は既に対象となるOSS(Wild)のメンテナをしているので,その上でGSoCをやるのがよく分からないという意見もあると思います.これについては応募するかかなり悩んだし,メンターに「さすがに自分で独自に考えた提案で出すんだけど,周りからズルっぽく思われないかなぁ?」みたいなことを雑に聞いたら「いやまあ,応募資格を満たしているなら良いんじゃない」的な返答をされ,最終的に当然正当に競争するのが前提なのだからまあ良いかと自分の中でも思うようになりました.独自提案を持ち込むということは,自分のプロポーザルにより実現しようとしていることがどの程度Rustコミュニティに対して利するのか様々な観点から判断されるということでもあり,そこではねられるならそれは仕方がないと思っていました[3].逆に言うとこれまでの経験等が無ければ夏の期間中にこの規模の作業を遂行することには困難があると思っているので,そういった点からも自分から還元できる価値はそれなりにあると思っています.
いずれにせよ1年ぶりのGSoCで良い結果が出せると良いなと思います.おそらくは去年に引き続き提出が求められる,作業内容をまとめた最終レポートは本サイト上に置くと思います.もしくはGitHubをフォローしていただくなりするとフィードに私のマージされたPRが流れるはずですので,そちらで内容を追うこともできます(フォローする以外で追う手段をよく知りません).