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

欢迎!请参阅关于页面了解有关本书如何运作的更多信息。

0 投票
Clojure

存在一个在 test/clojure/test_clojure/metadata.clj 文件中名为 public-vars-with-docstrings-have-added 的 deftest,该测试明确用于在某些公共变量没有 :added 元数据时失败。

该测试将它们视为公共的,如果它们不是私有的,并且在 vector public-namespaces 中在之前定义的任何命名空间中

该 public-namespaces 向量自 2010 年以来尚未更新,因此缺失了此后添加的几个命名空间。

如果有人想将更多命名空间添加到该列表中,其中一些会导致测试失败。我将添加一个包含所有缺少 :added 元数据变量的附件,但尚未就哪些命名空间应列入此列表以及哪些应有意省略(例如已弃用的命名空间 clojure.parallel)提供建议。

8 个答案

0 投票

评论由:jafingerhut 提出

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

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

0 投票
0 投票
by
_评论者:jafingerhut_

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

我相信对于1.0版Clojure中存在的一切,我们都希望

{:added "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 提出

Patch clj-2519-v2.patch为附带的clj-2519-vars-to-update.txt中Alex Miller建议的所有内容添加了:添加元的:数据(元数据)。

我通过启动那个版本Clojure的REPL,验证我能否在它那里包络名称空间和解析var,以及如果使用先前的发布版Clojure,这些操作则会失败,我验证了所有此类元数据的版本号。希望我没有弄错任何这些。如果这有助于审查,我可以尝试编写一个bash脚本来展示我所看到的结果。

0 投票
by

评论由:jafingerhut 提出

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

使用该程序验证了patch clj-2519-v2.patch中的所有:添加元数据都使用了正确的版本号。

我发现了24个可能不具有正确:< added> 版本号的公共变量,但它们都是< : added> 版本为"1.3"或更早的案例,修正后的版本也应该是"1.3"或更早。对这些进行修正是否有兴趣?

示例:所有这些变量的< :added> 都是"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有:< added> "1.0",inc'有< added> "1.2",这是正确的。在1.3发布之前一段时间,这两个函数定义的名称被交换了,但< :added> 值仍然保留在函数的实现体中,从那时起,我们就有了inc的< added> "1.2"和inc'的< added> "1.0"。我认为其他以单引号结尾的函数也是类似的。

0 投票
by

评论由:admin 提出

无所谓

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