评论者:jafingerhut
好的,我写了一个检查我的: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值仍保留在函数实现体中。从那时起,我们就有了:added为"1.2"的inc和:added为"1.0"的inc'。我相信其他以单引号结尾的函数也是类似的情况。