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

欢迎!有关如何运作的更多信息,请参阅关于页面。

0
core.async

在core.async的Clojure和ClojureScript版本之间存在相当多的重复代码。将库转换为使用Reader条件语句将消除大量代码量并减少一个库的变化未正确实施在另一个库中的可能性。这还可能通过使特定平台的代码更加突出,从而使维护和源代码阅读更容易,将core.async的'本质'保持在纯Clojure中。这也可以是一个将 cljs.core.async.macros 通过Reader条件语句引入主要异步命名空间的机会。

尽管有这些好处,但也有一些缺点
目前这两个端口可以相对独立地存在,每个领域的专家可以独立工作,而不影响另一方。如果这是一个问题,则可能需要添加更多测试以确保不会出现破坏性错误
将两个端口合并可能会使在同一源文件中阅读任何版本都变得更困难。

由于这是一个相当大的改动,我想在进一步进行之前获得对这个提案的反馈。

2 个答案

0

评论者:alexmiller

目前,我们仍然支持Clojure 1.6和core.async,因此这不是一个选择。在某个时候,这将改变,但不确定是什么时候。

这里还有另一个方面,即读者条件语句是为非常相似的代码设计的,但clj和cljs的代码在很多情况下实质上很不相同,所以它不是一个明显的候选者。相反,我预计将在很多情况下看到同一命名空间的不同版本。

更改命名空间当然也会破坏现有用户,因此我们需要提前制定此更改的计划。

虽然我认为有一个更简洁的代码库的终点(以及一个更好的构建系统,我一直在努力工作),但我不认为除核心团队外的人应该努力工作。

0
...