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

vickenty/perlxs_derive

Perl XS API的Rust高级绑定

1 个不稳定版本

0.1.0 2017年12月14日

#14#perl

59 个星标 & 9 个关注者

6KB
132 代码行数

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的小子集。

工作正在进行中

该项目正在进行中。目前尚不清楚项目目标是否可实现,或者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)

依赖关系

~1.5MB
~41K SLoC