Могут ли "экспериментальные" соплины Kotlin использоваться в производстве?

Могут ли соплины Kotlin использоваться в производстве, и что означает их экспериментальный статус?

1 ответ

Решение

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

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

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

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

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

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

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

Другие вопросы по тегам