Nutzung von Bun's FFI für die Blazing-schnelle C-Kompilierung innerhalb von TypeScript-Projekten. Ich war zunächst der Ansicht, dass die Integration von C -Code in TypeScript ein komplexes Unternehmen wäre, aber die Fremdfunction Interface (FFI) von Bun vereinfacht den Prozess bemerkenswert. Hier erfahren
Erstes Einrichten: Verhindern von Typscript -Fehlern
Beginnen Sie mit der Initialisierung eines neuen Projekts mit Bun und stellen Sie sicher
<code class="language-bash">bun init -y # Skips interactive prompts</code>
Mit diesem Ansatz können Sie die rohe Geschwindigkeit von C in einer JavaScript -Umgebung nutzen. Bun v1.2s
ermöglicht die direkte C -Kompilierung in TypeScript, wodurch die Notwendigkeit einer WebAssembly oder entfällt, was zu einer nativen Ausführungsgeschwindigkeit führt. bun:ffi
node-gyp
Erstellen wir eine grundlegende C -Funktion:
Nun der entsprechende TypeScript -Code (
<code class="language-c">// hello.c #include <stdio.h> void hello(const char* name) { printf("Hello %s from C!\n", name); }</code>
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>
Benchmarking zeigt eine beeindruckende Geschwindigkeit: ungefähr 6,26 Ns pro Anruf (einschließlich eines 2NS -Brötchen -Overhead).
Praktische Anwendungsfälle umfassen:
Vernetzung mit Betriebssystem -APIs (z. B. MacOS Keychain, Windows Registry).
Brötchen installieren:
<code class="language-bash">curl -fsSL https://bun.sh/install | bash</code>
<code class="language-bash">bun init -y</code>
hello.c
main.ts
Weitere Lesen:
Bun ffi Dokumentation, Bun Blog.
Das obige ist der detaillierte Inhalt vonC in Bun mit TypeScript kompilieren: Schnell, nativ und einfach. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!