首页 >后端开发 >C++ >用打字稿在面包中编译C:快速,本地和简单

用打字稿在面包中编译C:快速,本地和简单

Barbara Streisand
Barbara Streisand原创
2025-01-25 10:04:10640浏览

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

利用 Bun 的 FFI 在 TypeScript 项目中实现超快的 C 编译。 我最初认为将 C 代码与 TypeScript 集成将是一项复杂的任务,但 Bun 的外部函数接口 (FFI) 显着简化了该过程。 以下是如何直接在 TypeScript 代码中实现本机 C 性能。

初始设置:防止 TypeScript 错误

首先使用 Bun 初始化一个新项目,确保正确的 TypeScript 设置:

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

为什么要在 TypeScript 中编译 C?

这种方法允许您在 JavaScript 环境中利用 C 的原始速度。 Bun v1.2 的 bun:ffi 可以直接将 C 编译为 TypeScript,从而无需 WebAssembly 或 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>

现在,相应的 TypeScript 代码 (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 Bun 开销)。

实际用例包括:

  • 与操作系统 API 接口(例如 macOS 钥匙串、Windows 注册表)。
  • 优化计算密集型任务(例如素数计算、视频编码)。

重要注意事项

  • TinyCC 局限性:当前实现使用 TinyCC,缺乏 GCC 或 Clang 的优化功能。
  • 实验功能:线程安全和异步回调支持仍在开发中。
  • 字符串编码: 默认编码为 UTF-8。

快速入门指南

  1. 安装包子:
<code class="language-bash">curl -fsSL https://bun.sh/install | bash</code>
  1. 初始化您的项目(对于 TypeScript 集成至关重要):
<code class="language-bash">bun init -y</code>
  1. 添加上面示例中的 hello.cmain.ts 文件。

有关更多教程和更新,请关注我的博客!

进一步阅读:Bun FFI 文档、Bun 博客。

以上是用打字稿在面包中编译C:快速,本地和简单的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn