Show HN: Transpilatron – PythonコードをCバイナリに変換するAIツール
Transpilatronは、LLMを利用してPythonプロジェクトをCに変換し、ネイティブバイナリにコンパイルするAIツールです。実行時やインタプリタは不要で、最大58倍の高速化を実現します。
Transpilatronは、PythonコードをCに変換し、スタンドアロンのバイナリを生成する革新的なAIツールです。このツールは大規模言語モデル(LLM)をエージェントとして活用し、Pythonプロジェクト全体を解析してC言語のソースコードに変換します。その後、-O2または-O3最適化フラグを使用してコンパイルし、外部依存関係のないネイティブバイナリを出力します。
パフォーマンス面では、Transpilatronは目覚ましい結果を示しています。例えば、エラトステネスの篩(1000万までの素数検索)では、Pythonの0.526秒に対してCバイナリは0.022秒と24倍の高速化を達成。選択ソート(1万要素)では、Pythonの1.963秒がCでは0.033秒と58倍もの速度向上を記録しました。これらのベンチマークは同一ハードウェア上で実行され、出力結果も一致しています。
動作フローはシンプルです。ユーザーがPythonのエントリーファイルを指定すると、Transpilatronはすべてのインポートを追跡し、プロジェクト全体をCに変換します。その後、Makefileを生成してコンパイルし、最終的なバイナリをout/ディレクトリに配置します。サポートされる機能は多岐にわたり、HTTPリクエストはlibcurlまたはraw BSDソケット、JSON処理はcJSON、スレッド処理はpthreads、ファイルI/OはPOSIXシステムコールにマッピングされます。Webフレームワーク(Flask、FastAPI、Django)はlibmicrohttpdを介してサポートされ、深層学習フレームワーク(torch、TensorFlow)もusualモードで利用可能です(libtorch/TFLite C API経由)。
Transpilatronには2つの動作モードがあります。minimalモードは完全に静的にリンクされたバイナリを生成し、外部ライブラリを一切必要としません。これはinitramfs、スクラッチコンテナ、組み込みシステムに最適です。一方、usualモード(デフォルト)は動的リンクを許可し、より広範なライブラリをサポートするため、汎用的な用途に適しています。なお、LinuxとmacOSのみ対応で、メタクラスや過度なモンキーパッチなどの動的Pythonパターンは完全には変換できない場合があります。
既存のツール(Nuitka、PyInstaller、Cython、PyPy)と比較すると、TranspilatronはCPythonランタイムを完全に排除し、わずか数百KBの静的なバイナリを生成する点で異なります。NuitkaやPyInstallerがランタイムを含むために30MB以上のバイナリになるのに対し、Transpilatronは最小構成で1MB未満に収まります。この特性により、特に起動時間やイメージサイズが重要なCLIツール、マイクロサービス、サーバーレス、コンテナ環境での利用に適しています。
Transpilatronは元々、Pythonオンリーのオペレーティングシステム「Noodlix」のinitramfsブートスクリプトをコンパイルするために開発されました。現在は多くのPythonアプリケーションに対応しており、GitHubで公開されています。まだ初期段階のプロジェクトですが、既に実用的なベンチマークと明確なドキュメントを備えており、静的バイナリ生成に関心のある開発者にとって注目すべきツールです。