2024 Clojure 状态调查! 中分享您的想法。

欢迎!请查看 关于 页面以获取有关此工具的更多信息。

0 投票
Clojure

存在一个名为 public-vars-with-docstrings-have-added 的测试用例,在文件 test/clojure/test_clojure/metadata.clj 中,专门用于在有任何公共变量没有 :added 元数据时失败。

该测试用例认为,如果它们不是私有的,并且在任何在向量 public-namespaces 中定义的早期命名空间中

这个 public-namespaces 向量自 2010 年以来就没有更新过,因此遗漏了自那时以来添加的几个命名空间。

如果有人想把更多的命名空间添加到这个列表中,其中一些会导致测试失败。我将添加一个附表,其中包含所有未列出缺少:添加元数据命名空间的变量列表,但我还没有建议哪个命名空间应该考虑在这个列表中,哪些应该有目的地排除(如 clojure.parallel 这样的弃用命名空间除外)。

8 个答案

0 投票

评论者:jafingerhut

附加文件 clj-2519-partial-v1.patch 是我在本地机器上编译的差异文件。我不确定它包含 Clojure 1.10 的所有命名空间,但如果不完整,应该也相当接近。

附加文件 clj-2519-public-vars-without-added-meta.txt,使用 Clojure 1.10.1 的发布源代码加上上面的补丁,显示了那些新命名空间中失败的公共变量列表,因为它们没有:添加元数据。

0 投票
0 投票
by
评论者:jafingerhut

感谢列表!我正在努力追踪找到所有这些符号的正确:添加版本。

我相信对于Clojure 1.0中存在的任何东西,我们想要

{:added "1.0"}

没有必要确定它在1.0之前是否添加过了吗?

示例符号:clojure.main/repl

旁白:我正在使用Clojure的多个不同版本,通过REPL来确定符号何时存在或不存在,这比查看git日志要快。我想我不应该这么做,但是有点惊讶的是clj/clojure可以很好地启动Clojure 1.0.0 REPL。
0 投票
by

评论者:admin

正确,对于1.0版,更早的版本应该是1.0。

clj只是在clojure版本中运行clojure.main,repl并没有真正改变(除了增加),所以我真没想到它会:当然不会!:)

0 投票
by

评论者:jafingerhut

补丁clj-2519-v2.patch为所有在附件clj-2519-vars-to-update.txt中所列的Alex Miller建议的列表中的符号添加:添加元数据。

我通过启动Clojure发布版本的REPL,验证我是否可以require命名空间并解析变量,以及这些操作是否在Clojure之前的发布版本中失败,从而验证所有此类元数据的版本号。希望我没有搞砸任何事情。如果这有助于审核,我可以尝试编写一个bash脚本来演示我所看到的结果。

0 投票
by

评论者:jafingerhut

好吧,我写了一个程序来检查我的:添加注释是否具有正确的版本,并编写了一些代码来检查所有的公有变量,或者至少是那些public-vars-with-docstrings-have-added dectest所做的那些,以查看在哪个Clojure发布版本中它们可以成功地解析,以及哪些不能解析(或在Clojure的那个版本中它们的命名空间甚至还不存在)。

通过这个程序确认了补丁clj-2519-v2.patch中所有的:添加元数据版本号都是正确的。

我发现了24个可能没有正确:添加版本号的公共变量,但它们都属于:添加版本为"1.3"或更早版本的情况,更正后的版本也应该是"1.3"或更早。对这些进行更正有兴趣吗?

示例:所有这些变量的:添加都是"1.0",但很可能是从没有"-int"后缀的类似名称函数实现中复制的。带有"-int"后缀的名称在Clojure 1.3中被实际添加。

unchecked-add-int
unchecked-dec-int
unchecked-divide-int
unchecked-inc-int
unchecked-multiply-int
unchecked-negate-int
unchecked-remainder-int
unchecked-subtract-int

对于inc和inc',当inc'最初在很多版本之前添加到Clojure 1.2时,inc的:添加是"1.0",inc'的:添加是"1.2",这是正确的。在1.3发布之前的一段时间,这两个函数定义的名字被交换了,但是:添加值留在了函数的实现体内。从那时起,我们有了:添加为"1.2"的inc和:添加为"1.0"的inc'。我认为其他以单引号结尾的函数也有类似情况。

0 投票

评论者:admin

不在乎

0 投票
参考:https://clojure.atlassian.net/browse/CLJ-2519 (由jafingerhut报告)
...