publicado versión da linguaxe de programación do sistema Ferruxe 1.38, fundada polo proxecto Mozilla. A linguaxe céntrase na seguridade da memoria, ofrece xestión automática da memoria e proporciona un medio para lograr un alto paralelismo de tarefas sen utilizar un colector de lixo ou tempo de execución.
A xestión automática da memoria de Rust libera ao programador da manipulación do punteiro e protexe contra os problemas derivados da manipulación de memoria de baixo nivel, como accesos á memoria despois libres, desreferencias de punteiros nulos, desbordamentos do búfer e similares. Estase a desenvolver un xestor de paquetes para distribuír bibliotecas, garantir a montaxe e xestionar as dependencias do proxecto. Carga, o que lle permite obter as bibliotecas necesarias para o programa cun só clic. Admítese un repositorio para aloxar bibliotecas caixóns.io.
Engadiuse un modo de compilación canalizado (pipelined), no que a compilación dun paquete de caixa dependente comeza en canto os metadatos da dependencia están dispoñibles, sen esperar a que finalice a súa compilación. Ao compilar un paquete, non precisa ter todas as dependencias reunidas, só precisa definir os metadatos, que inclúen listas de tipos, dependencias e elementos exportados. Os metadatos están dispoñibles no inicio do proceso de compilación, polo que agora os paquetes ligados poden compilarse moito antes. Ao construír paquetes únicos, o modo proposto non afecta o rendemento, pero se a compilación cobre paquetes con dependencias ramificadas, o tempo de compilación global pódese reducir nun 10-20 %;
Asegura a detección do uso incorrecto das funcións std::mem::non inicializado и std::mem::zeroed. Por exemplo, std::mem::uninitialized é conveniente para crear matrices rapidamente, pero engana ao compilador porque parece estar inicializado, pero en realidade o valor permanece sen inicializar. A función mem::non inicializada xa está marcada como obsoleta e recoméndase utilizar un tipo intermedio no seu lugar Quizais Unidade. En canto a mem::zeroed, esta función pode causar problemas con tipos que non poden aceptar valores cero.
Para axudar a identificar o comportamento non definido, a nova versión engade unha comprobación de pelusa ao compilador que detecta algúns problemas con mem::non inicializado ou mem::zeroed. Por exemplo, agora aparece un erro ao tentar usar mem::non inicializado ou mem::zeroed cos tipos &T e Box‹T›, que representan obxectos punteiro que non poden aceptar valores nulos;
O atributo "#[obsoleto]" ampliouse para permitir que os paquetes de caixas se marquen como obsoletos e se programen para a súa eliminación futura. A partir de Rust 1.38, este atributo tamén se pode usar para macros;
Engadida a posibilidade de usar o atributo "#[global_allocator]" nos submódulos;
Función engadida std::calquera::nome_tipo, que permite coñecer o nome do tipo, que pode ser útil para fins de depuración. Por exemplo, durante a execución do programa podes saber para que tipo se chamou a función:
fn valor_gen‹T: predeterminado>() -› T {
println!("Inicializando unha instancia de {}", std::any::type_name::‹T›());
Predeterminado::predeterminado()
}
ascii::EscapeDefault implementa Clonación e visualización.
Unha nova parte das API foi transferida á categoría estable, incluídos os métodos que se estabilizaron
‹*const T›::cast, ‹*mut T›::cast,
Duración::as_secs_f{32|64},
Duración::div_duration_f{32|64},
Duración::div_f{32|64},
Duración::from_secs_f{32|64},
Duración::mul_f{32|64},
operacións de división co resto
div_euclid e rem_euclid para todas as primitivas enteiras;
Engadido soporte para especificar a opción "--features" varias veces para habilitar diferentes funcións no xestor de paquetes de carga;
O compilador proporciona un terceiro nivel soporte para plataformas de destino aarch64-uwp-windows-msvc, i686-uwp-windows-gnu, i686-uwp-windows-msvc, x86_64-uwp-windows-gnu, x86_64-uwp-windows-unknown, armsvux-unknown -gnueabi, armv7-unknown-linux-musleabi, hexagon-unknown-linux-musl e riscv7i-unknown-none-elf. O terceiro nivel implica soporte básico, pero sen probas automatizadas e publicación de compilacións oficiais.