本周p5p 2000/06/04要闻
- 注释
- Ilya离职
B::Bytecode
无效- Ben的
map
补丁 split
的怪异之处scalar
操作符不perlmodlib
perlnewmod
- 方法查找缓存
- 俄罗斯Perl
- Eudora问题
h2xs
向后兼容性- 其他
注释
您可以通过发送空消息到[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
每次迭代的输出,以及在何时将新项目(放置在栈顶)重新定位到剩余参数(需要在每次迭代的开始时位于栈顶)下方。
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 上打开问题或拉取请求来帮助我们。