Version du langage de programmation Rust 1.37

Publié version du langage de programmation système Rouille 1.37, fondé par le projet Mozilla. Le langage se concentre sur la sécurité de la mémoire, fournit une gestion automatique de la mémoire et fournit un moyen d'atteindre un parallélisme élevé des tâches sans utiliser de garbage collector ou d'exécution.

La gestion automatique de la mémoire de Rust libère le développeur de la manipulation du pointeur et le protège contre les problèmes résultant de la manipulation de la mémoire de bas niveau, tels que les accès mémoire après libération, les déréférences de pointeur nul, les dépassements de tampon, etc. Un gestionnaire de packages est en cours de développement pour distribuer les bibliothèques, assurer l'assemblage et gérer les dépendances par le projet. Cargaison, vous permettant d'obtenir les bibliothèques nécessaires au programme en un clic. Un référentiel est pris en charge pour héberger des bibliothèques caisses.io.

principal les innovations:

  • Dans le compilateur rustc à condition prise en charge de l'optimisation basée sur les résultats du profilage du code (PGO, Profile-Guided Optimization),
    vous permettant de générer un code plus optimal basé sur l'analyse des statistiques accumulées lors de l'exécution du programme. Pour générer un profil, l'indicateur "-C profile-generate" est fourni, et pour utiliser le profil lors de l'assemblage - "-C profile-use" (initialement, le programme est assemblé avec le premier indicateur, s'exécute et après avoir créé le profil, il est remonté avec le deuxième drapeau) ;

  • Lors de l'exécution de la commande « cargo run », pratique à utiliser pour tester rapidement les applications console, la possibilité de sélectionner automatiquement un fichier exécutable à exécuter a été ajoutée s'il y a plusieurs fichiers exécutables dans le package. Le fichier par défaut à exécuter est déterminé via la directive default-run dans la section [package] avec les paramètres du package, ce qui vous permet d'éviter de spécifier explicitement le nom du fichier via l'indicateur « -bin » à chaque fois que vous exécutez « cargo run » ;
  • La commande « cargo seller », précédemment fournie en tant que paquet séparé. La commande vous permet d'organiser le travail avec une copie locale des dépendances - après avoir exécuté "cargo seller", tous les codes sources des dépendances du projet sont téléchargés depuis crates.io vers un répertoire local, qui peut ensuite être utilisé pour travailler sans accéder aux caisses. io (après avoir exécuté la commande, une astuce pour modifier la configuration s'affiche pour utiliser le répertoire pour les builds). Cette fonctionnalité est déjà utilisée pour organiser la livraison du compilateur rustc avec le regroupement de toutes les dépendances dans une seule archive avec la version ;
  • Il est désormais possible de créer des liens vers des options d'énumération à l'aide d'alias de type (par exemple, dans le corps de la fonction "fn incrément_or_zero(x: ByteOption) vous pouvez spécifier "ByteOption::None => 0"), tapez les constructions de calcul (‹ MyType‹.. ››::option => N) ou Self access (dans les blocs c &self vous pouvez spécifier « Self::Quarter => 25 ») ;
  • Ajout de la possibilité de créer des constantes sans nom dans les macros. Au lieu de définir le nom de l'élément dans "const", vous pouvez désormais utiliser le caractère "_" pour sélectionner dynamiquement un identifiant non répétitif, évitant ainsi les conflits de noms lors du nouvel appel de la macro ;
  • Ajout de la possibilité d'utiliser l'attribut "#[repr(align(N))" avec des énumérations en utilisant une syntaxe similaire à la définition d'une structure AlignN‹T› avec alignement, puis en utilisant AlignN‹MyEnum› ;
  • Une nouvelle partie de l'API a été déplacée vers la catégorie stable, notamment BufReader::buffer, BufWriter::buffer et
    Cellule ::from_mut,
    Cell::as_slice_of_cells,
    DoubleEndedIterator::nth_back,
    Option ::xor
    {i,u}{8,16,64,128,size}::reverse_bits, Wrapping::reverse_bits et
    slice::copy_within.

De plus, on peut noter début des tests projet Asynchrone-std, qui propose une variante asynchrone de la bibliothèque standard Rust (un portage de la bibliothèque std, dans laquelle toutes les interfaces sont proposées dans une version asynchrone et sont prêtes à être utilisées avec la syntaxe async/wait).

Source: opennet.ru

Ajouter un commentaire