DEV Community

GoyesDev
GoyesDev

Posted on

[SC] ¿Cuándo y cómo usar @preconcurrency ?

Comprensión durante la lectura

¿Qué es el atributo @preconcurrency y para qué sirve?

El atributo @preconcurrency permite silenciar los warnings de concurrencia relacionados con conformar el protocolo Sendable.

La idea es que hay dependencias de terceros que están fuera de nuestro control y no podemos modificar. Por esta razón, podemos importar dichas dependencias así:

@preconcurrency import <some_module>
Enter fullscreen mode Exit fullscreen mode

¿En qué se diferencia @preconcurrency de @unchecked Sendable?

@unchecked Sendable sirve para indicar que el tipo marcado ES Sendable, y que nosotros vamos a asegurarlo manualmente. El compilador no necesita revisar.

@preconcurrency sirve solo para silenciar las advertencias de la dependencia importada. Esto no necesariamente significa que dicha dependencia sea segura para concurrencia.

¿Qué riesgos conlleva suprimir las advertencias de concurrencia con este atributo?

Se puede ocultar una vulnerabilidad importante relacionada con el manejo de varios hilos en la biblioteca de terceros.

¿Qué sucede con las importaciones @preconcurrency al migrar a Swift 6?

Si una dependencia de tercero importada con @preconcurrency se actualiza y ya no presenta advertencias de tipo @preconcurrency, entonces resultará en un error de compilación una vez se use Swift 6.


Recordar sin releer

¿Puedes explicar con tus propias palabras cuándo tiene sentido usar @preconcurrency y cuándo no?

¿Qué pasos debería seguir un equipo que usa @preconcurrency para no olvidarse de ese código en el futuro?


Revisión y síntesis

¿Cuál es la alternativa preferible a usar @preconcurrency según el artículo, y por qué?

¿Qué estrategia recomienda el autor para gestionar las importaciones marcadas con @preconcurrency a largo plazo?


Bibliografía

Top comments (0)