请分享您的看法,参与 2024 Clojure 状态调查!

欢迎!请查看 关于 页面,了解更多关于是如何工作的信息。

+1
tools.build
重新标记

我正在开发一个依赖于 tools.build 的库,并希望将其作为 jar 包发布。由于 tools.build 只以 git 依赖的形式提供,我无法将其包含在我的 pom 文件中的依赖项中。关于这个话题的更广泛讨论在这次 slack 线路 中展开,在那里 @alexmiller 要求我在这儿提出这个话题。

2 个回答

+2
我不确定这是否是正确的议题?
是的,对不起,我抓错了URL
0

除了Alex在tools.build基础上构建的使用案例,还有其他原因使得.jar文件有用。

精确可重复性也是考虑这个选项的另一个原因。如果有人想在美國用於航空電子的產品,他們需要符合FAA的DO-178C標準...我不是律師,但我們理解其要求之一是能够在設備的一生中產生與部署的軟件二進制精確複製,這可能是在獲批後的數年。我並不自己做這種工作,但我為這類人做的事情提供支持。對於clojure或tools.build這樣的工具SLIGHTCHANGES可能會對生成的實際代碼、執行的指令數量、分配的存儲空間等產生影響。在這種情況下,即使是细微的前向兼容性改變也無法容忍。其他領域如機器人或衛星也可能有類似的重複性要求,並且我懷疑美國不是唯一有這類規範的國家。

Maven協議是一個更不可變的東西,並且在時間上有一個更好的紀錄,以確保您获得完全相同的工件。



看起来已经完成了!感谢大家! https://search.maven.org/artifact/org.clojure/tools.build/0.8.4/jar

> Clojure在编译代码方面已经不具有可重复构建

我认为,应用特定版本的Clojure到相同的源代码将总是产生相同的输出。(除非有人在编译任务中引入了时间或随机种子?)

> 我很好奇,Clojure构建不具源代码可重复性的原因是什么?

老实说,我也很好奇。但就目前而言,如果我们有一个不可变的资产可以作为参考,我们就可以减少导致非确定性的因素集合。
...