'original-awk'Debian软件包是否足以验证AWK脚本的POSIX兼容性?

问题描述 投票:0回答:2

在这种情况下,我指的是original-awk/stable,now 2012-12-20-6

换句话说,是否有任何重要版本的* nix / BSD可能正在运行AWK版本,而Awk编程语言(Aho,Weinberger,Kernighan)没有准确描述?

awk posix
2个回答
1
投票

你好像在做几个假设并在这里问几个问题。

https://github.com/onetrueawk/awk是否完全实现了POSIX规范而没有其他内容?

我认为答案是否定的;将存在POSIX未描述的行为,因为规范不够详细,或者因为作者实现了标准未指定的功能。

另请注意,FIXES描述了最近今年早些时候的POSIX兼容性增强;大概它不是最后一个,即使维护者的意图很可能是坚持POSIX。

POSIX也是一个移动目标。虽然进展缓慢,但它会得到更新。

1988年的书是否符合2019年的POSIX标准?

不,显然不是。它们是两种完全不同类型的文档,用于完全不同的目的。

原始的Awk实现是否会影响POSIX?很明显。他们是否接受并宣布它是一个真正的参考实现?显然不是。首先,如果您希望互操作性委员会的工作在该领域取得成功,那么肯定会冒着他们的使命冒险 - 您不能以牺牲其他人的利益为代价来支持任何特定的实施。

POSIX是兼容性的合理基准吗?

它最终应该是,但总会出现这样的情况:比较小的内存占用比实际的互操作性更重要,更不用说需要花费时间和金钱的橡皮图章。

(不要误解我的意思,在很多情况下,我和其他许多人都会支付这种认证费用,或者如果遗失的话,我会把钱带到别处。我只是指出,在很多情况下我们都不会在乎。)

无论如何,你似乎从错误的角度接近这个。除非您比Awk作者更了解POSIX规范,否则您的脚本中可能存在互操作性错误,如果您的脚本在完全实现相关POSIX规范的Awk实现下运行,则不会消失。您的测试套件应该测试特定的行为,而不是相信规范及其实现从您的角度来看没有错误。

bwk Awk是兼容性的最小基线吗?

不,我想你会发现还有其他一些Awk实现,在某些情况下它们更原始。

我的记忆是朦胧的,但我记得Awk领先于包装的情况(可能支持Unicode的情况?)以及mawk,而不是nawk,是无法表现的情况。

在后台,有人会低声说“Busybox”。

是2012年代表的代表?

当然不。如上所述,bwk的Awk仍然得到积极支持甚至发展。


1
投票

这不是一个答案,但根据my comment这里是POSIX未定义的项目列表,我要求gawk家伙提供警告,当你用--lint调用gawk时:

enter image description here

请注意,除了POSIX兼容性之外,还有其他可移植性问题。例如,像[[:digit:]]这样的字符类可以移植到所有POSIX awk但是至少有一个常见的awk不支持,名字很差的nawk(与80年代中期的awk相比,它在80年代中期出现时是新的 - 现在,不是那么多!)。

此外,上表还没有明确记录为gawk扩展并被--posix禁用的功能,例如gensub()以及--lint已经报告的任何内容 - 我创建的目的是为了获得--lint输出中包含的“缺失”未定义行为。

© www.soinside.com 2019 - 2024. All rights reserved.