本周p5p动态 2000/10/08

备注

首先,本周元新闻是您有了新的作者。我已经从Mark-Jason Dominus手中接管了Perl5-Porters摘要的制作,因此从现在起,请将您的更正和补充发送到simon@brecon.co.uk。

本周相对安静,只有几百封邮件。

自引用绑定已损坏

Alan Burlison指出,现在创建自引用绑定会导致Perl进入恶性的递归。什么是自引用绑定?正如你可能猜到的,tie一个变量到自身的过程如下

    package MyTie;
    sub TIEARRAY { bless $_[1], $_[0] }

    package main;
    my (@self);
    tie(@self, "MyTie", \@self);

问题出在绑定是如何实现的。Perl使用一个称为“魔法”的结构附加到每个绑定变量上,以包含像FETCH这样的子程序。当你获取一个变量的值时,Perl会检查变量中是否有存储的FETCH子程序。如果有,Perl会调用它来确定变量的值。如果这个子程序试图查看变量本身,Perl会调用存储在变量“魔法”中的FETCH子程序来尝试获取其值,而这个子程序又试图查看变量,结果变得一团糟。Alan随后调查并初步将责任归咎于Sarathy,但事实证明这是一个错误的判断;问题远比这复杂,没有人想出在不破坏嵌套绑定或线程的情况下解决问题的方法。部分问题似乎在于,没有人真正知道自引用绑定应该做什么。没有补丁出现,讨论也就此结束。

在别处,Daniel Chetlin修复了一些绑定文件句柄的bug。他在工作中还提出了一些有趣的论点。阅读相关内容。

虚拟值

Jarkko提出了一个新的想法,用于标量按需写入共享,但他表示这可能要等到Perl 6才能实现。Ilya突然出现,并典型地说他已经做到了。

为什么unshift这么慢?

Ben Tilly在为什么unshift这么慢上发起了一场讨论,虽然没有得到太多关注,但其中包含了很多关于如何使数组处理更快的有价值信息。讨论中没有出现补丁或基准测试,但有人有机会尝试其中的一些想法,看看是否有所改进。

更多Perl黑客指南

Mark Fisher为perlhack提供了一个有用的补丁,该补丁可在使用Purify调试Perl时使用,促使人们承诺解释如何使用他们最喜欢的代码检查器。其他补丁都没有出现,讨论转向了PERL_DESTRUCT_LEVEL的详细内容。

整数和浮点数处理。

目前,将两个包含整数的变量组合起来实际上是一个浮点运算,这意味着变量需要升级以存储浮点值,而它们并不一定需要这样做。很难看到绕过这一点的良方,但Sarathy提出了一个建议。如果有几个小时空闲的人应该考虑应用Sarathy的想法,并带回来一些基准测试。

在浮点数方面的其他新闻中,Nick Clark发现了一些64位bug,与UV和NV之间的转换有关。有一些讨论,但没有补丁。

修复了printf %v格式错误

[本报告的这一部分由Dominus编写。]

在一份早期的报告中,我提到了 printf 格式指定符 %v 中的一个错误,并建议这可以成为一个适合初学者修复 Perl 错误的好机会。Avi F. 挑战了这个难题,并提供了一个补丁,该补丁被接受了。不幸的是,Avi 在我停止撰写 p5p 摘要之后才这么做,所以从未得到过适当的认可。非常感谢你,Avi!

了解详情。

[现在我们回到 Simon Cozens 的身边。]

Jarkko冒充我

我注意到 split 函数中的一个错误,该错误导致 Unicode 值被破坏;Jarkko 的流感恶化产生了一种狂热,不仅使他自言自语,还模仿了我。

但他至少修复了错误。如果我长时间篡改 Unicode,我也会发生这种情况吗?下周揭晓!

各种

通常是错误报告、测试结果、错误修复、测试结果、神秘事物以及更多测试结果的一揽子。那个向人们发送重复 CC 的丑角已经被赶出此地。

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


Simon Cozens

标签

反馈

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