タイプスクリプトプロジェクト内での燃えるようなCコンピレーションのために、BunのFFIを活用します。 私は当初、CコードをTypeScriptと統合することは複雑な取り組みになると信じていましたが、Bunの外部関数インターフェイス(FFI)はプロセスを著しく簡素化します。 タイプスクリプトコードでネイティブCのパフォーマンスを直接実現する方法は次のとおりです。 初期セットアップ:タイプスクリプトエラーの防止
BUNで新しいプロジェクトを初期化し、適切なタイプスクリプトのセットアップを確保することから始めます。
なぜ型にcをコンパイルしますか?<code class="language-bash">bun init -y # Skips interactive prompts</code>
このアプローチを使用すると、JavaScript環境内のCの生の速度を活用できます。 BUN v1.2のは、直接cコンパイルをタイプスクリプトに有効にし、WebAssemblyの必要性を排除するか、
- ネイティブの実行速度になります。bun:ffi
単純な「こんにちは、世界!」例node-gyp
基本的なc関数を作成しましょう:
さて、対応するタイプスクリプトコード():
<code class="language-c">// hello.c #include <stdio.h> void hello(const char* name) { printf("Hello %s from C!\n", name); }</code>
with:main.ts
を実行します
<code class="language-typescript">import { cc } from "bun:ffi"; const { symbols: { hello } } = cc({ source: "./hello.c", symbols: { hello: { args: ["cstring"], returns: "void" } } as const, }); const name = "World"; const cString = Buffer.from(name); hello(cString); // Output: "Hello World from C!"</code>
パフォーマンスと現実世界のアプリケーション
<code class="language-bash">bun run main.ts</code>
ベンチマークは印象的な速度を明らかにします:通話ごとに約6.26ns(2NSパンのオーバーヘッドを含む)。 実際のユースケースには以下が含まれます オペレーティングシステムAPIとのインターフェース(たとえば、MacOSキーチェーン、Windowsレジストリ)。
計算的に集中的なタスクを最適化する(例:プライムナンバーの計算、ビデオエンコーディング)。
重要な考慮事項
実験的機能:スレッドの安全性と非同期コールバックサポートはまだ開発中です。
文字列エンコーディング:
<code class="language-bash">curl -fsSL https://bun.sh/install | bash</code>
<code class="language-bash">bun init -y</code>
以上がTypeScript を使用した Bun での C のコンパイル: 高速、ネイティブ、シンプルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。