Muchas veces es un problema de exceso y falta.
Tree Borrows es una nueva especificación propuesta por el Laboratorio de Fundamentos de Lenguajes de Programación de ETH Zurich, que busca definir con precisión los límites de los bloques unsafe en el lenguaje Rust, identificando los casos donde pueden surgir comportamientos no definidos (Undefined Behavior, UB). Rust utiliza un sistema de tipos basado en la propiedad para garantizar seguridad de memoria y evitar competencias de datos, pero sus bloques unsafe proporcionan excepciones que deben ser mantenidas manualmente por el programador. Para prevenir el uso indebido de código unsafe mientras se preserva el rendimiento de optimizaciones del compilador (como la optimización de alias de punteros), el modelo tradicional de Stacked Borrows intentó establecer normas, pero a menudo era demasiado estricto y no coincidía con los patrones comunes en la práctica. Tree Borrows reemplaza la estructura de pila con una estructura de árbol, corrigiendo las limitaciones anteriores y soportando más patrones de sintaxis.
Según los experimentos del equipo de investigación, Tree Borrows rechazó menos casos de uso inapropiados en el análisis de 30,000 paquetes Rust ampliamente utilizados que Stacked Borrows, reduciendo en un 54% los rechazos, lo que demuestra una mayor tolerancia a las necesidades prácticas de programación. Además, el artículo utiliza la herramienta Rocq para demostrar que la nueva especificación no solo conserva la mayoría de las estrategias de optimización existentes, sino que también introduce nuevas optimizaciones como el reordenamiento de lecturas, mejorando aún más la seguridad y el rendimiento durante el proceso de compilación.
En los foros de discusión, algunos usuarios mencionaron que el modelo original de Stacked Borrows generó atención en 2018 y 2020, principalmente por definir el comportamiento de código unsafe de manera demasiado restringida. Varios participantes destacaron que aunque el compilador de Rust podría aceptar ciertos códigos, estos códigos violaban estrictamente la regla de no tener múltiples referencias mutables simultáneamente, lo que provocaba comportamientos no definidos. Otro usuario citó el blog de Ralf Jung, añadiendo que Tree Borrows no solo ayuda a eliminar estos casos, sino que también proporciona una base teórica para una descripción más precisa del semántica operacional de Rust en el futuro.
Este estudio ganó el Premio de Papeleo Distinguido PLDI'25 por su análisis profundo del problema de los límites de código unsafe y su solución innovadora, considerado un hito importante para impulsar la seguridad y la teoría de optimización del lenguaje Rust. En los debates, se mencionó de manera interesante que el autor Neven Villani es hijo del matemático conocido Cédric Villani, lo que refleja el amplio interés que ha generado esta investigación tanto en el ámbito académico como en la práctica.
https://news.ycombinator.com/item?id=44510600