#perl #array #bindings #high-level #api #av #xs

vickenty/perl-xs

Perl XS API 的高层Rust绑定

1 个不稳定发布

0.1.0 2016年1月7日

#11 in #av

59 星 & 9 关注者

BSD-2-Clause

75KB
2K SLoC

Build Status

Perl XS for Rust

Perl XS API 的高层Rust绑定。

示例

xs! {
  package Array::Sum;
  sub sum_array(ctx, array: AV) {
    array.iter().map(|it| it.unwrap_or(0.0)).sum::<NV>()
  }
}

更完整的示例请参阅 t/ 目录中的 XSTest 软件包。

目标

  • 安全性
  • 正确性
  • 速度

Perl XS API 故意采用低级设计,需要用户维护大量内部不变量,从而允许代码非常快。此软件包采用不同的方法,封装实现细节,以牺牲速度的代价提供更简单、更安全的API。

目前,此库专注于 Perl 的公共文档 API,这是 C 语言模块作者可用的子集。

正在进行中

此项目仍在进行中。目前尚不清楚项目目标是否可实现,或 API 是否在实际应用中有意义。

如何使用

Module::Install::Rust 将传统的 Perl 构建系统与 Cargo 集成,允许使用熟悉的 perl Makefile.PL && make 过程编译和安装 Rust 代码。例如,请参阅 t 目录下的测试软件包。

先决条件

  • Perl 5.20+(用于64位数组方法)
  • Rust 1.31+

测试

安装测试和基准测试所需的软件包

cpanm --installdeps .

运行测试

(cd t && perl Makefile.PL && make test)

依赖项