¿Se pueden utilizar corutinas Kotlin “experimentales” en producción?

Respuestas:

112

ACTUALIZACIÓN : Las corrutinas de Kotlin ya no son experimentales a partir de Kotlin 1.3.

Las corrutinas de Kotlin pueden y deben usarse en producción. Esa fue la razón principal para lanzarlos oficialmente en Kotlin 1.1. Después de haberlos lanzado, el equipo de JetBrains se había comprometido a mantener la compatibilidad con versiones anteriores con respecto a cualquier cambio que se les presente en las versiones menores a medida que evolucionan, al tiempo que permite a las personas probarlos de manera segura en aplicaciones de producción complejas.

En resumen, la diferencia entre las características "experimentales" y "normales" es que para las características normales de Kotlin no se pueden agregar cosas nuevas en actualizaciones menores, porque hay una garantía de "compatibilidad total", mientras que para las características experimentales se pueden agregar cosas nuevas, pero no se puede eliminar nada (debido a la garantía de compatibilidad con versiones anteriores).

Las corrutinas experimentales usan un kotlin.coroutines.experimentalnombre de paquete separado , de modo que cuando se finaliza el diseño de las corrutinas y se mueven al kotlin.coroutinespaquete, el código compilado anterior no se romperá, pero continuará funcionando a través de una biblioteca de soporte separada.

En esta publicación del foro de Andrey Breslav se puede encontrar más discusión (lectura larga) sobre por qué son "experimentales" y qué significa esto .

La misma pregunta se aplica a las bibliotecas de soporte de corrutinas.

La versión actual de kotlinx.coroutinesestá diseñada para uso en producción. Está bastante bien cubierto con pruebas, muchas cosas ya están optimizadas, todos los cambios se realizan considerando los problemas de compatibilidad con versiones anteriores del código compilado previamente. Ciertamente sirve como banco de pruebas para varias cosas basadas en corrutinas, por lo que hay algunas partes que están claramente marcadas como "trabajo en progreso" o "inestable" en la documentación de las funciones y clases correspondientes. Sin embargo, de forma predeterminada, todas las API públicas kotlinx.coroutinesse consideran estables y se están desarrollando, si es necesario, con las ayudas de migración adecuadas.

Roman Elizarov
fuente
5
Todavía me preocupa cuando veo la advertencia resaltada sobre la función que usamos, por ejemplo, iniciar, indicar The feature "coroutines" is experimental (see more here)y vincular a kotlinlang.org/docs/diagnostics/experimental-coroutines.html
Elye
4
Es un poco Catch-22, ¿no? ¿Cómo van a ser probados en batalla si nadie los prueba? Específicamente, no he tenido absolutamente ningún problema con la implementación de corrutinas; los únicos "fallos" que vi fueron sobre algunos detalles en su tratamiento por el sistema de tipo estático, que no tienen repercusiones en el tiempo de ejecución. Pasaron pruebas de resistencia bastante serias y puntos de referencia en Hazelcast Jet, con gran éxito.
Marko Topolnik
Partes de esta respuesta son evidentemente erróneas. El paquete entero es experimental, no algunas partes de ella.
Jean de Klerk