Можно ли использовать «экспериментальные» сопрограммы Kotlin в продакшене?


Ответы:


112

ОБНОВЛЕНИЕ : сопрограммы Kotlin больше не являются экспериментальными, начиная с версии Kotlin 1.3.

Сопрограммы Kotlin можно и нужно использовать в продакшене. Это было главной причиной их официального выпуска в Kotlin 1.1. Выпустив их, команда JetBrains обязалась поддерживать обратную совместимость в отношении любых изменений, которые вносятся в них в второстепенных выпусках по мере их развития, позволяя при этом безопасно опробовать их в сложных производственных приложениях.

Короче говоря, разница между «экспериментальными» и «обычными» функциями заключается в том, что для обычных функций Kotlin нельзя добавлять новые элементы в незначительные обновления, потому что существует гарантия «полной совместимости», а для экспериментальных функций можно добавлять новые элементы, но ничего нельзя удалить (из-за гарантии обратной совместимости).

Экспериментальные сопрограммы используют отдельное kotlin.coroutines.experimentalимя пакета, поэтому, когда дизайн сопрограмм будет завершен и они будут перемещены в kotlin.coroutinesпакет, старый скомпилированный код не сломается, но продолжит работать через отдельную библиотеку поддержки.

Дальнейшее обсуждение (долгое чтение) того, почему они «экспериментальные» и что это означает, можно найти в этом сообщении на форуме Андрея Бреслава.

Тот же вопрос относится к библиотекам поддержки сопрограмм.

Текущая версия kotlinx.coroutinesпредназначена для промышленного использования. Он довольно хорошо покрыт тестами, многое уже оптимизировано, все изменения внесены с учетом вопросов обратной совместимости с ранее скомпилированным кодом. Он определенно служит испытательной площадкой для различных вещей, основанных на сопрограммах, поэтому есть некоторые части, которые четко помечены как «незавершенные» или «нестабильные» в документации соответствующих функций и классов. Однако по умолчанию все общедоступные API-интерфейсы kotlinx.coroutinesсчитаются стабильными и при необходимости развиваются с соответствующими средствами миграции.


5
Он по- прежнему делает меня беспокоит , когда я вижу подсвеченное предупреждение о функции мы используем , например , запуск, указав The feature "coroutines" is experimental (see more here)и ссылку на kotlinlang.org/docs/diagnostics/experimental-coroutines.html
Elye

4
Это что-то вроде "Уловки-22", не так ли? Как они будут проходить боевые испытания, если их никто не попробует :) С другой стороны, мой опыт работы с «экспериментальными» функциями JetBrains намного превосходит опыт работы с выпусками «производственного качества» от многих других производителей. В частности, у меня не было абсолютно никаких проблем с реализацией сопрограмм; единственные "глюки", которые я видел, были связаны с некоторыми деталями их обработки системой статических типов, которые не имеют последствий для среды выполнения. Они с честью прошли довольно серьезные стресс-тесты и тесты в Hazelcast Jet.
Марко Топольник

Части этого ответа явно неверны. Весь пакет является экспериментальным, а не некоторые его части.
Жан де Клерк,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.