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>
¿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.
Top comments (0)