KossJS 项目介绍
一、项目概述
KossJS 是一款高性能、跨平台、嵌入式 JavaScript 运行时引擎,由 TT23XR Studio 开发,采用 GNU AGPL v3.0 协议开源(官方允许直接使用动态链接库的闭源项目无需遵循 AGPL,详见授权说明)。它基于 Rust 与 Boa 引擎构建,旨在为各类应用程序提供轻量、安全、可嵌入的 JS 执行能力,让开发者无需从头实现脚本引擎,即可快速集成现代化的 JavaScript 运行环境,并原生支持 Worker 线程并行、双向消息通信、Fetch API 以及 40+ Node.js 标准库模块。
二、核心特性
1. 标准化 C ABI
通过标准 C 应用程序二进制接口暴露功能,支持 Python、C/C++、C#/.NET、Java/Kotlin 等多种语言直接调用。官方提供开箱即用的接口封装(如 kossjs_interface.py),无需处理复杂的 FFI 细节。
2. 轻量嵌入式设计
- 低内存占用:运行时约 10–15 MB,适合资源受限场景。
- 零 GC 停顿:Rust 实现无 GC 设计,无垃圾回收暂停,满足实时应用需求。
- 完全隔离的实例:每个
KossInstance独立运行,可快速创建/销毁。
3. Worker 线程与双向通信(全新)
KossJS 内置 Worker 线程池,支持多线程并行执行 JS 代码,并提供跨线程消息传递,实现简单的双向通信:
createworkerpool(size):创建指定数量的工作线程。workerexecute(workerid, code):在指定 worker 上执行 JS 代码。workerpostmessage(worker_id, data):向 worker 发送 JSON 消息。workertryrecv():非阻塞接收来自任意 worker 的消息。workerterminate(workerid)/worker_shutdown():终止单个或全部 worker。
4. 内置 Fetch API
原生支持 HTTP/HTTPS 请求,无需额外依赖:
- TLS 指纹伪装:模拟 Chrome 的 TLS/JA3/HTTP2 指纹,绕过反爬机制。
- 完整的请求/响应:支持自定义 Headers、请求体、异步
fetch、response.json()等标准 API。
5. Node.js 兼容性
内置 40+ 个 Node.js 标准库模块,包括 fs、http、https、crypto、path、os、stream、zlib 等,可直接在 JS 代码中 require() 使用,无需额外打包或模拟。
6. ES Modules 支持
原生支持 import / export 语法,支持异步模块加载和标准模块解析。
7. 跨平台覆盖
编译为平台原生动态库,支持 Windows、Linux、macOS、Android、HarmonyOS、iOS,并提供 x64、ARM64、ARMv7 架构。
三、技术架构
您的应用程序 (Python/C++/C#/Java)
↓
kossjs_interface.py(接口封装)
↓
C ABI 接口(标准调用约定)
↓
KossJS 核心引擎(Rust 动态库)
↓
Boa JS 引擎 + 异步运行时 + Worker 线程池 + 网络层
四、适用场景
- 桌面应用:脚本插件系统、自动化任务、用户宏。
- 游戏开发:游戏内脚本引擎(Godot、Unity 均可集成),热更新逻辑。
- 后端服务:用户代码沙箱、动态规则引擎、配置热加载。
- 移动应用:Android/HarmonyOS App 中动态执行 JS,实现插件化功能。
五、性能对比
| 特性 | KossJS | QuickJS | Duktape |
|---|---|---|---|
| 核心语言 | Rust | C | C |
| 内存占用 | ~10-15 MB | ~200 KB | ~200 KB |
| GC 停顿 | 无 | 有(引用计数) | 有 |
| 并发支持 | 多 Worker 线程 | 单线程 | 单线程 |
| ES Modules | ✅ | ❌ | ❌ |
| 内置 Fetch | ✅ | ❌ | ❌ |
| Node.js 模块 | 40+ | 无 | 无 |
注:KossJS 内存占用较高,但提供了更完整的现代 JS 特性集、网络能力和并行执行支持。
六、快速上手(Python 示例)
from kossjs_interface import KossJS
with KossJS() as koss:
# 基础执行
print(koss.eval("1 + 2")) # 3
# 设置全局变量
koss.set_global("name", "KossJS")
print(koss.eval("name")) # KossJS
# 使用 Fetch API
koss.run_async('''
fetch("https://api.github.com/users/github")
.then(r => r.json())
.then(d => console.log(d.login))
''', timeout_ms=5000)
# Worker 并行与通信
koss.createworkerpool(2)
koss.worker_execute(0, "self.postMessage('Hello from worker')")
msg = koss.workertryrecv()
print(msg) # Hello from worker
七、开源协议与未来计划
- 开源协议:GNU AGPL v3.0,但官方赦免动态库的直接使用者(闭源项目可随意调用,无需开源)。
- 版本管理:严格遵循语义化版本 2.0.0,支持
dev / internal / alpha / beta / rc预发布阶段。 - 未来方向:持续增加 Node.js 模块兼容性、优化内存占用、完善调试工具和 Worker 消息模式。
总结
KossJS 是一个为嵌入而生的现代 JavaScript 运行时。它结合了 Rust 的高性能与内存安全、Node.js 的模块生态、Fetch API 的便捷网络能力、Worker 线程的并行通信,以及全平台的动态库封装。无论您是在桌面应用、游戏、后端还是移动端需要执行 JS 代码,KossJS 都能提供专业级、易集成、可商用(含赦免条款)的解决方案。
项目官网、文档、GitHub 地址请参考文档页脚链接。
评论 (1)