Использование Rust по ночам в производстве - PullRequest
2 голосов
/ 09 мая 2019

Может кто-нибудь объяснить мне, как "производственный" Руст ночной?

Я хочу использовать ящик PyO3 , который использует функцию специализация , для которой требуется ночная ржавчина.

Готово ли использование ночной версии Rust? Я понимаю, что в будущих выпусках что-то может сломаться, и могут быть внесены изменения в API, но с точки зрения качества / тестирования / готовности к выпуску ночная безопасность?

Из этой ветки для пользователей Rust кажется, что у меня все будет в порядке, пока я ограничиваю использование своих нестабильных функций (например, только специализацией)?

1 Ответ

3 голосов
/ 10 мая 2019

Очевидно, что в ночное время нет никаких гарантий стабильности, что делает этот вопрос дубликатом вопроса, заданного Джорджем Беркли один раз.

Однако ночной компилятор очень стабилен: каждый, даже самый обыденный переход в основную ветвь (из которой извлекается ночной) проходит через CI, который выполняет полный набор тестов, который должен пройти. На мастере нет «мы исправим это позже», если изменение нарушит то, что сработало раньше. Во-вторых, большие изменения - как недавние изменения в std::collections и std::sync - проходят через кратеры, где создается приличная часть общедоступного кода Rust; Если пиар сломает вещи, которые раньше не ломались, он не приземлится ночью. Наконец, что немаловажно, многие проекты ржавчины используют запланированные CI по ночам, когда проект под рукой и его зависимости создаются и тестируются один раз в месяц. Такие проекты, как rocket, работают все время ночью, и если ночью возникает регрессия или ошибка, это замечается очень быстро. Все это означает, что крайне маловероятно, что ваш фронт внезапно упадет ночью

Однако для нестабильных функций, требующих ночного, все по-другому. Семантика может измениться, и код, который когда-то работал, может не скомпилироваться более или менее внезапно; однако, как правило, крайне маловероятно, что изменения приведут к отказам в режиме без вывода сообщений, определенному ранее поведению, которое станет неопределенным, и т. п.

Таким образом, общая стратегия состоит в том, чтобы выбрать определенную версию nightly (скажем, «2019-05-09») и придерживаться этой версии какое-то время.

Аддон : Мое намерение состояло в том, чтобы прояснить, что существует разница между "может ли каждый вечер надежно компилировать вещи?" и "являются ли вещи, составленные по ночам, надежными? Я бы привел веские аргументы в пользу обоих, с акцентом на второй момент: 1) Да, большую часть времени ночью можно будет скомпилировать ваш код. 2) Крайне маловероятно, что скомпилированные по ночам вещи ненадежны из-за незначительных изменений в поведении или откровенных неправильных компиляций.

...