Rust avanza hacia asignadores personalizados más flexibles y seguros

Fuentes: Rust Advances Toward More Flexible and Safe Custom Allocators

La estabilización de los asignadores personalizados en Rust ha cobrado nuevo impulso durante los últimos seis meses y se encuentra más cerca que nunca, según la propuesta de estabilización del rasgo Allocator y el informe asociado. El diseño actual conserva una superficie inicial limitada, con métodos para asignar y liberar memoria, además de su integración con Box y Vec. La principal novedad es que Allocator se prepara para ser compatible con objetos dinámicos, lo que permitiría almacenar asignadores detrás de Arc y facilitaría su uso en bibliotecas, con un coste de rendimiento potencialmente reducido.

La propuesta también refuerza la prohibición de desembocar en procesos de desenrollado durante las operaciones de los asignadores. Permitirlo podría dejar en un estado inconsistente estructuras como Vec después de una operación con varias asignaciones y provocar errores de memoria, como liberaciones dobles, incluso en código seguro.

La estabilización se concibe como un producto mínimo viable. Todavía no incluye otros contenedores, como BTreeMap, ni una solución definitiva para las relaciones entre los asignadores, los rasgos Clone y Drop. El texto explica que algunos asignadores necesitan liberar recursos al destruirse, mientras que otros no. La clonación de asignadores presenta riesgos de seguridad y pérdida de memoria, por lo que el diseño actual no puede utilizar directamente el contrato general de Clone. El equipo deberá resolver estos casos y completar la integración con otros tipos antes de considerar terminada la funcionalidad.