在 Raku 模块中指定特定的 Rakudo 版本

Sum*_*nal 5 rakudo raku

今天,我在IRC聊天中了解到

my @a = [9, 4, 3, 2, 7];
say @a.sort(:k) # (3 2 1 4 0)
Run Code Online (Sandbox Code Playgroud)

自 Rakudo 2023.08 起可用。我希望我的模块使用此功能。是否有内置机制可以通过修改 META6.json 在模块中指定这一点?

例如,如果 Rakudo 早于 2023.08,则模块安装失败。

我所知道的是我们可以指定6.c, 6.d6.e例如:

"raku": "6.d"
Run Code Online (Sandbox Code Playgroud)

META6.json文件中。然而这并没有解决这个问题。

p6s*_*eve 3

遗憾的是,当前的 Raku 没有内置机制来控制 VM 版本,例如 2023.08(例如通过 META6.json)低于主要 Raku 版本(例如 6.d)的级别。

我建议(并且会支持)将此作为新功能请求。与此同时,这里有一个粗略且现成的解决方法:

die "must be raku v2023.08 or greater" 
unless $*VM.version ~~ v2023.08+;
Run Code Online (Sandbox Code Playgroud)

^^ 如果您希望安装失败,请将其放入您的测试中

  • 您可以使测试失败而不是导致测试文件退出 (2认同)