Rust 利伯格林怎么了?

Rust 利伯格林怎么了?,rust,coroutine,Rust,Coroutine,据我所知,利伯格林已经死了。我也找不到单独的libgreen包。有一些替代方案-,目前不提供实际的绿色线程,并且已经被破坏。我是否正确理解Rust中目前没有轻量级Go-like进程?您是正确的,在std(或主发行版的其余部分)中没有轻量级任务库,green没有编译,coroutine似乎还没有完全处理线程方面。我不知道这个地方还有其他图书馆 至于发生了什么:与该问题相关联的RFC是规范的信息来源。总结是,我们发现处理绿色线程/IO的方法(std试图在两个模型之间进行抽象,允许它们自动互操作使用)

据我所知,利伯格林已经死了。我也找不到单独的libgreen包。有一些替代方案-,目前不提供实际的绿色线程,并且已经被破坏。我是否正确理解Rust中目前没有轻量级Go-like进程?

您是正确的,在
std
(或主发行版的其余部分)中没有轻量级任务库,
green
没有编译,
coroutine
似乎还没有完全处理线程方面。我不知道这个地方还有其他图书馆

至于发生了什么:与该问题相关联的RFC是规范的信息来源。总结是,我们发现处理绿色线程/IO的方法(
std
试图在两个模型之间进行抽象,允许它们自动互操作使用)不值得考虑缺点。现在,
std
旨在提供有用支持的最低基线:对于IO/线程,这意味着操作系统功能的“薄”安全包装

在评论中:

起初,锈只有绿色的线。最终,它是 决定没有系统线程的系统语言是。。。奇怪。 所以我们需要添加它们。为什么不增加选择?由于接口 可能是一样的,为什么不抽象一下,你可以 选择你想要的

同时,默认情况下绿色线程的问题是 成为问题。分段堆栈导致C互操作速度慢。你需要一个 运行时来管理它们,等等。此外,总体抽象是 造成不可接受的代价。绿色的线不是很绿。 此外,随着有一天真正发布的需求迫在眉睫,决策 需要做出权衡。既然锈应该是 是一种系统语言,具有1:1线程,基本上没有运行时 比N:M线程和运行时更有意义。所以利伯格林 删除后,接口被重新设置为以1:1线程为中心


“有一天即将发布”是其中的一个重要部分。我们想成为 真的很稳定,生锈了,还有所有的事情要做 在发布1.0时,我们不想具体化一个我们不想要的接口 很高兴见到你。见鬼,我们拿出了很多甚至更少的图书馆 出于类似的原因,比如兰德公司,这一点很重要。工程就是一切 权衡之后,我们决定选择极简主义

对于我们来说,mio是一个非初学者,因为我们需要Windows,而且我们不需要 被锁进一个昂贵的替换库,可能会 孤儿

在这里完全理解,特别是在一般情况下。在 在特定情况下,mio将获得Windows支持或 windows特定版本的mio即将发布,其中 为所有平台提供功能的高级包。而且 本例中,它由当前正在使用 生产过程中锈蚀严重,所以不太可能在任何时候消失 很快。但是,除非你积极参与,否则很难了解事情 这本身就是一个问题

我们喜欢删除libgreen的原因之一是 可以编写自己的库来执行不同类型的IO。1.0是一个 强大的核心,我们感觉良好的稳定永远,而不是最终 一点像这样的库可以进行测试 不同的处理方式,如异步IO,以及 如果足够成熟,我们可以随时在标准库中将它们拉回来 需要。但同时,你的货物只有一条线。到 把它们加进去

以及:

不幸的是,他们最终无法获得绿色支持,因为 他们的线程比内核线程慢,而内核线程又显示了 有人不知道如何让语言编译器生成 stackless协程有效(毫不奇怪 世界上没有多少工程师用正确的方式接线,但请看 更多细节)。他们屏蔽了异步i/o,因为libuv是 “慢”(这只是因为它是单线程的,加上 强制每个异步操作使用malloc+free,因为缓冲区必须持续 直到完成,再加上对同步执行惩罚 i/o见 ), 这真是太遗憾了——他们应该抓住这个机会 用更好的东西代替libuv(提示:ASIO+AFIO,是的,我知道 它们都是C++,但是生锈可以做得更好C++ +互操作 目前没有)而不是罐装 始终异步一切,这可能是一个惊人的进步 从C++的大部分好处看,无缺点 二郎的


对于新手来说,现在有了一个板条箱,它实现了类似goroutines的绿色线程。

还有一些其他相关的东西:,。支持Chris的评论:绿色线程没有万能的,所以你必须选择你的折衷方案“我们很容易去除LIGreen的原因之一是,你可以编写自己的库来做不同类型的IO”(同一个链接)。C++,(绿色)线程可能首先被实现为一个库。我在那篇文章上留下了一些评论,我认为这是一个不完整的观点。@SteveKlabnik你在那篇文章上的评论非常有助于阅读。很高兴回来看看他们是如何做到这一点的:)谢谢@JackO'Connor!”Erlang的缺点“比如什么?我不使用Erlang编程,也不了解Erlang;我只是好奇,不想引起语言争论。