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 - Visualiser dans une fen�tre � part
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 :
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.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
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`
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 - Visualiser dans une fen�tre � part
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 - Visualiser dans une fen�tre � part
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 - Visualiser dans une fen�tre � part
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 :
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").
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2 const C: &mut i32 = &mut 4; // error[E0764]: mutable references are not allowed in the final value of constants
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 :
Si vous ne l'avez pas encore, vous pouvez obtenir rustup � partir de la page appropri�e sur le site web du langage Rust.
Code : S�lectionner tout - Visualiser dans une fen�tre � part $ rustup update stable
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





Pensez-vous que ces nouvelles fonctionnalit�s sont cr�dibles ou pertinentes ?
R�pondre avec citation
Partager