有人可以向我解释一下 Rust nightly 是如何“生产”的吗?
我想使用PyO3使用的板条箱专业化需要每晚 Rust 的功能。
使用 Rust 的夜间版本是否可以用于生产?我知道未来版本中可能会出现问题,并且可能会引入 API 更改,但就质量/测试/生产准备而言,夜间安全吗?
From Rust 用户的这个帖子看来只要我限制我的不稳定功能的使用(例如仅限于专业化),我应该没问题?
显然,每晚没有稳定性保证,这使得这个问题与乔治·伯克利 once.
然而,nightly 编译器非常稳定:对 master 分支(从 nightly 中提取)的每个单独更改(即使是最普通的更改)都会经过 CI,CI 会执行完整的测试套件,并且必须通过。如果更改破坏了之前有效的功能,则 master 上不会有“我们稍后会修复此问题”。
其次,重大变化 - 例如最近的变化std::collections
and std::sync
- 经历火山口运行,其中构建了相当一部分公开可用的 Rust 代码;如果 PR 会破坏以前没有破坏过的东西,那么它就不会出现在夜间。最后但并非最不重要的一点是,许多 Rust 项目每晚都使用预定的 CI,其中手头的项目及其依赖项每月构建和测试一次。项目如rocket
始终在 nightly 上运行,如果在 nightly 中引入回归或错误,很快就会被注意到。所有这些都意味着您的情况极不可能前面突然掉下来每晚
不过,对于需要每晚的不稳定功能来说,情况有所不同。语义可能会发生变化,曾经有效的代码可能会突然或多或少地无法编译;然而,更改通常不太可能导致无声故障、先前定义的行为变得未定义等。
因此,一个常见的策略是选择 nightly 的特定版本(假设为“2019-05-09”)并坚持使用该版本一段时间。
Addon:我的目的是澄清“每晚可以可靠地编译东西吗?”之间存在区别。以及“nightly编的东西可靠吗?”我会对这两点提出强有力的论据,重点是第二点:1)是的,大多数时候 nightly 都能够编译你的代码。 2)由于行为的细微变化或彻底的编译错误,nightly 编译的东西不太可能不可靠。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)