Skip to content
KossJSPublic

About

Embeddable JavaScript runtime with C ABI — call from any language. Node.js, Bun, Deno compatible. Zero deps, copy & run. Official Python & JS wrappers.

Topics

Resources

Stars

34 stars

Watchers

0 watching

Forks

Repository files navigation

KossJS

可嵌入的 JavaScript 运行时 — 一个轻量级、跨平台、以动态链接库(.dll / .so / .dylib)形式分发的 JS 引擎。

基于 Boa Engine(Rust 实现的 ECMAScript 引擎)构建,KossJS 对外暴露 标准 C ABI,可被 任何编程语言 调用 —— Python (ctypes)、C# (P/Invoke)、Java (FFM)、C++、TypeScript (koffi) 等。

特性

  • 通用语言互操作 — 标准 C ABI,任何支持 C FFI 的语言均可调用
  • Node.js 兼容标准库 — 29 个内置模块(fs、net、http、crypto、path、os、buffer、stream、events、dgram、dns、zlib、assert、url、util 等)
  • 双模块系统 — 同时支持 ES Module(import/export)和 CommonJS(require()/module.exports)
  • 内置 fetch() — 异步 HTTP 客户端,支持 TLS 指纹伪装
  • Web API 全局 — self/queueMicrotask/structuredClone/URL/AbortController/FormData/Request/ReadableStream 等标准 Web API 直接可用
  • N-API 兼容层 — 加载已有的 .node 原生插件
  • 原生 FFI(Senri) — 运行时动态加载和调用任意 C 函数库(仅桌面端)
  • 基于能力的沙箱 — 细粒度权限控制(FS、NET、CRYPTO、FFI、MODULE_LOAD 等 28 个能力位)
  • 内置标准库 — 所有标准库模块编译时嵌入二进制,运行时无需文件系统依赖

其他

关于商业使用的说明

本项目默认采用 GNU AGPL v3.0 + 附加权限进行许可。
该协议已经允许你在不修改源码、使用官方二进制库的前提下闭源使用,无需任何额外许可。

如果你因公司内部政策等原因,认为必须获得一份书面的商业许可,请注意:

  • 作者发布本项目时为未成年人,本项目的开发与发布已获得法定代理人的知情与同意;
  • 尽管如此,本项目目前不提供任何形式的商业许可销售;
  • 建议直接遵守 AGPL v3.0 + 附加权限,该协议已覆盖绝大多数商业使用场景;
  • 作者成年后才会发布正式可用版本,其他版本不保证是否可用。

若你通过公开信息或推算发现作者已成年而此处尚未更新,可提醒作者修改,并届时获取一份书面的商业许可。

如有疑问,可通过 B站链接 联系作者(但不保证回复时效)。

快速开始

C

#include "kossjs.h"

KossInstance *js = koss_create(); /* 默认无文件、网络或原生代码权限 */
KossResult   res = koss_eval(js, "1 + 2");

printf("%s\n", res.value); /* 3 */
koss_free_result(res);
koss_destroy(js);

Python

from kossjs_interface import KossJS

js = KossJS()
result = js.eval("'你好, ' + '世界'")
print(result)  # 你好, 世界

TypeScript(Node.js,基于 koffi)

import { KossJS } from './kossjs_interface'

const js = new KossJS()
const result = js.eval('1 + 2')
console.log(result) // 3

以上便捷构造方式默认使用 KOSS_CAP_SANDBOX。运行可信代码并确实需要宿主权限时,必须显式传入最小能力集合;不要对用户脚本或第三方插件使用 KOSS_CAP_ALL。

完整文档请参阅 KossJS 文档

构建

# 编译动态库
cargo build --release

# 运行测试
cargo test --workspace
python -m pytest test/ -v

编译产物位于 target/release/kossjs.dll(Windows)、target/release/libkossjs.so(Linux)或 target/release/libkossjs.dylib(macOS)。

支持平台

平台 架构
Windows x86_64, i686, aarch64
Linux x86_64, aarch64
macOS x86_64, aarch64
Android aarch64, armv7, x86_64
iOS aarch64(设备 + 模拟器)
HarmonyOS aarch64, x86_64

跨编译:cargo ndk(Android)、cross(Linux ARM64)、nightly Rust(HarmonyOS)。

API 概览

函数 说明
koss_create 创建 JS 实例,指定能力标志
koss_destroy 销毁 JS 实例
koss_eval 同步执行 JavaScript 代码
koss_run_async 执行 JavaScript 代码(等待 Promise)
koss_set_global_string 等 向全局作用域注入值(string/number/bool/null/undefined/json)
koss_register_function 将原生回调注册为 JS 函数
koss_register_class 注册原生类构造函数
koss_run_module 按路径加载 ES 模块
koss_register_module_loader 注册自定义模块加载器回调
koss_version 返回库版本字符串
koss_set_audit_mask / koss_check_sandbox 沙箱审核掩码与审核回调
... ...

完整的 C API 文档见 API 概览。

许可证

GNU Affero General Public License v3.0,并附带 TT23XR Studio 第7节附加权限《独立模块闭源组合例外》。

闭源例外:未经修改的官方预编译二进制库(.dll/.so/.dylib)可在注明出处的前提下链接到专有应用程序中。详见 ADDITIONAL_PERMISSIONS.md。


KossJS © 2026 TT23XR Studio

About

Embeddable JavaScript runtime with C ABI — call from any language. Node.js, Bun, Deno compatible. Zero deps, copy & run. Official Python & JS wrappers.

Topics

Resources

Stars

34 stars

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages