ソフトウェア

cpas (Cpp as a script)

TCC(Tiny C Compiler)みたいに、C++でスクリプトが書けたら嬉しいと思いませんか? 何十ギガバイトものデータを処理する Perl スクリプトを書いていたらいい加減に C/C++ の速さが恋しくなってきたので C++を擬似的にスクリプト化するソフトを書きました。

といってもやってることは単純で、一行目に #!/usr/bin/cpas みたいに書くと、2行目以降を g++ でこっそりコンパイルして それを実行するという、ただそれだけのソフトです。一応実行ファイルはキャッシュするので2回目以降の起動は速いですし、 スクリプト自体を書き換えたら自動で再コンパイルされます。

コメントにコンパイルオプションを埋め込んでおけます。makefile要らない。

書き換えた瞬間のスクリプトを複数同時に呼んだりするとコンパイラが2つ以上走って問題が起きたりするんですが、 flock とか呼ぶとディスクがリモート(NFSとか)のときに死ぬほど遅くなっちゃうので、そこはチェックしないことにしています。

perldoc みたいに C++ のスクリプト内にドキュメントが書けたら嬉しいよねー、ということで cppdoc を付けました。動作には perl, perldoc が必要。

perlfunc みたいに C++ の標準ライブラリとか参照できたらいいよね、ということで cppdoc にそんな機能付けました。裏でテキストブラウザ呼んでるのでネット接続必要。

perl/python/ruby みたいに SEGV でスタックトレース表示できたらいいよね、ということで SEGV したら自動で gdb をアタッチしてスタックトレース表示してみた。

perl みたいに eval 使えるといいよね、ということで無理矢理 eval も実装してみた。動的にコンパイルして動的リンクしてるので基本なんでもできます。

入手方法

GitHub からどうぞ。

git clone git://github.com/mkasa/cpas.git

git が入ってないとかで面倒な人はこちらから tar+bzip2 アーカイブをどうぞ。

waf 使ってるので ./waf configure && ./waf build && ./waf install でインストールできます。