TL;DR
GSoC通りました!GCCのRust frontendのUnicodeサポートをする予定です pic.twitter.com/8gCfPMapTm
— tamaron (@tamaroning) May 5, 2023
- Google Summer of Codeに提出したproposalが採択されました
- GCCのRustフロントエンドに対するUnicodeサポートを追加します
GSoCとは
Google が毎年夏休みに主催する主に学生(※1)向けのプログラムです。学生は GSoC に参加するOSS組織にプロジェクトの提案書を送り、無事採択されれば、各組織のメンターの下、約12週間の間オープンソースの開発を行います。年度、居住国によりますが、中規模、大規模なプロジェクトに対して、それぞれ 2700USD、5400USD の報酬がもらえます。
※1: 最近では学生以外でも応募する資格があります
私のプロジェクトについて
GCC は C や C++ をはじめとして、様々な言語のフロントエンドが存在します。その中の一つに Rust フロントエンド (gccrs) があります。既存の Rustc を用いずにコンパイラ自体をコンパイルするためにソースコードは C++ で書かれています。
私のプロジェクトの主な目的は、GCC の Rust フロントエンドが Unicode の識別子をコンパイルできるようにすることです。最近のプログラミング言語の識別子は UAX#31 に準拠していることが多く、ACII 以外の Unicode 文字を使うことができます。そのため、このプロジェクトでは構文解析器 (parser) と字句解析器 (lexer) を中心にソースコードに手を加えることになりますが、Rustコンパイラに要求される識別子の正規化や一部の属性に対する追加のチェックも実装する必要があります。さらに、name mangling などバックエンドに近いところまで影響が波及し、とても面白いプロジェクトだと思います。
採択されるまで
昨年の11月に初めてコントリビュートしました。最初はチームの方々に、IRCでビルドやエディタの設定などを教えてもらいながらやったことを覚えています。それまでC++を全く書いたことがなかったので、勉強のためにリンカを自作したりもしました。C++やコードベースに少しずつ慣れてきたら、ちゃんとした大きさのパッチにも取り組みました。
今年の2月にGCCのアイデアリストが公開されたので、2月中にproposalを大体書き終えて、メンターの方にレビューを頂きました。3月はGCCのメーリングリストにproposalを投げて、開発者の方々から頂いた意見などをもとに修正を行いました。最後に英語のライティングにあまり自信がなかったので、学科のガチプロである @southball さんに校正をしてもらいました。(本当にありがとうございます。)
今後応募する方に向けて
私の proposal は以下にあります。個人的にアイデアの技術的な詳細や見通しのよい細かい計画を書くこととメンターとコミュニケーションを取ることが大切だと感じました。他に、私はCVに過去のOSSコントリビューションについても記載しましたが、これも書いておいたほうが良いと思います。
過去に GSoC に参加された方が公開している proposal もとても参考になりました。
- https://maekawatoshiki.github.io/posts/gsoc1/
- https://docs.google.com/document/d/1Rlo0RFGsF_UCBhZBV-63spdWq9PR9NmBApdMGSaHLCU/edit
- https://okuraofvegetable.hatenablog.com/entry/gsoc-2020-apply
- https://momoka0122y.hatenablog.com/entry/2022/05/26/232604
さいごに
2回の evaluation を通せるように頑張ります!