El lenguaje de programación Valen ha introducido un verificador de préstamos (borrow checker) flexible que resuelve el conflicto histórico entre la seguridad de memoria y la flexibilidad de referencia. Este sistema se basa en la propuesta de 'Group Borrowing', diseñada originalmente para Mojo pero adaptada para ofrecer una solución más amplia que los enfoques tradicionales. A diferencia de Rust, que limita las referencias mutuas, Valen permite múltiples referencias de lectura y escritura a un mismo objeto sin incurrir en errores de uso después de liberar (use-after-free) en tiempo de ejecución.
El mecanismo funciona mediante el seguimiento de referencias por parte del compilador, permitiendo detectar errores de seguridad en tiempo de compilación. Esto elimina la necesidad de recuento de referencias en tiempo de ejecución, manteniendo el rendimiento nativo. El sistema es compatible con patrones complejos de datos, como los gráficos de referencias arbitrarias presentes en C++ o Java, y soporta referencias generacionales e inmutables. Al integrar tipos lineales y permisos de primera clase, Valen logra una seguridad de memoria sin coste de ejecución, superando las limitaciones de los lenguajes anteriores que requerían restricciones sintácticas o manuales para garantizar la seguridad. Esta aproximación busca unificar la potencia del verificador de préstamos de Rust con la flexibilidad del recuento de referencias, ofreciendo una alternativa viable para desarrolladores que buscan seguridad de memoria sin sacrificar la expresividad del código.
