読者です 読者をやめる 読者になる 読者になる

テストステ論

高テス協会会長が, テストステロンに関する情報をお届けします.

(macro-of-inline) v0.9をリリースしました

Erlang VMの解説のように有用な記事が書けなくてごめんなさい!!!

土曜日一日と日曜日のAMが消し飛んだ. もうやらん.


以下本文

akiradeveloper/macro-of-inline · GitHub

macro-of-inlineは, ファイル内にあるinline関数を等価なマクロに変形するプログラムです. pycparserというASTいじりライブラリを使っています. non-voidな値を返す関数は変形が少し難しいので今のところサポートしていませんが, 将来的にはサポート出来るはずです(ただし, ただ動くというだけであり, 性能は, returnで返す時より悪くなる可能性があります).

マクロを吐き出すためのASTノードを追加する必要があったので, そのパッチを送ったのですが, 深夜にあったレスでrejectされました. Add Any node by akiradeveloper · Pull Request #43 · eliben/pycparser · GitHub ただし, subclassingで対応すればいけそうというアイデアをもらったので, これを試したら, 私の欲しいものと完全に一致はしないけど, 妥当な範囲で出来ました. コードレベルが分かる凄腕プログラマにアイデアをもらえるというのは, OSSの魅力だと思います. pycparserの開発者は, Pythonのコア開発者ですし, LLVMなどにも深く貢献しています. 間違いなく凄腕です.

macro-of-inlineは, pypiにも登録してあるので, pip installすることも出来ますが, 常にオススメなのは, 最新のコードからsetup.pyでインストールすることです.

今後は, 以下が仕事になると思う.

  • cpp -Eを通さずとも動作するモードを追加する. プリプロセッサを通さないといけないというのは少し使い勝手が悪い. ビルドスクリプトが複雑になるのはよくない. ファイルに対して直に正規表現で置換していく実装にするので, 誤りが起こる可能性があるがほとんどのケースではOKというところまでは持って行きたい.
  • macro-of-inlineを実コードで使って, 正しく動作することを検証する. 使ってみた系のレポートは大いに歓迎.
  • 当然, non-void返しの実装. 誰か天才さんやってください!!!
  • 回帰テストをまともに作る.
  • pycparserのコミュニティで広める. コードレベルでチェックしてもらって改善する.
  • C言語のコミュニティでも広めたい. 有用だ!という人がいるかも知れない.

なお, 本ツールの公開に当たっては以下の約束2に則って行いました.

オープンソース・ソフトウェア(OSS)に関しての約束 | VA Linux Systems Japan株式会社

従業員の技術や知識の向上が期待できる以上

期待通りです.