IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)

Vous �tes nouveau sur Developpez.com ? Cr�ez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et �tre connect� pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Cr�ez-en un en quelques instants, c'est enti�rement gratuit !

Si vous disposez d�j� d'un compte et qu'il est bien activ�, connectez-vous � l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oubli� ?
Cr�er un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

La version 1.83 du langage de programmation Rust est disponible, introduisant de nouvelles capacit�s constantes, de nouvelles fonctions stables et des API stabilis�es

Le , par Jade Emy

68PARTAGES

2  0 
La version 1.3 du langage de programmation Rust est disponible, introduisant de nouvelles capacit�s constantes, de nouvelles fonctions stables et des API stabilis�es.

L'�quipe Rust a annonc� la sortie de la version 1.83 du langage de programmation Rust. Cette mise � jour introduit des extensions significatives aux contextes const, permettant � plus de code d'�tre �valu� au moment de la compilation. cette version comprend une s�rie de nouvelles fonctions qui sont d�sormais stables dans les contextes constants.

Rust est un langage de programmation g�n�raliste qui met l'accent sur les performances, la s�curit� des types et la concurrence. Il assure la s�curit� de la m�moire, ce qui signifie que toutes les r�f�rences pointent vers une m�moire valide. Il n'utilise pas de ramasse-miettes traditionnel ; � la place, les erreurs de s�curit� de la m�moire et les courses aux donn�es sont �vit�es par le "borrow checker", qui suit la dur�e de vie des r�f�rences au moment de la compilation.

L'�quipe Rust a annonc� la sortie de la version 1.83 du langage de programmation Rust. Cette mise � jour introduit des extensions significatives aux contextes const, permettant � plus de code d'�tre �valu� au moment de la compilation.

Auparavant, les contextes const ne pouvaient pas faire r�f�rence � des �l�ments statiques, sauf dans les expressions d'initialisation d'�l�ments statiques. Cette restriction a �t� lev�e, bien que la lecture des �l�ments statiques mutables ou mutables � l'int�rieur dans les contextes constants reste interdite. La valeur finale d'une constante ne peut pas faire r�f�rence � des �l�ments statiques mutables, ce qui garantit la coh�rence tout au long de l'ex�cution du programme.

En outre, cette version comprend une s�rie de nouvelles fonctions qui sont d�sormais stables dans les contextes constants. Ces am�liorations ouvrent de nouvelles possibilit�s pour l'ex�cution de code dans des contextes constants.


Voici la pr�sentation de quelques nouveaut�s de Rust 1.83 :

Nouvelles capacit�s const

Cette version inclut plusieurs extensions importantes de ce que le code s'ex�cutant dans des contextes const peut faire. Il s'agit de tout le code que le compilateur doit �valuer � la compilation : la valeur initiale des �l�ments const et static, les longueurs des tableaux, les valeurs discriminantes des enums, les arguments g�n�riques const, et les fonctions appelables � partir de ces contextes (const fn).

R�f�rences aux �l�ments statiques. Jusqu'� pr�sent, les contextes const, � l'exception de l'expression de l'initialisateur d'un �l�ment static, n'avaient pas le droit de faire r�f�rence � des �l�ments static. Cette limitation a �t� lev�e :

Code : S�lectionner tout
1
2
static S: i32 = 25;
const C: &i32 = &S;


Notez cependant que la lecture de la valeur d'une statique mutable ou mutable int�rieure n'est toujours pas autoris�e dans les contextes const. De plus, la valeur finale d'une constante ne peut pas faire r�f�rence � une statique mutable ou mutable int�rieure :

Code : S�lectionner tout
1
2
3
4
5
6
7
static mut S: i32 = 0;

const C1: i32 = unsafe { S };
// error: constant accesses mutable global memory

const C2: &i32 = unsafe { &S };
// error: encountered reference to mutable memory in `const`
Ces limitations garantissent que les constantes sont toujours "constantes" : la valeur qu'elles �valuent et leur signification en tant que mod�le (qui peut impliquer le d�r�f�rencement de r�f�rences) seront les m�mes tout au long de l'ex�cution du programme.

Cela dit, une constante est autoris�e � �valuer un pointeur brut qui pointe vers une statique mutable ou mutable int�rieure :

Code : S�lectionner tout
1
2
static mut S: i32 = 64;
const C: *mut i32 = &raw mut S;


R�f�rences et pointeurs mutables. Il est d�sormais possible d'utiliser des r�f�rences mutables dans des contextes constants :

Code : S�lectionner tout
1
2
3
4
5
6
7
8
9
const fn inc(x: &mut i32) {
    *x += 1;
}

const C: i32 = {
    let mut c = 41;
    inc(&mut c);
    c
};


Les pointeurs bruts mutables et la mutabilit� int�rieure sont �galement pris en charge :

Code : S�lectionner tout
1
2
3
4
5
6
7
use std::cell::UnsafeCell;

const C: i32 = {
    let c = UnsafeCell::new(41);
    unsafe { *c.get() += 1 };
    c.into_inner()
};


Cependant, les r�f�rences et pointeurs mutables ne peuvent �tre utilis�s qu'� l'int�rieur du calcul d'une constante, ils ne peuvent pas faire partie de la valeur finale de la constante :

Code : S�lectionner tout
1
2
const C: &mut i32 = &mut 4;
// error[E0764]: mutable references are not allowed in the final value of constants
Cette version est �galement livr�e avec toute une s�rie de nouvelles fonctions qui sont d�sormais stables dans les contextes constants (voir la fin de la section "API stabilis�es".

Ces nouvelles capacit�s et ces API stabilis�es devraient d�bloquer une toute nouvelle cat�gorie de code � ex�cuter dans des contextes constants.

Disponibilit�

Si vous avez une version pr�c�dente de Rust install�e via rustup, vous pouvez obtenir la version 1.83.0 avec :

Code : S�lectionner tout
$ rustup update stable
Si vous ne l'avez pas encore, vous pouvez obtenir rustup � partir de la page appropri�e sur le site web du langage Rust.

Si vous souhaitez tester les futures versions, vous pouvez envisager de mettre � jour localement pour utiliser le canal beta (rustup default beta) ou le canal nightly (rustup default nightly).

Source : Announcing Rust 1.83.0

Et vous ?

Pensez-vous que ces nouvelles fonctionnalit�s sont cr�dibles ou pertinentes ?
Quel est votre avis sur cette nouvelle version ?

Voir aussi :

La version 1.76.0 de Rust, le langage de programmation compil� multi-paradigme, est disponible et apporte une nouvelle documentation sur la compatibilit� ABI, ainsi que d'autres am�liorations

La communaut� Rust reconna�t que le langage n'est pas s�curis� au travers d'une r�cente annonce de lancement d'une initiative de v�rification de 7500 fonctions non s�res de la biblioth�que standard Rust

La Fondation Rust publie un nouveau document pour am�liorer l'interop�rabilit� entre Rust et C++, apr�s le lancement de l'� Interop Initiative � en f�vrier 2024 avec une contribution de 1 million de $ de Google
Vous avez lu gratuitement 0 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer � vous proposer des publications.

Une erreur dans cette actualit� ? Signalez-nous-la !