旅する情報系大学院生

旅と留学とプログラミング

GSoC進捗報告(第一週)

進捗を報告することができるのは進捗が良い時だけですよね・・・。更新しなくなったら察してください。一応GSoCは平日のフルタイムワークという形になっていて週の進捗報告スカイプも金曜に設定されているので金曜日に進捗を報告することは自然なことです。ブログに書いて人に見られると進捗生まなきゃという気分にもなって最高です。

実装

Community Bonding Periodとは言いつつすでにパッチなどは投げているので実装を始めようかという話になり、普通に実装を始めています。
今週は単純なフラグの補完を実装しました。bash上でこんな感じに補完されます。

yamaguchi@ubu:~$ clang -f
Display all 873 possibilities? (y or n)
yamaguchi@ubu:~$ clang -isys
-isysroot       -isystem        -isystem-after  
yamaguchi@ubu:~$ clang -fno
Display all 307 possibilities? (y or n)
yamaguchi@ubu:~$ clang -fsyntax-only --v
--verbose            --verify-debug-info  --version            --via-file-asm  

これだけでも既存の補完よりは高機能なんじゃないかと思います。(clangで実際に実装されているフラグしか表示されないので)

実装はbashにしているのではなく、clangのDriverにしています。bashは引数を付けてclangを呼び出すだけです。
なぜかというと、今までbashにシェルスクリプトでハードコーディングされてたフラグの補完をを内部で動的に生成することによって将来の全てのバージョンに対応し、呼び出すだけで全てのシェルから簡単に使える機能にするためです。

来週

テストケースを書いて、パスの補完を実装して、別のところに関数を移すか決めます。これらを終わらせてreviewに投げます(宣言)

感想

すごく楽しいです。
予定では三週間くらいを想定してたのが5日で終わったので進捗は悪くはないんですが、何かが終わると他にも無限にやることが湧いてきて一向に終わる気配がないです。zshなど他のシェルに移植するのはともかく、他のclang-toolsとかgccにまで移植する事になったらどうなっちゃうんだろう・・・。生きてるかな・・・。