问题标签 [xs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
301 浏览

perl - 从 Perl XS 代码中,我如何递归调用自己?

我在 Pure Perl 中有一个复杂的编码函数,我正在将其转换为 XS,以期获得性能提升。

我正在转换为 XS 的函数需要递归调用自身。我可以看到如何使用 call_sv [感谢“man perlcall”] 来调用纯 Perl 函数。

但是我怎么在 XS 中调用自己(或任何其他 XS 函数)呢?

(PS效率非常可取……)

有人可以给我一个提示吗?还是一个例子?求求你!

更新:第一个答案是绝对正确的。调用递归纯 C 函数就可以了。

0 投票
3 回答
250 浏览

perl - 测试使用 Dist::Zilla 的 XS 模块

我正在开发一个 Perl 模块,它有很多 XS 代码,也用于Dist::Zilla管理打包。有效测试事物的最佳方法是什么?我知道dzil test,但这很慢,因为每次调用它都会执行完整的构建/编译/测试周期。

最好只更新自上次测试以来需要更新的部分,并且能够只运行某些t/*.t测试脚本而不是全部。有人有他们喜欢的解决方案吗?

0 投票
2 回答
253 浏览

perl - 什么是 RMAGICAL?

我试图理解我继承的一些 XS 代码。我一直在尝试向调用 Perl 魔法的部分添加注释,但我找不到任何文档来帮助我理解这一行:

RMAGICAL为了什么?使用 Perl 魔术变量时应该什么时候打开或关闭?

更新

Perlguts Illustrated 非常有趣,并且有一点关于 RMAGICAL 的信息(“R”代表“随机”),但它没有说明什么时候该弄乱它:http ://cpansearch.perl.org/src/ RURBAN/illguts-0.42/index.html

0 投票
0 回答
236 浏览

perl - Inline::CPP/Inline::C - 调试代码

我正在尝试在 Perl 模块中使用一些专有的 C++ 代码。

我已经看到,如果在编译时出现问题,只需启用 BUILD_NOISY 标志就很容易调试。

在我的情况下,问题出现在运行时......代码 C++ 在单独编译时工作正常,但是当我将它嵌入 Perl 时,我的代码在运行时崩溃。

我得到的唯一消息是这个:

有没有办法获得更详细的输出?

0 投票
2 回答
1072 浏览

perl - 如何在 64 位 CentOS 系统上为 32 位自定义 Perl 构建 32 位 XS 模块?

我有一个运行定制版本的 Perl 5.12.5 的 64 位 CentOS 6 系统,它是为 32 位构建的。(唉,这是因为我们对 32 位和 64 位系统使用相同的 RPM。)

当我在服务器上构建 XS 模块(例如 JSON::XS)时,它失败了,因为它正在构建 64 位库。我收到一个错误,例如

我尝试将 CFLAGS 变量设置为“-m32-bit”,但它不起作用。

我需要做什么才能正确编译 XS 模块?理想情况下,我想要一些适用于 cpanminus 但如果需要可以使用 cpan 或 cpanplus 的东西。

0 投票
1 回答
236 浏览

perl - 使用 Perl XS 和 PerlIO 使旧库工作

我是一个 XS 初学者,我正在考虑更改现有的 XS 模块,该模块大量使用 15 年以上的底层 C 库(实际上该模块基本上只是粘到这个库)。问题是我希望能够使用 PerlIO 字符串技巧,例如:

然后传递$fh到库所期望的 XS 胶水FILE。问题是 XS 有:

我认为它需要是:

这当然行不通,因为它必须有更多的东西。当我查看_parse库中的代码时,结果如下:

再次与FILE类型。现在我必须开始的基本问题是 - 在不改变库的情况下这是否可能?也就是说,我可以通过更改 XS 从字符串 PerlIO 行为中获取伪文件句柄吗?

0 投票
2 回答
336 浏览

perl - intptr_t 的 XS 类型映射

我试图从一些 XS 代码返回一个 intptr_t 类型:

我的 typemap 没有任何关于intptr_t的内容,所以当然会dmake失败,Could not find a typemap for C type 'intptr_t'.因为我不确定 Perl 是否能处理尽可能大的整数intptr_t。如果没有很好的方法将它作为数字返回给 Perl,我将把它字符串化。

0 投票
1 回答
618 浏览

c - XS 此代码中的内存泄漏?

无法在此代码中找到发生内存泄漏的位置。

基本上我想为一个返回二维数组的 C 函数编写一个 XS 包装器。

C函数:

XS 包装:

从 XS 返回一个“数组数组”。

在 Perl 脚本中进行测试:

每次returnArray()调用该函数时,Perl 进程的 Commit 大小都会增加。但我希望$arrayref变量每次都应该被垃圾收集,并且内存使用量不应该增加。

我希望,我正在释放 XS 中所有分配的内存。但是仍然存在内存泄漏。这个内存泄漏的 XS 代码有什么问题?

0 投票
1 回答
468 浏览

perl - perl Text::CSV_XS 删除所有 escape_chars

由于数据包含换行时数据 Text::CSV 解析中的换行问题,我已从 Text::CSV 移至 XS 版本

Text::CSV_XS 删除数据中的所有转义字符(我正在使用带有 perl 5.8.8 的 linux)这是示例代码(如下)

我希望在转义 1 \ 后第 3 行的属性应该是 \N 但 Text::CSV_XS 会同时删除 \

这是输出

0 投票
1 回答
244 浏览

csv - 使用 Text::CSV_XS perl 模块用换行符解析 CSV

我们使用Text::CSV_XS module以下选项解析 CSV:

CSV 是使用 mysql LOAD DATA infile 创建的。如果有NULL值,则在字段中MYSQL添加\N

解析数据之前:

如果我们使用 theescape_char => "\\"\N替换为N

解析后的数据:

'\'此外,删除了 double 的数据

例如:D\\'Mello更改为D'Mello

如果我们删除escape_char => "\\",则数据将更改如下所示

解析前:

解析后:

解决此问题的最佳方法是什么?