2000年11月7日p5p本周
注释
您可以发送一个空消息到 p5p-digest-subscribe@plover.com
订阅此总结的电子邮件版本。
请将更正和补充发送到 simon@brecon.co.uk
对于这份报告稍晚出现表示歉意;我旨在每周一发布,但希望你们都被美国大选分散了注意力,还没有注意到。这周内容很多,根据是否计算唯一的邮件或重复邮件,达到了300或550条。然而,并没有太多非常有趣的内容。
错误号解析
对t/lib/io_multihomed.t
的一个看似无辜的补丁,竟然暴露了Errno.pm
中的一些问题。(Casey Tweten做得很好,终于追踪到了这个问题,经历了看起来相当痛苦的调试过程...)
如果您不知道,Errno
模块在构建Perl时会自动通过读取系统的errno.h
文件生成。然而,似乎有些系统和libc实现使用的宏对Perl来说很难自动解析,这意味着一些错误常量(例如EINPROGRESS
、ETOOSTUPID
等)没有被捡起。(Tom Hughes在RedHat 7.0上也注意到了这一点。)解决办法是使用gcc的-dM
标志;目前对非gcc我们无法做太多。
VMS技巧
这周在VMS上做了很多工作:首先是在文件锁定方面。Peter Prymmer报告说t/lib/st-lock.t
失败了,因为VMS实际上没有锁定。Peter Farley表示,这种情况在DOS和DJGPP上也一样,解决办法是取消锁定测试。Andy Dougherty提到,一个永久的解决办法是定义一个d_fcntl_can_lock
Configure变量来决定是否fcntl
有用。Craig Berry之前提出过这个想法;Andy提供了补丁。
Peter还注意到Jarkko的一个补丁破坏了POSIX
模块;还有一些错误输出混淆了测试框架,使得测试通过但仍然报告失败。
经过这一切,Perl在VMS上现在通过了所有测试,大家都很高兴!
神秘的(f)crypt
Richard Proctor正在尝试在RiscOS上编译Perl(并接管RiscOS南瓜),但是遇到了问题,因为该系统的fcrypt
没有原型。他试图通过一些强制类型转换来解决这个问题,但Jarkko并不满意;正确的做法是有一个独立的riscos/
目录,并将特定于平台的东西放在那里。Nicholas Clark评论说,[fcrypt]支持是“奇怪的”。
有4个FCRYPT引用,但没有任何地方(甚至在端口子目录中)定义了这个宏。这个宏不是通常的HAS_或I_形式。有人知道它起源于哪里吗?
没有人知道,这很奇怪。然而,我们发现了Riscos的UnixLib
是从哪里获得fcrypt
实现的。
Andy Dougherty建议另一种正确的方法是定义(并测试)一个configure符号d_fcrypt_proto
,然后转换为HAS_FCRYPT_PROTO
。
没有提供补丁。
更多自我关联
Randy Ray 拥有一个模块(Perl-RPM
),它使用自绑定;他发现自绑定对象的引用计数为两个,而你预期它应该是一个是。Alan 回复说自绑定是严重损坏的(嘿,我们不都知道吗……),Jarkko 宣布我们需要有人愿意解决这个问题并把它解决。Randy 承诺尝试看一下。
Steffen Bayer 建议你可以手动将引用计数设置为1,这在 Alan 看来有些令人反感。Steffen 回应说
我认为这是一个观点问题。:-)
将 refcount 设置为较低值本身并没有什么根本性的邪恶,因为这只会比正常情况下更早触发 DESTROY() 事件。
但 Nick 指出,你无法确保在 DESTROYing 期间不会创建任何更多对该对象的引用,因此这归根结底确实是邪恶的。
Rsync与FTP补丁
Merijn Brand 抱怨补丁存档(那是 rsync://ftp.linux.activestate.com/perl-current-diffs/
或 ftp://ftp.linux.activestate.com/pub/staff/gsar/APC/perl-current-diffs)和最新的源树之间有差异。( rsync://ftp.linux.activestate.com/perl-current/
或 ftp://ftp.linux.activestate.com/pub/staff/gsar/APC/perl-current。)
Sarathy 解释说
rsync 镜像是自动的,每五分钟与存储库同步。
更新补丁区域仍然需要手动干预(这涉及许多愚蠢的事情,你已经注意到了),通常是每日循环。使此过程自动化已在我的待办事项列表上,但不要问我何时。
该线程稍微偏离了主题,讨论了设置 rsync 服务器的机制,但导致了 Merijn 对 perlhack 的贡献,解释了如何与 Perl 源保持同步。
README.aix变更
我们最近一直在告诉 AIX 用户,他们需要升级他们的编译器才能编译 Perl,因此 Merijn 向 README.aix 发送了一个补丁,告诉他们如何这样做。了解详情。
Jarkko 也决定是时候有一个 README.Solaris 了;正在寻找志愿者。
正则表达式堆栈问题
Sam Smith 发现一个正则表达式会导致引擎崩溃 - 进一步调查显示它是引擎递归太深并超出最大栈深度。Dominic Dunlop 解释说,修复这个问题很困难,因为编写可移植的栈检查代码是一个挑战,而修复问题的根本 - 将正则表达式引擎从递归改为迭代 - 是有些艰巨的。
Dominic 进一步解释说,他有一个栈检查补丁,但它依赖于系统具有 BSD 资源限制函数 getrlimit
和 setrlimit
。他也不能找到一种优雅的方式使所有这些都合理地与线程一起工作。当时,Ilya 反对说应该通过重写引擎为迭代来修复这个问题;Dominic 尝试了,但这非常困难,使整个过程慢了大约 30% - 这是由于需要在不同层级之间复制结构体的额外内存分配。Jarkko 提出了几个想法,其中最有希望的是使用自定义栈。
解决方法是使用 ulimit
增加进程的栈大小;有人建议 Perl 应该能够在必要时使用 setrlimit
来扩展其自己的栈大小。这被 Jarkko 所不齿 - 限制是存在的原因。
任何有无限耐心和理智的人可能都愿意尝试移除递归,但到目前为止,Dominic 和 Hugo 看起来是唯一有耐心和理智的人。
没人修复的事情
一些尚未有人调查的虫报,对于那些有额外时间的人: xsubpp 截断文件
, 5.6 中 AUTOLOAD 行为已更改,以及 UTF |= 已损坏。
享受吧!
Craig Berry
本周,Craig Berry对p5p做出了巨大贡献,特此予以特别表扬——我们几乎收到了他近三百条信息。然而,经过仔细检查,其中284条实际上是相同的,这是因为某个完全不同地方的一个恶意CC Mail副本导致的。(这完全不是Craig的错。)
各种
留下了一堆误入歧途的查询、测试报告、常见问题解答、离题帖子,以及人们在列表上关于列表中垃圾邮件数量的问题。直到下周,我仍然是,您谦卑且顺从的仆人,
标签
反馈
这篇文章有什么问题吗?请在GitHub上打开一个问题或拉取请求,帮助我们。