Clojure core.async和Lamina

shm*_*111 5 clojure lamina-clojure core.async

core.async是Lamina的替代品还是打算成为Lamina的替代品?

如果没有,是否有明显的情况,哪一个优于另一个?

小智 14

我是Lamina的作者.我认为core.async是一个制作精良的库,其设计比Lamina更清晰.有些事情我认为Lamina更擅长,主要与内省,表现和可扩展性有关.

我对core.async的一个大问题是,除了流抽象之外,它还带来了一个执行模型(一切都发生在core.async线程池中),这意味着如果你在任何地方使用它,它会限制设计和实现代码库中的其他所有内容.

我已经看到了许多"异步"库,它们将流作为core.async通道公开,这意味着如果您习惯使用core.async执行模型,则只能使用这些库.

我即将发布一个试图成为"最小"流表示的库,可用于代替称为Manifold的core.async,Lamina,Java阻塞队列等.可以将流形流强制转换为core.async通道,Lamina通道等,并且可以将这些任何内容强制转换为流形流.

我认为"异步"环境仍然很年轻,并且有很多未开发的问题,这些问题可以说明抽象的扩展程度,它们在生产中调试的难易程度等等.JVM提供了许多用于内省的工具,但由于异步机制使用完全不同的执行模型,我们基本上从头开始重新开始.我不会告诉你在core.async上使用Lamina,但我要提醒的是,core.async是一个应用程序级抽象,而不是库级抽象.