#quickjs #android #javascript-engine #bindings #suitable #platform #consistency

sys quickjs_android_suitable_sys

QuickJS JavaScript 引擎 FFI 绑定,适用于 Android 使用

18 个版本

0.20220306.3 2023 年 8 月 8 日
0.20220306.2 2023 年 6 月 22 日
0.20220306.0 2023 年 1 月 21 日
0.20201108.12 2021 年 6 月 6 日
0.1.0 2020 年 8 月 11 日

Web 编程 中排名 1429

Download history 1/week @ 2024-03-27 6/week @ 2024-04-03

每月下载量 59

MIT 许可证

3MB
84K SLoC

C 73K SLoC // 0.0% comments JavaScript 7.5K SLoC // 0.0% comments Rust 3K SLoC // 0.0% comments Bitbake 483 SLoC // 0.1% comments Shell 108 SLoC // 0.1% comments

quickjs-android-suitable-sys

quickjs 提供的 FFI 绑定。虽然有很多选择,但我创建了这个版本,因为它是从 libquickjs-sys 分支出来的,因为它在 i686 Android 上不能正常工作。

是什么?

当为 Android 模拟器构建时,使用的是 i686 工具链,现在其他情况也很少使用。结果是 bindgen 默认不识别编译目标,并且由于某种原因,为 64 位操作系统生成的代码会在 i686 Android(以及可能的其他操作系统)上崩溃。此 crate 在构建库时重建绑定,确保平台一致性。

此更改破坏了与使用 libquickjs-sys 的高级库的兼容性,因此我创建了一个新的分支。一些必需的函数(例如 JS_NewBool)直接内联在头文件中,而不是在 .c 文件中,因此 C 编译器不会包含它们。为此,我创建了 quickjs+extern.c 来正确公开这些函数。

额外功能

  • 大数

    启用此功能可向 QuickJS 添加大数支持

  • 转储泄漏

    在释放 JavaScript 引擎时,转储仍然被持有的变量。对于调试内存泄漏很有用。

发布

在运行 cargo publish 之前,请运行 cargo script scripts/generate-bindings.rs。我确信有更好的方法来做这件事。

没有运行时依赖

~0–2MB
~37K SLoC