ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

scriptc平台支持矩阵全解析:macOS、Linux、Windows、iOS、Android与WASI指南

scriptc平台支持矩阵全解析:macOS、Linux、Windows、iOS、Android与WASI指南 scriptc平台支持矩阵全解析macOS、Linux、Windows、iOS、Android与WASI指南【免费下载链接】scriptcTypeScript-to-Native Compiler项目地址: https://gitcode.com/GitHub_Trending/sc/scriptcscriptc 是一个 TypeScript-to-Native 编译器能把 TypeScript/JavaScript 直接编译成原生可执行文件、静态库和 WebAssembly 模块编译产物无需 Node.js 即可运行。本文将完整解析scriptc 平台支持矩阵macOS、Linux、Windows 三大桌面/服务器平台如何作为宿主编译iOS 与 Android 如何通过库模式接入 App以及 WASIWebAssembly目标的能力边界帮助你在 10 分钟内搞清每个平台能编译什么、需要什么工具链。一、scriptc 是什么为什么需要平台支持矩阵一句话概括你写普通的 TypeScriptscriptc 把它变成不依赖 Node 的原生二进制——启动更快、部署更简单产物里没有 JS 引擎只有一小段内置的 C 运行时源码位于 packages/runtime/src。理解平台矩阵的关键是先理解 scriptc 的两条编译路线路线产物适用平台特点可执行模式独立可执行文件 / .wasm 模块macOS、Linux、Windows、WASI完整语言层级async/await、Promise、定时器、stdin 事件等库模式--lib静态库归档.a / 静态 archiveiOS、Android供宿主 App 链接移动端App 本身就是可执行文件所有平台的底层能力清单可以对照官方文档 docs/src/app/platforms/page.mdx 查看快速上手请看 docs/src/app/quickstart/page.mdx。二、总览scriptc 平台支持矩阵一览表平台编译方式支持状态macOS arm64 / x64原生宿主 helper 运行时包全功能面支持--dynamic与 sanitizer 路线Linux arm64 / x86_64原生 helper 运行时包musl 目标通过SCRIPTC_TARGET指定静态 动态面服务器、TLS、fetch、fs.watch、child_process链接可执行文件需匹配的 libc/sysrootWindows x86_64原生 x64 MSVC helper 运行时包静态 动态面服务器、TLS、fetch、child_process链接需 Windows SDK/MSVC CRTiOS arm64真机 模拟器zig 交叉编译SCRIPTC_CCzigcc需 macOS 主机 Xcode仅库模式产出静态归档最低 iOS 15.0Android arm64zig 交叉编译 NDK任意主机仅库模式产出静态归档最低 API Level 26WebAssembly / WASI Preview 1zig 交叉编译SCRIPTC_TARGETwasm32-wasi生产级 LLVM 目标完整语言层级受 WASI P1 宿主能力约束 规律总结桌面平台做可执行文件移动平台做静态库WASI 做可移植模块。三、macOS首选宿主平台体验最完整macOS 是 scriptc 的主要开发平台arm64 与 x64 均受支持安装要求Node.js ≥ 24可执行文件构建需要 clangXcode Command Line Tools 自带。无需编译 C在 macOS 15 arm64 上普通可执行文件构建使用 scriptc 自带的 helper 与预编译运行时包clang 只充当链接器驱动不会去编译你程序或运行时的 C 代码。产物细节汇编/对象产物标注arm64-apple-macosx14.0.0部署目标sanitizer 构建走外部 C 路线。npm 包支持--dynamic会把依赖的 JS 嵌入二进制运行时不读node_modules。macOS 上的调试也很方便--optimizationdev构建支持源码断点与原生堆栈帧调试符号存放在相邻的.dSYM包中详见 docs/src/app/limitations/page.mdx 的Native debugging一节。四、Linuxglibc 与 musl 全覆盖服务器场景友好Linux 是另一个一等公民平台x86_64 与 arm64 都支持且分两种 libcglibc 目标默认路线链接可执行文件需匹配的 glibc/sysroot。musl 目标Alpine 容器友好设置SCRIPTC_TARGETarch-linux-musl后zig 会产出静态链接的可执行文件非常适合极简容器部署。运行时有完整的 Linux 原生后端事件循环用epoll、服务器栈、TLS含发行版 CA bundle 探测、fs.watch都有 Linux 实现并通过容器化差分测试对照 Linux Node 逐字节验证。交叉编译示例在 macOS 上构建 Linux 二进制SCRIPTC_CCzigcc SCRIPTC_TARGETx86_64-linux-gnu.2.36 scriptc build fib.ts -o fib-linux # 产物ELF 64-bit x86-64 可执行文件五、Windowsx86_64 MSVC 路线含 GUI 子系统选项Windows x86_64 受支持使用原生 MSVC helper 运行时包静态与动态面均可用网络服务器、TLS、原生fetch含重定向、流式响应、压缩、代理、child_process等。GUI 应用技巧默认构建使用控制台子系统如果你的程序自己创建窗口加--windows-subsystemgui可避免弹出多余的黑色控制台窗口。交叉编译从 macOS 构建SCRIPTC_CCzigcc SCRIPTC_TARGETx86_64-windows-gnu scriptc build fib.ts -o fib.exe # 产物PE32 executable (console) x86-64Windows 测试通道会跑完整测试语料包括真实的回环网络流量net、http、https、tls、http2、dgram、dns。六、iOS 与 Android库模式为 App 而生⚠️ 这是新手最容易误解的部分移动端不做可执行文件。移动 App 本身就是可执行体所以 scriptc 为 iOS/Android 提供的是库模式静态归档由你的 App 项目链接。直接scriptc build不加--lib会得到SC3002诊断——这是设计使然不是故障。目标三元组产物环境要求aarch64-apple-iosiOS 真机归档Mach-O arm64最低 iOS 15.0macOS 主机 Xcode iPhoneOS SDKaarch64-apple-ios-simulatoriOS 模拟器归档Mach-O arm64最低 iOS 15.0macOS 主机 Xcode iPhoneSimulator SDKaarch64-linux-androidAndroid 归档ELF arm64最低 API 26任意主机 Android NDK库模式的完整能力可用profile 声明的导出与 ABI 入口点、宿主回调通道、多实例归档abi.localize_runtime、线程实例化状态abi.instance_per_thread。模拟器/仿真器上还有真实执行的测试矩阵真机架构的归档经过构建与链接验证。# iOSmacOS 主机 SCRIPTC_CCzigcc SCRIPTC_TARGETaarch64-apple-ios scriptc build --lib --profile app.profile.json # Android任意主机 NDK SCRIPTC_CCzigcc SCRIPTC_TARGETaarch64-linux-android scriptc build --lib --profile app.profile.json七、WASIWebAssembly可移植性最强的目标设置SCRIPTC_CCzigcc与SCRIPTC_TARGETwasm32-wasi即可产出独立的.wasm模块可运行在任意WASI Preview 1 宿主中不止 NodeSCRIPTC_CCzigcc SCRIPTC_TARGETwasm32-wasi scriptc run hello.ts # hello, world —— 由 Node 的 WASI 实现托管执行语言层级完整async/await、Promise、生成器、定时器、stdin/readline 事件、文件系统的回调与 Promise、--dynamicQuickJS 岛屿全部可用。边界是宿主能力不是语言能力WASI Preview 1 没有可移植的 socket、进程派生、OS 信号、网络接口、文件系统通知 API所以 networking/fetch、子进程、信号 API、fs.watch会在链接前以SC3002明确报错。scriptc run执行 .wasm 时会继承 stdio 与环境变量把当前工作目录预打开为/并把宿主临时目录映射到/tmp。八、交叉编译怎么配两个环境变量就够所有交叉目标Linux、Windows、iOS、Android、WASI都通过 zig 完成只需设置两个环境变量环境变量作用SCRIPTC_CCzigcc使用 zig 内置的 clang 作为 C 编译器SCRIPTC_TARGETtriple指定目标三元组GNU/Linux 目标需带 glibc 版本号需要先在PATH中安装zig。注意--sanitize是宿主构建路线交叉目标不可用移动端仅支持库模式可接受的语言面无 async 的静态层级。九、常见限制选平台前先读这里 来自 docs/src/app/limitations/page.mdx--sanitize、原生 FFI、--lib归档WASI 均不可用移动端仅库模式单独的可执行构建会以SC3002拒绝iOS 只能在 macOS 主机上构建Apple SDK sysroot 限制Android 可在任意有 NDK 的主机构建WASI 文件系统访问受宿主 preopens 约束进程/OS 自省遵循 WASI 的精简模型编译产物不内嵌 N-API/V8 插件运行时原生插件请走 docs/src/app/ffi/page.mdx 描述的 C ABI FFI 路线。十、资源索引关键文件路径内容路径平台支持文档本文依据docs/src/app/platforms/page.mdx快速上手docs/src/app/quickstart/page.mdx限制与差异说明docs/src/app/limitations/page.mdx原生运行时 C 源码packages/runtime/srcNode API 兼容基线v24.15.0internal/compatibility/node-v24.json静态支持策略矩阵internal/compatibility/static-support.json原生对象消费示例examples/native-object结语scriptc 的平台矩阵设计逻辑非常清晰——桌面三平台追求零依赖可执行文件移动端以静态库嵌入 App的方式参与WASI 提供最强的跨宿主可移植性。无论你是部署 CLI 工具、API 服务器还是移动 App 内的 TypeScript 逻辑都能在上面找到对应路线。下一步建议先在你的宿主机上跑一遍scriptc coverage用带编码的诊断报告确认你的程序能静态编译到什么程度。【免费下载链接】scriptcTypeScript-to-Native Compiler项目地址: https://gitcode.com/GitHub_Trending/sc/scriptc创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表