贡献
错误和功能请求
使用官方存储库来获取错误、想法和功能请求:https://github.com/Koromix/koffi
请注意,源代码不在该存储库中,而是位于 monorepo 中: https: //github.com/Koromix/rygel/(在src/koffi子目录中)。
从源代码构建
我们提供预构建的二进制文件,打包在 NPM 存档中,因此在大多数情况下它应该像npm install koffi
。如果您想深入了解 Koffi 或使用特定平台,请按照以下说明操作。
首先使用Git克隆存储库:
Windows
首先,确保满足以下依赖关系:
Visual Studio 2022 或 2019中的“使用 C++ 进行桌面开发”工作负载或构建工具中的“C++ 构建工具”工作负载,具有默认的可选组件。
Node.js 12 或更高版本
完成此操作后,从测试或基准目录运行此命令(取决于您要构建的内容)
其他
确保满足以下依赖关系:
gcc
且g++
>= 8.3 或更高版本GNU Make 3.81 或更高版本
Node.js 12 或更高版本
完成此操作后,从测试或基准目录运行此命令(取决于您要构建的内容)
运行测试
宿主机
构建 Koffi 后,您可以构建测试并使用以下命令运行它们:
在虚拟机
Koffi 使用模拟(如果可能的话加速)QEMU 机器在多种架构上进行了测试。首先,您需要安装 qemu 软件包,例如qemu-system
(甚至qemu-system-gui
在 Ubuntu 上)。
这些机器不直接包含在此存储库中(出于许可证和大小原因),但可以在此处获取它们: https://koromix.dev/files/machines/
例如,如果您想在 Debian ARM64 上运行测试,请运行以下命令:
请注意,机器磁盘内容可能会在每次机器运行时发生变化,因此一旦机器至少使用过一次,校验和测试就会失败。
现在您可以使用以下命令运行测试:
请耐心等待,这对于模拟机器来说可能会相当慢。Linux 机器具有并使用 ccache 来构建 Koffi,因此后续构建步骤将变得更加容易忍受。
默认情况下,每次测试都会启动和停止机器。但您可以提前启动机器并多次运行测试:
您还可以将测试限制在一部分机器上:
最后,如果您需要进行一些调试或任何其他手动过程,您可以使用以下快捷方式通过 SSH 加入正在运行的计算机:
每台计算机都配置为运行本地可用的 VNC 服务器,您可以使用 KRDC 或任何其他兼容的查看器来访问显示器。使用info
命令获取VNC端口。
发布
首先,您必须分三步更新代码:
package.json
更改(version 和 stable 以获得稳定版本)中的版本号添加一个条目来
CHANGELOG.md
总结自上次发布以来的更改使用消息Bump Koffi to XYZ提交这些更改
完成此操作后,您可以使用以下命令发布新版本:
有些平台是模拟的,因此可能需要几分钟时间才能准备好预构建的二进制文件。去喝杯咖啡,回来执行npm publish
命令!
代码风格
Koffi 使用 C++ 和汇编代码(特定于体系结构的代码)混合进行编程。它使用node-addon-api(C++ N-API 包装器)与Node.js 交互。
我个人更喜欢类似 C 的 C++ 风格,谨慎使用模板(主要用于容器)和少量面向对象编程。与继承和虚拟方法相比,我强烈喜欢标记联合和代码局部性。异常被禁用。
Last updated