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

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

0
Clojure

文件 test/clojure/test_clojure/metadata.clj 中存在名为 public-vars-with-docstrings-have-added 的 dectest,其目的是在有任何公共变量没有 :added 元数据时失败。

该测试在它们不是私有变量,并且在在向量 public-namespaces 中之前定义的任何命名空间中时,认为它们是公共的。

该 public-namespaces 向量化自2010年起未更新,因此缺少自那时以来添加的几个命名空间。

如果有人想将更多命名空间添加到该列表中,其中几个会导致测试失败。我将附加一个包含所有列出的变量列表的附件,这些变量缺少所有命名空间中的 :added 元数据,但我还没有关于应考虑哪些命名空间以及故意排除哪些命名空间的建议(例如已弃用的命名空间 clojure.parallel)。

8 个答案

0

评论人:jafingerhut

附加文件 clj-2519-partial-v1.patch 是我在本地编译的 diff 文件。我不完全确定它包含 Clojure 1.10 的所有命名空间,但如果不是完整的话,应该非常接近。

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

0
0
评论:jafingerhut

谢谢这份清单!正在追踪所有这些符号的正确:added版本。

我认为,对于所有存在于Clojure 1.0中的内容,我们希望

{:added "1.0"}

并且没有必要确定它是在1.0之前添加的?

示例符号:clojure.main/repl

顺便说一句:我正在使用Clojure的不同版本上的REPL来确定符号何时存在或不存在,这比查阅git日志要快。我想我不应该这样做,但有点惊讶clj/clojure能够很好地启动Clojure 1.0.0的REPL。
0

评论人:admin

关于1.0是正确的 - 任何旧版本应该是1.0。

clj只是运行你在clojure版本中指定的clojure.main(REPL实际上并没有真正改变,除了逐渐添加外),所以我不会对它有工作感到惊讶!:)

0

评论人:jafingerhut

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

我通过使用该版本Clojure启动REPL,验证我可以要求该命名空间并在那里解析var,以及这些操作中的一个或两个与上一个发布版本的Clojure失败,验证了所有此类元数据的版本号。我希望我没有弄错这些。如果这对审查有帮助,我可以尝试编写一个bash脚本或类似的东西来演示我看到的这些结果。

0

评论人:jafingerhut

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

使用这个程序,补丁clj-2519-v2.patch中的所有:added元数据都经过确认,其版本号是正确的。

我发现24个公共var可能没有正确的: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' 有添加 "1.2",这是正确的。在 1.3 版本发布前的一段时间内,这两个函数定义的名称被调换了,但 :added 值仍然与函数的实现主体相关联。从那时起,inc 有 :added "1.2",inc' 有 :added "1.0"。我相信对其他以单引号结尾的函数也是如此。

0

评论人:admin

不关心

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