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

欢迎!请查阅关于页面,了解更多关于此信息。

0
Clojure

文件test/clojure/test_clojure/metadata.clj中存在名为public-vars-with-docstrings-have-added的deftest,专门用于在有任何公共变量缺少:已添加元数据时失败。

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

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

如果有人想向该列表添加更多命名空间,其中一些会导致测试失败。我将在附件中添加一个包含所有未列出:已添加元数据的变量列表的文件,但目前还没有建议哪个命名空间应被考虑在该列表中,哪些故意被排除(例如已弃用的命名空间clojure.parallel)。

8 答案

0

由jafingerhut发表的评论:

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

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

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发表的评论:

Patch clj-2519-v2.patch 为附件 clj-2519-vars-to-update.txt 中 Alex Miller 建议的名单中的所有内容添加 :added 元数据

通过以那个已发布版本的 Clojure 启动 REPL 并验证能否 require 命名空间以及在该命名空间中解析 var,以及这些操作中有一个或两个在 Clojure 的前一个版本中失败,我验证了所有此类元数据的版本号。希望我没有弄错任何东西。如果这样做能帮助审查,我可以尝试编写一个 bash 脚本来演示我看到的结论。

0

由jafingerhut发表的评论:

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

已确认 Patch clj-2519-v2.patch 中的所有 :added 元数据都使用了该程序中正确的版本号。

我发现有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发布之前,将有时间互换这两个函数定义中的名称,但:添加值仍保持在函数的实现主体中,从那时起我们已经有了inc的:添加为“1.2”,inc'的:添加为“1.0”。我相信还有其他的函数在它们的名称末尾有一个单引号,也有类似的情况。

0
by

由admin发表的评论:

不在乎

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