C言語を爆速化する魔法?「CJIT」が登場!
CJIT: C, Just in Time
CJIT: C, Just in Time
C言語にJIT(Just-In-Time)コンパイルを導入する試み「CJIT」について。実行時に最適化を行うことで、さらなるパフォーマンス向上を目指す野心的なプロジェクトです。
面白そうで楽しそうだけど、これまで触ったどんなCコンパイラでも「Hello, World」の定番例で fprintf(stderr, ...) なんて使わないよ。まあ、人それぞれってことかな。
関連情報:
Show HN: CJIT, a single-binary C compiler that can self host - https://news.ycombinator.com/item?id=47751458 - 2026年4月(コメント1件)
C, Just in Time - https://news.ycombinator.com/item?id=42246209 - 2024年11月(コメント7件)
(せっかくのShow HNなのに注目されなかったのは残念。作者にメールしとくよ)
ウェブデザインにCodex 5.4を使ったの? :p Codexって似たようなデザインになりがちな気がするんだけど、完全に勘違いかもしれない。
使われているフォントのせいか、見た目が「圧縮」されてるように感じる。ちょっと落ち着かないな。ヘッダーナビのチュートリアルリンクも機能してないよ。
面白いアイデアだね。
リリースがなぜ汎用Linux向けじゃなくて明示的に cjit-x86_64-ubuntu-24.04 なのか不思議だったんだけど、やっぱりArchでは動かないみたいだ。
tcc: error: file '/lib/x86_64-linux-gnu/libgcc_s.so.1' not found
lddに出ないからdlopenの問題だろうね。
TUIのデモは最高に動くけど、SDLのサンプルは少し試してもシンボルの欠落を解消しきれなかった。
これをFil-C (https://fil-c.org/) と組み合わせれば、名実ともに本物のスクリプト言語としてのCが手に入るわけか。
Terryに触発されたのか。で、それって光る(Glow)の?
tcc -run と CJIT の違いは?
主な違いは使い勝手だよ。
CJITは現状、以下の3つの主要なUXを改善してる。
TinyCCコンパイラ本体とその全ヘッダー、標準ライブラリを組み込んだ単一の実行ファイルとして動作する。だからシステム全体に何かをインストールしたり、パスを確認したり、ビルド用フォルダを設定したりする必要がない。
1回の実行で複数のファイルを追加できる。ワイルドカードを受け付けて、Cソース、プリコンパイル済みオブジェクト、共有ライブラリなど何でも取り込める。各ファイルでエクスポートされたシンボルは、同じ実行内であればすべて参照可能になる。
ターゲットプラットフォームごとの共通システムライブラリを自動で見つけてくれるから、設定を繰り返したり正しいパスを探し回ったりする必要がない。