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

欢迎!有关如何使用本指南的更多信息,请参阅 关于 页面。

0
核心逻辑

clojure 1.7 改变了在创建符号时字符串的词法特设机制,具体可在此处描述
https://github.com/clojure/clojure/blob/master/changes.md#23-keyword-and-symbol-construction

因此,两个具有相同名称的非唯一 lvars 在当前
Lvar 等价性方法(检查(identical? name (:name o)))下不再必定相等。

这导致依赖于非唯一 lvars 的规则引擎的 expresso 在 clojure 1.7 中失败

将 identical? 改为 = 修复了问题。

4 答案

0

评论者:dnolen

当我应用此补丁时,有两个测试失败。我们能修复这些测试吗?谢谢!

0

评论者:mschuene

对不起没有更快的回复。
哪两个测试失败了?它们似乎并不总是失败。我在 mvn test 下得到了零个失败。
而且,当我检查 core.logic master 的最新副本,应用补丁并运行测试时,所有测试都通过了。

~/programming $ git clone https://github.com/clojure/core.logic
将 'core.logic' 仓库克隆中...
远程: 计数对象:14868,完成。
远程: 总计 14868(delta 0),重用 0(delta 0),未使用重用 14868
接收对象:100% (14868/14868),3.02 MiB | 1.86 MiB/s,完成。
解决 delta:100% (3955/3955),完成。
检查连通性... 完成。
~/programming $ cd core.logic/
~/programming/core.logic $ git apply 0001-alter-equality-of-non-unique-lvars-for-clojure-1.7.patch
~/programming/core.logic $ mvn test
(链接:信息) 搜索项目...
(链接:警告)
(链接:警告) 在构建 org.clojure:core.logic:jar:0.8.11-SNAPSHOT 的有效模型时遇到了一些问题。
(链接:警告) 表达式 ${artifactId} 已过时。请使用 ${project.artifactId} 代替。
(链接:警告)
(链接:警告) 强烈建议修复这些问题,因为它们威胁到构建的稳定性。
(链接:警告)
(链接:警告) 因此,未来的 Maven 版本可能不再支持构建此类不规范的项目。
(链接:警告)
(链接:信息)
(链接:信息) ------------------------------------------------------------------------
(链接:信息) 构建 core.logic 0.8.11-SNAPSHOT
(链接:信息) ------------------------------------------------------------------------
(链接:信息)
(链接:信息) --- maven-enforcer-plugin:1.0:enforce (enforce-maven) @ core.logic ---
(链接:信息)
(链接:信息) --- build-helper-maven-plugin:1.5:add-source (add-clojure-source-dirs) @ core.logic ---
(链接:信息) 源目录:/home/kima/programming/core.logic/src/main/clojure 已添加。
(链接:信息)
(链接:信息) --- build-helper-maven-plugin:1.5:add-resource (add-clojure-source-dirs) @ core.logic ---
(链接:信息)
(链接:信息) --- build-helper-maven-plugin:1.5:add-test-source (add-clojure-test-source-dirs) @ core.logic ---
(链接:信息) 测试源目录:/home/kima/programming/core.logic/src/test/clojure 已添加。
(链接:信息)
(链接:信息) --- build-helper-maven-plugin:1.5:add-test-resource (add-clojure-test-source-dirs) @ core.logic ---
(链接:信息)
(链接:信息) --- maven-resources-plugin:2.3:resources (default-resources) @ core.logic ---
(链接:信息) 使用 'UTF-8' 编码复制筛选过的资源。
(链接:信息) 跳过不存在的资源目录 /home/kima/programming/core.logic/src/main/resources
(链接:信息) 复制 14 个资源
(链接:信息)
(链接:信息) --- maven-compiler-plugin:3.1:compile (default-compile) @ core.logic ---
(链接:信息) 无需编译 - 所有类都已更新
(链接:信息)
(链接:信息) --- clojure-maven-plugin:1.3.13:compile (clojure-compile) @ core.logic ---
编译 clojure.core.logic.unifier 到 /tmp/classes7718945366616667003.dir
编译 clojure.core.logic 到 /tmp/classes7718945366616667003.dir
编译 clojure.core.logic.nominal 到 /tmp/classes7718945366616667003.dir
编译 clojure.core.logic.datomic 到 /tmp/classes7718945366616667003.dir
编译 clojure.core.logic.dcg 到 /tmp/classes7718945366616667003.dir
编译 clojure.core.logic.fd 到 /tmp/classes7718945366616667003.dir
编译 clojure.core.logic.pldb 到 /tmp/classes7718945366616667003.dir
编译 cljs.core.logic 到 /tmp/classes7718945366616667003.dir
编译 clojure.core.logic.arithmetic 到 /tmp/classes7718945366616667003.dir
编译 clojure.core.logic.protocols 到 /tmp/classes7718945366616667003.dir
编译 cljs.core.logic.pldb 到 /tmp/classes7718945366616667003.dir
编译 clojure.core.logic.bench 到 /tmp/classes7718945366616667003.dir
(链接:信息)
(链接:信息) --- maven-resources-plugin:2.3:testResources (default-testResources) @ core.logic ---
(链接:信息) 使用 'UTF-8' 编码复制筛选过的资源。
(链接:信息) 跳过不存在的资源目录 /home/kima/programming/core.logic/src/test/resources
(链接:信息) 复制 3 个资源
(链接:信息)
(链接:信息) --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ core.logic ---
(链接:信息) 无需编译 - 所有类都已更新
(链接:信息)
(链接:信息) --- maven-surefire-plugin:2.10:test (default-test) @ core.logic ---
(链接:信息) Surefire 报告目录:/home/kima/programming/core.logic/target/surefire-reports


T E S T S

结果

已运行测试:0,失败数:0,错误数:0,跳过数:0

(链接:信息)
(链接:信息) --- clojure-maven-plugin:1.3.13:test (clojure-test) @ core.logic ---

测试 clojure.core.logic.pldb.tests

测试 clojure.core.logic.nominal.tests

测试 clojure.core.logic.tests

运行了 425 个测试,包含 661 个断言。
0 个失败,0 个错误。
(链接:信息) ------------------------------------------------------------------------
(链接:信息) 构建成功
(链接:信息) ------------------------------------------------------------------------
(链接:信息) 总时间:33.466s
(链接:信息) 完成时间:2015年7月26日日星期日 14:03:54 CEST
(链接:信息) 最终内存:12M/300M
(链接:信息) ------------------------------------------------------------------------

~/programming/core.logic $ git status
在分支 master
您的分支与 'origin/master' 保持同步。
未添加到暂存区的更改
(使用 "git add ..." 来更新将要提交的内容)
(使用 "git checkout -- ..." 来丢弃工作目录中的更改)

modified:   src/main/clojure/clojure/core/logic.clj
modified:   src/test/clojure/clojure/core/logic/tests.clj

并未添加任何更改到提交中(使用 "git add" 和/或 "git commit -a")

0

评论由:ticking

我也在应用了这个补丁之后没有看到失败的测试。

0
参考: https://clojure.atlassian.net/browse/LOGIC-169(由 alex+import 汇报)
...