Maison >développement back-end >C++ >Compilation de C en Bun avec TypeScript : rapide, natif et simple

Compilation de C en Bun avec TypeScript : rapide, natif et simple

Barbara Streisand
Barbara Streisandoriginal
2025-01-25 10:04:10640parcourir

Compiling C in Bun with TypeScript: Fast, Native, and Simple

Tirer parti de FFI de BUN pour la compilation C-Fast Cast dans les projets TypeScript. Je pensais initialement que l'intégration du code C avec TypeScript serait une entreprise complexe, mais l'interface de fonction étrangère de BUN (FFI) simplifie remarquablement le processus. Voici comment réaliser les performances C natives directement dans votre code de type.

Configuration initiale: prévenir les erreurs de typeScript

Commencez par initialiser un nouveau projet avec BUN, assurant une bonne configuration de typeScript:

<code class="language-bash">bun init -y  # Skips interactive prompts</code>

Pourquoi compiler C dans TypeScript?

Cette approche vous permet d'exploiter la vitesse brute de C dans un environnement JavaScript. BUN V1.2's bun:ffi permet la compilation Cage C directe dans TypeScript, éliminant le besoin de WebAssembly ou node-gyp - résultant en une vitesse d'exécution native.

un simple "bonjour, monde!" Exemple

Créons une fonction C de base:

<code class="language-c">// hello.c
#include <stdio.h>
void hello(const char* name) {
  printf("Hello %s from C!\n", name);
}</code>

Maintenant, le code TypeScript correspondant (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>

exécuter avec:

<code class="language-bash">bun run main.ts</code>

Performances et applications du monde réel

Benchmarking révèle une vitesse impressionnante: environ 6,26 ns par appel (y compris un calefrème de chignon 2ns).

Les cas d'utilisation pratiques comprennent:

  • Interfaçage avec les API du système d'exploitation (par exemple, clés macOS, registre Windows).
  • Optimisation des tâches intensives en calcul (par exemple, calculs de nombres premiers, codage vidéo).

Considérations importantes

  • Limitations TINYCC: L'implémentation actuelle utilise TINYCC, qui n'a pas les capacités d'optimisation de GCC ou Clang.
  • Caractéristiques expérimentales: La sécurité du thread et le support de rappel asynchrone sont toujours en cours de développement.
  • Encodage de chaîne: Le codage UTF-8 est la valeur par défaut.

Guide de démarrage rapide

  1. Installer Bun:
<code class="language-bash">curl -fsSL https://bun.sh/install | bash</code>
  1. Initialiser votre projet (crucial pour l'intégration de typeScript):
<code class="language-bash">bun init -y</code>
  1. Ajoutez les fichiers hello.c et main.ts des exemples ci-dessus.

Pour d'autres tutoriels et mises à jour, suivez mon blog!

Lire plus approfondie: Documentation FFI BUN, blog Bun.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn