Rust 1.72 ja va ser alliberat i aquestes són les seves novetats

rust logo

Rust és un llenguatge de programació compilat, de propòsit general i multiparadigma

Fa pocs dies es va donar a conèixer el llançament de la nova versió del popular llenguatge de programació «Rust 1.72», versió en què s'han afegit noves característiques, així com també millores, correccions d'errors i diversos canvis que centren a fer més senzill i fluid el procés de creació de codi.

Per als qui desconeixen aquest llenguatge de programació han de saber que s'enfoca a la seguretat de la memòria i proporciona els mitjans per aconseguir un alt paral·lelisme treballs mentre evita l'ús d'un recol·lector d'escombraries i temps d'execució (el temps d'execució es redueix a la inicialització bàsica i al manteniment de la biblioteca estàndard).

Els mètodes de maneig de memòria de Rust salven el desenvolupador d'errors en manipular punters i protegeixen contra els problemes que sorgeixen a causa del maneig de memòria de baix nivell, com accedir a una àrea de memòria després d'haver-la alliberat, desreferenciar punters nuls, desbordaments de memòria intermèdia, etc. Per distribuir biblioteques, proporcionar compilacions i administrar dependències, el projecte desenvolupa l'administrador de paquets Càrrec.

Principals novetats de Rust 1.72

En aquesta nova versió que es presenta de Rust 1.72 versió una de les característiques més innovadores és la millora a la utilitat dels elements deshabilitats mitjançant els atributs «cfg» de compilació condicional, cosa que permet activar l'execució del codi Rust depenent si certes característiques de la caixa són compatibles o s'executen en plataformes específiques.

Anteriorment, els elements deshabilitats mitjançant cfg no eren visibles per al compilador, però ara això canvia, ja que compilador ara conserva informació vital, inclosos els noms dels elements i les condicions de cfg. Això permet al compilador proporcionar comentaris interessants, com ara ressaltar la manca de disponibilitat d'una funció a causa de la necessitat d'habilitar una característica de caixa específica. Això ofereix als desenvolupadors una guia més clara i facilita una experiència de codificació més eficient. Per exemple, permet comprendre que alguna funció no està disponible a causa de la deshabilitació de certes propietats de característiques a la caixa.

Un altre dels canvis que es destaca d'aquesta nova versió de Rust 1.72, és que es van eliminar les restriccions en el temps d'avaluació d'expressions constants, ja que anteriorment, per evitar bucles en temps de compilació, Rust limitava el nombre màxim d'expressions que es podien executar durant l'avaluació constant.
Aquesta característica va provocar errors en compilar codi que no s'ajustava a les restriccions, per la qual cosa a la nova versió es va decidir reemplaçar les restriccions estrictes amb una pantalla d'advertiment que informava sobre càlculs constants de llarga durada. La verificació de borrissol const_eval_long_running també s'aplica per defecte per detectar bucles.

A més, també es destaca que les llistes Clippy van ser millorades, ja que es van moure una sèrie de comprovacions Clippy al compilador Rustc:

  • undropped_manually_drops: canviat a amb nivell de denegació. Quan es tracta de ManuallyDrop, el valor intern no s'elimina automàticament. Invocar std::mem::drop no té cap efecte. En canvi, aquest lint ara proposa utilitzar ManuallyDrop::into_inner com a opció principal.
  • invalid_utf8_in_unchecked: anomenat a nivell de denegació i nivell d'advertiment; invalid_from_utf8_unchecked invalid_from_utf8. Identifica instàncies on std::str::from_utf8_unchecked i std::str::from_utf8_unchecked_mut s'utilitzen amb literals UTF-8 no vàlids. Aquest ús viola els requisits previs de seguretat i genera un comportament indefinit. Aquest borrissol està ara categòricament prohibit.
  • invalid_nan_comparisons: identifica comparacions que involucren f32::NAN o f64::NAN com a operands. Atès que NaN no té comparacions significatives
  • invalid_reference_casting: ressalta els casos en què &T es converteix en &mut T sense aprofitar la mutabilitat interior. Aquestes accions donen com a resultat un comportament immediat i indefinit, independentment de si es fa servir o no la referència.

Dels altres canvis que es destaquen de la nova versió:

  • Una nova part de l'API s'ha mogut a la categoria estable, incloent-hi els mètodes i les implementacions de trets que s'han estabilitzat.
  • L'atribut const, que determina la possibilitat d'utilitzar en qualsevol context en lloc de constants, s'utilitza en funcions:
  • Es va implementar suport de tercer nivell per a plataformes loongarch64-unknown-none*. El tercer nivell implica suport bàsic, però sense proves automatitzades, publicació de compilacions oficials i verificació de la capacitat de compilar el codi.
  • En una futura versió de Rust 1.76, es planeja deixar d'admetre les plataformes Windows 7, 8 i 8.1 i fer de Windows 10 la versió mínima tant pel compilador com per a fins de compilació.

si estàs interessat a poder conèixer més sobre això, pots consultar els detalls a el següent enllaç.

Finalment, per als que estiguin interessats a actualitzar des d'una versió anterior de Rust instal·lada a través de rustup, es pot obtenir la nova versió de Rust 1.72.0 amb:

rustup update stable