ByteAtomic de iceoryx2: primitivas lock-free seguras contra carreras de datos

Fuentes: Safe Lock-free Primitives with iceoryx2's ByteAtomic

iceoryx2, biblioteca de comunicación entre procesos orientada a sistemas críticos de seguridad y alta fiabilidad, incorpora ByteAtomic, un envoltorio que permite copiar memoria de forma atómica a nivel de byte. La pieza resuelve un problema conocido en Rust y C++: los sequence locks, que evitan bloqueos frente a lectores y escritores concurrentes, no pueden implementarse de forma correcta en estos lenguajes porque la copia de datos no atómicos desencadena comportamiento indefinido, aunque el propio sequence lock permita detectar la corrupción. Una memoria atómica byte a byte elimina ese comportamiento indefinido, aunque por sí sola no garantiza la integridad de los datos frente a lecturas o escrituras truncadas; el usuario debe combinarla con un mecanismo de sincronización superior, como el propio sequence lock. La primera versión de ByteAtomic usaba transmute_copy para volcar el valor en un array de AtomicU8, pero esa conversión leía bytes de relleno no inicializados, algo prohibido por el modelo de memoria. La implementación actual exige que el tipo interno implemente el trait AtomicCopy, que expone for_each_field para iterar por los campos inicializados y omitir el padding. La estructura, llamada FixedSizeByteAtomic, se genericiza con un parámetro SIZE porque Rust aún no permite usar directamente size_of::() en la definición de struct; los autores prevén unificar ambas variantes en un solo ByteAtomic cuando la limitación desaparezca. ByteAtomic se enmarca en la biblioteca iceoryx2-bb-lock-free, pensada para sistemas embebidos y de tiempo real donde los bloqueos y los interbloqueos resultan inaceptables.