koffi中文
  • KOFFI
  • koffi性能
  • 中文更新日志
  • 安装需求
  • 开始使用
  • 函数调用
  • 输入参数
  • 数据指针
  • 输出参数
  • 多态参数
  • Union数据
  • 导出的变量
  • JAVASCRIPT 回调
  • 杂项
  • 构建工具和koffi
  • 贡献
  • 变更日志
  • 迁移指南
Powered by GitBook
On this page
  • 错误和功能请求
  • 从源代码构建
  • Windows
  • 其他
  • 运行测试
  • 宿主机
  • 在虚拟机
  • 发布
  • 代码风格

贡献

Previous构建工具和koffiNext变更日志

Last updated 1 year ago

错误和功能请求

使用官方存储库来获取错误、想法和功能请求:

请注意,源代码不在该存储库中,而是位于 monorepo 中: (在src/koffi子目录中)。

从源代码构建

我们提供预构建的二进制文件,打包在 NPM 存档中,因此在大多数情况下它应该像npm install koffi。如果您想深入了解 Koffi 或使用特定平台,请按照以下说明操作。

首先使用克隆存储库:

git clone https://github.com/Koromix/rygel
cd rygel

Windows

首先,确保满足以下依赖关系:

  • 中的“使用 C++ 进行桌面开发”工作负载或中的“C++ 构建工具”工作负载,具有默认的可选组件。

  • 12 或更高版本

完成此操作后,从测试或基准目录运行此命令(取决于您要构建的内容)

cd src/koffi
node ../cnoke/cnoke.js

其他

确保满足以下依赖关系:

  • gcc且g++>= 8.3 或更高版本

  • GNU Make 3.81 或更高版本

完成此操作后,从测试或基准目录运行此命令(取决于您要构建的内容)

cd src/koffi
node ../cnoke/cnoke.js

运行测试

宿主机

构建 Koffi 后,您可以构建测试并使用以下命令运行它们:

cd src/koffi/test
node ../../cnoke/cnoke.js

node sync.js # Run synchronous unit tests
node async.js # Run asynchronous unit tests
node callbacks.js # Run callback unit tests
node union.js # Run union unit tests
node win32.js # Run Windows-specific unit tests (only on Windows)

node sqlite.js # Run SQLite integration tests
node raylib.js # Run Raylib integration tests

在虚拟机

Koffi 使用模拟(如果可能的话加速)QEMU 机器在多种架构上进行了测试。首先,您需要安装 qemu 软件包,例如qemu-system(甚至qemu-system-gui在 Ubuntu 上)。

例如,如果您想在 Debian ARM64 上运行测试,请运行以下命令:

cd src/koffi/tools/
wget -q -O- https://koromix.dev/files/machines/qemu_debian_arm64.tar.zst | zstd -d | tar xv
sha256sum -c --ignore-missing registry/sha256sum.txt

请注意,机器磁盘内容可能会在每次机器运行时发生变化,因此一旦机器至少使用过一次,校验和测试就会失败。

现在您可以使用以下命令运行测试:

node qemu.js test # Several options are available, use --help

请耐心等待,这对于模拟机器来说可能会相当慢。Linux 机器具有并使用 ccache 来构建 Koffi,因此后续构建步骤将变得更加容易忍受。

默认情况下,每次测试都会启动和停止机器。但您可以提前启动机器并多次运行测试:

node qemu.js start # Start the machines
node qemu.js test # Test (without shutting down)
node qemu.js test # Test again
node qemu.js stop # Stop everything

您还可以将测试限制在一部分机器上:

# Full test cycle
node qemu.js test debian_x64 debian_i386

# Separate start, test, shutdown
node qemu.js start debian_x64 debian_i386
node qemu.js test debian_x64 debian_i386
node qemu.js stop

最后,如果您需要进行一些调试或任何其他手动过程,您可以使用以下快捷方式通过 SSH 加入正在运行的计算机:

node qemu.js ssh debian_i386

每台计算机都配置为运行本地可用的 VNC 服务器,您可以使用 KRDC 或任何其他兼容的查看器来访问显示器。使用info命令获取VNC端口。

node qemu.js info debian_i386

发布

首先,您必须分三步更新代码:

  • package.json更改(version 和 stable 以获得稳定版本)中的版本号

  • 添加一个条目来CHANGELOG.md总结自上次发布以来的更改

  • 使用消息Bump Koffi to XYZ提交这些更改

完成此操作后,您可以使用以下命令发布新版本:

node tools/qemu.js test # If not done before
node tools/qemu.js build

cd build/dist
npm publish

有些平台是模拟的,因此可能需要几分钟时间才能准备好预构建的二进制文件。去喝杯咖啡,回来执行npm publish命令!

代码风格

我个人更喜欢类似 C 的 C++ 风格,谨慎使用模板(主要用于容器)和少量面向对象编程。与继承和虚拟方法相比,我强烈喜欢标记联合和代码局部性。异常被禁用。

12 或更高版本

这些机器不直接包含在此存储库中(出于许可证和大小原因),但可以在此处获取它们:

Koffi 使用 C++ 和汇编代码(特定于体系结构的代码)混合进行编程。它使用(C++ N-API 包装器)与Node.js 交互。

https://github.com/Koromix/koffi
https: //github.com/Koromix/rygel/
Git
Visual Studio 2022 或 2019
构建工具
CMake 元构建系统
Node.js
CMake 元构建系统
Node.js
https://koromix.dev/files/machines/
node-addon-api