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

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

0 投票
Clojure

在 test/clojure/test_clojure/metadata.clj 文件中有一个名为 public-vars-with-docstrings-have-added 的 deftest,专门用于检查如果有任何公共变量没有 :added 元数据则失败。

该测试认为,如果变量不是私有的,并且位于 earlier 在 public-namespaces 向量中定义的任何命名空间中,则是公共的。

该 public-namespaces 向量自 2010 年以来没有更新,因此缺少了一些此后添加的命名空间。

如果有人希望向该列表添加更多命名空间,其中一些会导致测试失败。我将会添加一个包含所有缺失 :added 元数据的变量的列表的附件,但还没有关于哪些命名空间应该包含在该列表中,哪些应该有意排除(如 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 的发布源代码以及上述补丁一起显示,展示了这些新命名空间中失败的公共变量的列表,因为它们没有 :added 元数据。

0 投票

评论由:admin 发表

让我们缩小到这些:[超链接文本](https://clojure.atlassian.net/secure/attachment/18679/clj-2519-vars-to-update.txt)

0 投票
_由:jafingerhut_发表的评论

感谢这个列表! 正在追踪查询所有这些符号的正确:添加版。

我相信对于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,验证我是否可以在此处require命名空间和resolve变量,并且这些操作之一或两个使用先前的已发布Clojure版本失败了。希望我 hasn't 害怕厘清这些。如果那能帮助审查它,我可以尝试编写一个bash脚本来演示我所看到的结果。

0 投票

评论由:jafingerhut 发表

OK,我编写了一个用于检查我的:added批注版本是否正确的程序,并编写了一些代码来检查<强>所有的 公共变量,或者至少是public-vars-with-docstrings-have-added deftest 所检查的变量,以查看它们在哪个已发布版本的Clojure中成功解析,以及它们在哪个版本中失败了(或者其命名空间在该版本的Clojure版本中尚不存在)。

该补丁 clj-2519-v2.patch 中所有的:added元数据都经过该程序确认,具有正确的版本号。

我发现有24个公共变量可能没有正确的: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 投票

评论由:admin 发表

不关心

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