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

欢迎!请访问关于页面了解有关此功能的更多信息。

0
Clojure

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

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

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

如果有人想将更多命名空间添加到该列表中,其中一些会导致测试失败。我将添加一个包含所有未列出 :added 元数据的 vars 列表的附件,但对于哪些命名空间应考虑在该列表中,哪些应该故意留下(除了已弃用的命名空间,如 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
0
评论者:jafingerhut

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

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

{:added "1.0"}

没有理由确定它在 1.0 之前是否已经添加?

示例符号:clojure.main/repl

题外话:我正在使用不同版本的 Clojure 的 REPL 来确定符号何时出现 versus 不出现,这比查看 git 日志快。我觉得我不应该这样做,但我有点惊讶 clj/clojure 可以很好地启动 1.0.0 的 Clojure REPL。
0

评论由:admin

关于 1.0 的正确性——任何旧版本都应该是 1.0。

clj只是在告诉你 clojure 版本的 clojure.main 中运行,并且 repl 实际上 hasn't really changed,除了添加以外),所以我有点惊讶它 不能 工作! :)

0

评论由:jafingerhut

补丁 clj-2519-v2.patch 添加了附加在附文件 clj-2519-vars-to-update.txt 中 Alex Miller 建议的列表中的每个项目的 :added 元数据

通过使用该版本 Clojure 启动一个 REPL,验证我能否在该命名空间中 require 变量或解解析变量,以及其中一个或两个操作在任何先前的版本 Clojure 中失败,我验证了所有类似这样的元数据的版本号。我希望我没有出任何错。如果这有助于审查,我可以尝试编写一个 bash 脚本或类似的东西来展示我看到的结果。

0

评论由:jafingerhut

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

通过该程序证实了补丁 clj-2519-v2.patch 中的所有:added 元数据都带有正确的版本号。

我发现有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值仍与函数的实现主体保持一致。从那时起,我们就有:added "1.2"的inc和:added "1.0"的inc'。我相信对于名字末尾有单引号的其他功能也是这样。

0

评论由:admin

不关心

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