欢迎!请参阅关于页面,了解有关此网站如何运作的更多信息。
在 clojure.spec 的 0.3.214 命名空间中,clojure.spec.test.alpha 命名空间仍使用 clojure 1.10.1 的锁定宏进行 AOT 编译。
0.3.214
<clojure.version>1.10.1</clojure.version>
https://github.com/clojure/spec.alpha/blob/a924efab53b0465f7d2a589d4ae3c79a3826403b/pom.xml#L39
https://github.com/clojure/spec.alpha/blob/a924efab53b0465f7d2a589d4ae3c79a3826403b/src/main/clojure/clojure/spec/test/alpha.clj#L363
这个旧锁定宏与 GraalVM 原生镜像一起使用时很麻烦。见 CLJ-1472。
我认为如果您使用 clojure 1.10.3 编译 clojure.spec,则可以继续使用锁定,并可以从这里移除旧的锁定2 workaround。
https://github.com/clojure/spec.alpha/blob/a924efab53b0465f7d2a589d4ae3c79a3826403b/src/main/clojure/clojure/spec/gen/alpha.clj#L17
另一种解决方案是同时在 clojure.spec.test.alpha 中使用 locking2 宏。
已发布 spec.alpha 0.3.218