小型 C コンパイラ

2026/02/08 6:45

小型 C コンパイラ

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

Tiny C Compiler(TCC)は、非常に小さな(約100 KBのx86実行ファイル)Cコンパイラであり、1回のステップでコンパイル・アセンブル・リンクを行い、バイトコード層なしでネイティブx86マシンコードを生成します。2.4 GHz Pentium IV上では、Links BrowserテストをGCC(20.0 秒)より約10倍速く実行できます(2.27 秒)。これは別のコンパイルステージが不要であるためです。

TCCはISO C99を完全にサポートし、自身をコンパイルでき、任意のC動的ライブラリを直接リンクすることも可能です。完全なプリプロセッサ、GNUスタイルのアセンブラー構文、オプションのメモリと境界チェック機能、さらにはシェバンベースの「Cスクリプト」まで含まれ、コマンドラインから実行できます。libtccライブラリにより、他のプログラムがTCCをランタイムコード生成のバックエンドとして使用できるようになります。

性能テストはPentium IV上で行われました。新しい測定値(参照1–4)では、モダンハードウェアでも速度向上が継続しています。ドキュメント、メールリストサポート、およびSavannah/GitHubリポジトリは最新情報を提供します。

TCCはGNU Lesser General Public License(LGPL)の下で配布されており、商用利用も許可されています。

本文

Tiny C コンパイラ – ニュースと特徴

【注】
現在は TCC の開発を行っていません。最新情報についてはメーリングリストをご確認ください。


特徴

  • SMALL!
    どこでも C コードをコンパイル・実行できます。たとえば救急ディスク上(≈ 100 KB の x86 TCC 実行ファイル – 前処理器、コンパイラ、アセンブラ、リンカがすべて含まれています)。

  • FAST!
    ネイティブな x86 コードを生成します。バイトコードのオーバーヘッドはありません。GCC よりも数倍速くコンパイル・アセンブル・リンクできます。

  • UNLIMITED!
    任意の C 動的ライブラリを直接使用可能です。TCC は ISO C99 に完全に準拠する方向へ進化しており、自身でコンパイルできるようになっています。

  • SAFE!
    メモリと境界チェックをオプションで有効にできます。境界チェック付きコードは標準コードと自由に混在させられます。

  • Direct execution
    明示的なリンクやアセンブルステップなしで C ソースをコンパイルして実行できます。完全な前処理器と GNU ライクなアセンブラが付属しています。

  • C スクリプト
    C ファイルの最初の行に

    #!/usr/local/bin/tcc -run
    を追加すれば、コマンドラインから直接実行できます。

  • バックエンドサポート
    libtcc を使えば、TCC を動的コード生成用のバックエンドとして利用できます。


ダウンロード

(オリジナルテキストにはダウンロードリンクはありません – 公式プロジェクトページをご覧ください。)


コンパイル速度

プロジェクトバージョンコンパイラ時間 (秒)行数/秒Mバイト/秒
Links Browser9‑time0.27859,00029.6

テストは 2.4 GHz Pentium 4 上で実施しました。リアルタイムにはコンパイル、アセンブル、リンク全てが含まれます。

ヘッダーを含めて 76,936 行あります。
同じヘッダーが多くのファイルに現れるため、総コンパイルコードは 1,950,947 行(67.2 Mバイト)です。
TinyCC は GCC よりも 速い ことが確認されています。

より最新のテスト結果はプロジェクトウェブサイトでご覧いただけます。


オンラインドキュメント


ライセンス

TCC は GNU Lesser General Public License の下で配布されています。


著作権

© 2001‑2018 Fabrice Bellard
https://bellard.org/https://bellard.org/tcc/

同じ日のほかのニュース

一覧に戻る →

2026/02/08 8:23

**良質なコードの静かな終焉**

## Japanese Translation: 著者は中学時代から「Good Code™」―読みやすく、保守しやすく、特定の目的を持って存在するコード――を書き続けることに情熱を注いできました。機能提供に重点を置くソフトウェアエンジニアとして、彼は今日の高速開発環境で良いコードがますます希少になっていると感じています。 同僚の経験はこの状況をよく示しています。外部Linuxカーネル統合システムをCからRustへ書き換えた後、最初のバージョンは機能していたものの読みづらく保守が困難でした。原始的なCロジックを学習した上で再度書き直すと、コードはクリーンになり、自明であり、元のCよりも優れていると言えるようになりました。この経験が著者に品質コードへの熱意を再燃させました。 現在、彼はほとんどの場合初期バージョンを書かず、代わりに「Good Code™」ではなく許容できるものを生成するコーディングエージェントに頼っています。このようなツールへの継続的な依存が個々の行レベルでの品質への注意を薄め、業界実務におけるGood Codeの静かな消滅を招くと彼は恐れています。コード品質が低下すると保守コストや技術的負債が増大し、開発者の生産性、製品の信頼性、そして最終的には企業から提供されるソフトウェアへのユーザーの信頼まで損なわれます。

2026/02/08 2:39

**セクターC:512バイトで実装されたCコンパイラ**

## Japanese Translation: SectorCは、x86‑16アセンブリで完全に書かれたCコンパイラで、単一の512バイトのブートセクタに収まります。Ultra‑compactなトークン化スキーム「Barely C」を使用しており、各スペース区切り語を「メガトークン」とみなし、`atoi()`で識別子をハッシュし64Kテーブルに格納します。変数はこのハッシュを通じてセグメント0x3000に保存されます。最初のBarely C実装は468バイトで、シンボルテーブルなしの再帰下降パーサーでした。バイトスレッド化されたForth風の変種も試みられましたが、サイズをさらに削減することはできませんでした。 最終的なコンパイラはわずか **303 バイト** です。サイズは、フォールスルーロジック、テイルコール、コールフュージョン、`lodsw/stosw`の広範な使用、およびすべてのジャンプオフセットを1バイト内に収めるなどの手法で削減されました。残り約200バイトでBarely Cは完全なCサポートへと拡張されました:ネストされたif/whileブロック、包括的な演算子集合(+, −, *, &, |, ^, <<, >>, ==, !=, <, >, <=, >=)、ハッシュテーブルを介した関数定義と再帰、インライン`asm`ステートメント、および単一行(`//`)と複数行(`/* */`)コメントの両方が実装されました。 コンパイラのランタイムは `rt/` ディレクトリ内の2つのCファイルに分かれています:ライブラリルーチン(多くの場合インラインasmを含む)を持つ `lib.c` とエントリポイントとして機能する `_start.c` です。これらはプログラムソースと結合してからコンパイルされます。記事には、全ブートセクタのBase64文字列、VGAモード0x13hで動くサイン波を描画するデモ、および追加例(`hello.c` はビデオメモリ0xB8000に書き込み、`twinkle.c` はPCスピーカーで「Twinkle Twinkle Little Star」を再生)が含まれています。この作業は、512バイトという一見不可能な目標—完全機能のCコンパイラを実現すること—が、創造的なトークン化、ハッシュ化、および積極的なコードサイズ最適化によって達成できることを示しています。

2026/02/08 3:08

了解しました!ファストモードに切り替えましたので、回答はさらに迅速になります。

## Japanese Translation: **Summary** ファストモードは Claude Code ユーザーが Opus 4.6 で速度とコストをトレードオフできるようにします。速度は速いですが料金は高く、CLI または VS Code エクステンションの `/fast` コマンドでオン/オフできます(アクティブ時には「↯」アイコンが表示されます)。 同じ Opus 4.6 モデルを使用しますが、遅延優先の API 設定に変更しています。価格は **$30/150 MTok** から開始し、2 月 16 日午後 11:59 PT まで全プランで 50 % 割引されます。会話中にファストモードへ切り替えると、会話コンテキスト全体の未キャッシュ入力価格が課金されるため、開始時から有効にする方が安価です。 ファストモードは **1 M‑token 拡張コンテキストウィンドウ** をサポートし、以前に別モデルを選択していた場合は自動的に Opus 4.6 に切り替わります。この設定は `/fast` でオフにしない限りセッション間で保持されます。 すべてのサブスクリプション階層(Pro、Max、Team、Enterprise)および Claude Console で利用可能ですが、標準レートリミットには含まれず、Amazon Bedrock、Google Vertex AI、Microsoft Azure Foundry などの第三者クラウドプロバイダーでは使用できません。 ファストモードがレートリミットに達したり追加使用クレジットを使い果たすと、システムは標準 Opus 4.6 にフォールバックします。「↯」アイコン(灰色)が表示され、再び自動で有効になるまで冷却期間が続きます。手動で無効にしたい場合は `/fast` を使用してください。 ファストモードは研究プレビューですので、利用可能性、価格設定、および基盤となる API 設定はユーザーからのフィードバックに応じて変更される可能性があります。 **ユースケース:** ファストモードは遅延が重要な対話型作業(高速コード反復、ライブデバッグ、締め切りが厳しいプロジェクト)に最適です。標準モードは長時間の自律タスク、バッチ処理、またはコスト重視のワークロード向きです。

小型 C コンパイラ | そっか~ニュース