本周p5p 2000/06/04要闻

注释

您可以通过发送空消息到[email protected]订阅此摘要的电子邮件版本。

请将更正和补充发送到[email protected],其中YYYYMM是当前年份和月份。

本周的报告迟了,因为我周四早上很早就从温哥华回来了。幸运的是,上周只有166封邮件。

Ilya离职

在本周周末,Ilya宣布他将离开p5p。这对Perl社区是一个巨大的损失。

感谢Ilya多年来做出的巨大贡献和你的辛勤工作。祝你在未来一切顺利。

B::Bytecode无效

Benjamin Stuhl报告说,他一直在做B::Bytecode,但它带来了负面的性能提升。他说:

Benjamin:必须进行3-4倍的I/O操作(Math::Complex从80K编译到300+ K)远远超过解析代码的成本。

坦白说,我对B::Bytecode的实用性表示严重怀疑。

Nick Ing-Simmons表示,他对此也有类似的怀疑。但他也指出,有了B::Bytecode,你可以将所有源文件编译成一个字节码文件,并作为一个整体发送。

Nick:我有一个低技术的B::Script模块,它将一个“脚本”使用的所有*.pm文件收集到一个文件中,并添加一个包装器,该包装器覆盖require,以便从嵌入的散列而不是文件系统中读取文本。

Tim Bunce建议压缩字节码。Stephen Zander回忆起Nicholas Clark在1998年10月发布了一个几乎完整的解决方案。Nicholas建议一旦实现了行纪律,最终问题可能可以解决。

此线程的根源

关于其他B::Bytecode的新闻,Benjamin Stuhl发布了一个补丁,它添加了几个功能并生成了更小的字节码。

补丁。

Ben的map补丁

回到4月份,Ben Tilly提交了一个针对map的补丁,旨在使其在结果大于输入的常见情况下表现更好。Sarathy表示,他认为有更好的解决方案,并提供了关于它可能如何工作的详细信息。问题是在何时扩展栈以适应map每次迭代的输出,以及在何时将新项目(放置在栈顶)重新定位到剩余参数(需要在每次迭代的开始时位于栈顶)下方。

Sarathy的消息。

Ben Tilly不同意;他说他后来决定他的补丁是可能做到的最好的,他已经考虑了Sarathy的方法,并决定没有好的改进,因为跟踪额外信息的开销至少与不复制那么多栈项的收益一样大。

Ilya表示,Sarathy的解决方案似乎太复杂:最简单的方法是在开始时预先扩展栈,将所有结果项都留在顶部,然后在map完成后一次性将它们全部向下移动。

Sarathy通过以下话结束了讨论

萨拉西:无论如何,我认为解决这个问题的最好办法是实施它。有人愿意尝试吗?

如果你有兴趣尝试,但不知道如何开始,请给我发个消息,我会尽力帮助你。

split的怪异之处

伊齐克·斯科特-索内斯报告了两个关于 split 的错误:首先,如果你使用 ?...? 分隔符,它应该在列表上下文中分割到 @_,但实际上没有。迈克·盖伊报告说,在 Perl 4 中这可行,但在 Perl 5.000 中似乎有问题。他提交了一个文档补丁来宣布该功能已被取消。然后,有关在标量上下文中使用 split 的讨论随之而来,这很有用,因为它可以提供字段的数量,但会产生令人讨厌的警告。伊利亚指出,他已经提交了一个补丁来修复这个问题,但被忽略了。

伊齐克的第二个错误是,下面的构造没有像预期的那样产生 Use of implicit split to @_ is deprecated 警告。

        eval "split //, '1:2:3'; 1";

显然,关键在于 eval 处于 void 上下文中。没有讨论,也没有补丁。

scalar操作符不

伊齐克还指出,如果你在 void 上下文中使用 scalar 操作符,它为其参数提供 void 上下文,而不是标量上下文。伊利亚表示这不是一个错误,因为 void 上下文是标量上下文的一种特殊情况。西蒙·科曾兹不同意,并提供了一个补丁。

perlmodlib

西蒙·科曾兹发送了一个程序来自动生成 perlmodlib 的 man 页面。

perlnewmod

西蒙还发送了一个新的 perlnewmod 手册页面,其中解释了如何编写模块并将其提交到 CPAN。

阅读它。

如果你对 perlnewmod 有建议,请给西蒙发邮件。

方法查找缓存

本·蒂利发送了一封长信,关于如何加快继承和方法查找,但萨拉西回复说,添加更多解决方案的技巧还为时过早,因为目前没有人知道为什么方法调用实际上很慢。很久以前就应该有人调查这个问题了。如果你对此感兴趣,但不知道如何开始,请给我发电子邮件。

阅读有关内容。

俄罗斯Perl

亚历山大·S·特列申科在 comp.lang.perl.misc 上发布,他和他团队将翻译大多数 Perl 文档集为俄语;该文章被转发到 p5p。

Eudora问题

显然,Eudora 具有一个聪明的功能,在以 word-wrap 模式编写消息时,在有些行的开头插入额外的空格。这意味着如果你使用 Eudora 发送补丁,补丁很可能无法正常工作。

如果你使用 Eudora 发送补丁,请确保关闭 word-wrap 设置。

h2xs向后兼容性

罗伯特·斯皮尔指出,h2xs 的 5.6 版本不能与任何早于 Perl 5.6 的版本一起使用,因为它生成 our 声明和 use warnings 声明。使用 5.6 版本的 h2xs 与早期 Perl 一起使用是有意义的,因为新的 h2xs 版本已经得到了很大的改进。罗伯特后来提供了一个补丁(他后来进行了修改),该补丁向 h2xs 添加了 -b 向后兼容标志。

补丁内容。

其他

一系列中等规模的错误报告、错误修复、非错误报告、问题、答案以及少量垃圾邮件。没有攻击性言论。

直到下周,我仍然是,你谦卑而顺从的仆人,


马克-贾森·多米努斯

标签

反馈

这篇文章有什么问题吗?请通过在 GitHub 上打开问题或拉取请求来帮助我们。