Sortie de Rust 1.97. Le noyau Zinnia et le système P2P Iroh sont écrits en Rust avec adressage par clé.

La version 1.97 du langage de programmation Rust, initialement développée par Mozilla, est désormais gérée par l'organisation indépendante à but non lucratif Rust Foundation. Ce langage est axé sur la sécurité de la mémoire et propose des outils pour atteindre un haut niveau de parallélisme dans l'exécution des tâches, sans avoir recours à un ramasse-miettes et un runtime (le runtime se limite à l'initialisation de base et au support de la bibliothèque standard).

Les méthodes de gestion de la mémoire dans Rust visent à éliminer les erreurs lors de la manipulation des pointeurs et à protéger contre les problèmes liés à une gestion de la mémoire à bas niveau, tels que l'accès à une zone mémoire après sa libération, la déréférence de pointeurs nuls, les débordements de tampon, etc. Pour la distribution de bibliothèques, la construction et la gestion des dépendances, un gestionnaire de paquets nommé Cargo est développé. Un dépôt crates.io est maintenu pour l'hébergement des bibliothèques.

La sécurité de la mémoire dans Rust est assurée au moment de la compilation grâce à la vérification des références, au suivi de la propriété des objets, à la prise en compte de la durée de vie des objets (portée) et à l'évaluation de l'accès mémoire pendant l'exécution du code. Rust offre également des outils pour se protéger contre les débordements d'entiers, exige l'initialisation obligatoire des valeurs des variables avant leur utilisation, gère mieux les erreurs dans la bibliothèque standard, applique le concept d'immuabilité (immutable) pour les références et les variables par défaut, et propose une forte typage statique pour minimiser les erreurs logiques.

Les principales nouveautés :

  • Une nouvelle méthode de décoration (mangling) des noms de fonctions, de variables globales et de structures de données dans les fichiers objets et exécutables générés est activée par défaut (-Csymbol-mangling-version=v0). Les noms sont décorés pour éviter les conflits lors du lien de différents programmes, en attachant un contexte spécifique, tel que le chemin du module et le nom du package crate.

    L'ancienne méthode de décoration des noms, basée sur l'ABI Itanium, présentait des inconvénients tels que le remplacement des paramètres génériques par des hachages illisibles et l'existence de parties du compilateur ne utilisant pas l'ABI Itanium, ce qui nécessitait l'utilisation de décodeurs de noms spécifiques à Rust. Dans Rust 1.97, une méthode de décoration conçue spécifiquement pour Rust, sans les défauts mentionnés, est désormais activée par défaut. L'ancienne méthode sera supprimée dans une des prochaines versions.

  • Le gestionnaire de paquets cargo intègre désormais la possibilité de gérer les réactions aux avertissements générés par le compilateur lors de la construction. Une variable d'environnement CARGO_BUILD_WARNINGS a été ajoutée, pouvant prendre trois valeurs : warn (par défaut) — affiche un avertissement à l'écran ; allow — masque les avertissements ; deny — traite les avertissements comme des erreurs, stoppant ainsi la construction.

    Dans les versions précédentes, il était nécessaire d'indiquer « -Dwarnings » dans RUSTFLAGS pour le compilateur afin de terminer la construction après qu'un avertissement avait été émis. Toutefois, lorsque RUSTFLAGS était modifié, le gestionnaire de paquets cargo considérait la construction comme nouvelle, ne tenant pas compte des données en cache et recompilant tout le projet depuis le début. En déplaçant le paramètre au niveau de cargo, on évite le réinitialisation du cache et la nécessité d'une recompilation complète lors de la modification du mode de traitement des avertissements, tout en simplifiant l'activation du traitement des avertissements comme erreurs dans les systèmes d'intégration continue.

  • Lors de la compilation, l'affichage des messages renvoyés par le linkeur est activé par défaut. Les messages apparaissent sous forme d'avertissements via une règle de lint spéciale «linker_messages», qui ne fait pas partie du groupe standard «warnings». À cet égard, rustc filtre les messages qui sont des faux positifs typiques ou un comportement normal, ne conservant que les avertissements qui pourraient indiquer des problèmes, tels que les avertissements sur les options obsolètes et les configurations indésirables. Auparavant, l'information du linkeur n'était affichée qu'en cas d'échec, sinon tous les messages étaient masqués. Pour revenir au comportement précédent, il suffit d'ajouter dans Cargo.toml : [lints.rust] linker_messages = «allow»
  • Une nouvelle série d'API a été stabilisée dans la catégorie des API stables, notamment des méthodes et des implémentations de traits stabilisées :
    • Par défaut pour RepeatN
    • Copie pour ffi::FromBytesUntilNulError
    • Send pour std::fs::File pour UEFI
    • ::isolate_highest_one
    • ::isolate_lowest_one
    • ::highest_one
    • ::lowest_one
    • ::bit_width
    • NonZero::isolate_highest_one
    • NonZero::isolate_lowest_one
    • NonZero::highest_one
    • NonZero::lowest_one
    • NonZero::bit_width
  • Le modificateur «const» s'applique dans la méthode char::is_control.

De plus, on peut noter les projets et événements récemment annoncés liés à Rust :

  • Le projet zinnia développe un noyau modulaire de type Unix, écrit en Rust et distribué sous la licence GPLv2. Le noyau prend en charge les interfaces POSIX et certaines extensions de BSD et Linux, telles que epoll et timerfd. Des pilotes DRM (Direct Rendering Manager) et evdev sont disponibles pour le rendu et l'organisation de l'entrée. La fonctionnalité mise en œuvre est suffisante pour exécuter l'environnement de bureau Xfce sous un serveur X et un compositeur. de serveurs Weston basé sur Wayland. Le démarrage est pris en charge à la fois dans l'émulateur QEMU et sur du matériel réel, comme le portable ThinkPad E14 G7.
  • La version 1.0 de la bibliothèque de communication iroh a été présentée, permettant d'établir des connexions réseau entre des applications sur différents hôtes avec connexion par des clés cryptographiques, au lieu de adresses IP (la clé à laquelle vous devez vous connecter est indiquée et iroh trouve l'hôte associé et établit une connexion cryptée en utilisant le protocole QUIC). Si possible, des connexions P2P directes sont établies, mais si cela n'est pas possible, le système descend à un fonctionnement via des relais, qui sont également utilisés pour découvrir des hôtes par des clés. Il est possible de lancer votre propre relais ou de se connecter à des relais publics soutenus par la communauté.

    Parmi les fonctionnalités avancées : support de Multipath QUIC pour livrer des paquets simultanément sur plusieurs chemins, possibilité de fonctionner derrière un NAT, mode de configuration statique pour se connecter à des appareils locaux sans accès à Internet, possibilité de compilation en code intermédiaire WASM pour exécution dans le navigateur, support de la création de vos propres transports, par exemple, pour se connecter via Bluetooth, WiFi Aware ou LoRa. Le code est écrit en Rust et distribué sous les licences Apache-2.0 et MIT. Des liaisons sont disponibles pour Python, Node.js, Kotlin et Swift.

  • L'auteur de la plateforme JavaScript serveur Bun a publié un article détaillant le projet de réécriture de Bun du langage Zig vers Rust, en utilisant le modèle d'IA Claude Fable. Il est noté que Bun 1.3.14 sera la dernière version en Zig et que la prochaine version Bun 1.4.0 sera déjà en Rust. Selon les tests réalisés, la version en Rust consomme significativement moins de mémoire et est 2 à 5 % plus rapide que la version en Zig. La taille du fichier exécutable dans la version en Rust a été réduite de 20 %.

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster