AccueilActualités informatiqueLangage de programmation : Julia 1.7 développe les capacités multithreading

Langage de programmation : Julia 1.7 développe les capacités multithreading

L’équipe de développement derrière le langage de programmation Julia a présenté la version 1.7. La dernière version du langage orienté fonctions poursuit l’extension des capacités multithreading de Julia, mais propose en outre toute une série d’autres nouveautés. Selon le billet de blog annonçant la sortie de Julia 1.7, un nouveau générateur de nombres aléatoires (Random Number Generator), un gestionnaire de paquets remanié et un nouveau format de manifeste ont notamment été mis en œuvre.

Sommaire

L’amélioration du multithreading est l’un des objectifs les plus importants sur lesquels l’équipe de développement de Julia travaille de plus en plus depuis quelques versions déjà. Une étape importante a été franchie avec la stabilisation des API multithreading dans Julia 1.5. Depuis, l’équipe s’est attachée à traiter de nombreuses conditions de course dans le runtime et à corriger les erreurs de synchronisation. Les développeurs disposent également de plus de possibilités pour répartir les charges de travail de leurs programmes sur plusieurs threads.

Les Atomics, annoncés lors de la dernière JuliaCon, devraient notamment y contribuer. À propos de @atomic-et les fonctions génériques qui y sont liées permettent, selon le blog, de travailler plus efficacement avec les threads. Les premiers paquets qui ont déjà été adaptés sont JuliaConcurrent/ConcurrentCollections.jl, JuliaActors/Actors.jl et tkf/ThreadsX.jl. Les nouvelles options sont résumées dans la vidéo ci-dessous.

Jameson Nash donne un aperçu des nouveaux champs atomiques dans Julia.

Le nouveau générateur de nombres aléatoires de la famille Xoshiro256-RNG doit également fonctionner de manière plus conviviale pour les threads. Contrairement à l’algorithme Mersenne-Twister utilisé jusqu’à présent par défaut, le nouveau RNG offre la possibilité d’insérer un état dans chaque tâche et de le partager lors de la création de nouvelles tâches. Ainsi, les nombres aléatoires ne dépendent que de la structure de l’espacement des tâches d’un programme, et non du calendrier d’exécution parallèle. Selon les estimations de l’équipe Julia, le nouveau RNG promet donc non seulement une plus grande rapidité, mais contribue également à rendre le flux de nombres aléatoires plus reproductible dans les programmes multithreading.

La version 1.7 comporte une nouveauté : le format Manifest, dans lequel le Package Manager (Pkg) consigne toutes les dépendances dans un fichier TOML dès qu’un nouveau paquet est créé. Jusqu’à présent, il n’était pas conseillé d’utiliser les manifestes dans différentes versions de Julia, d’autant plus que le gestionnaire de paquets ne fournissait pas d’avertissement en cas de problèmes de dépendance potentiels. Avec le nouveau format, toutes les dépendances peuvent désormais être regroupées sous un format commun. [deps]-sont regroupées dans une même clé. Cela libère l’espace de noms global, ce qui permet à un julia_version-ainsi que d’autres données utiles pourront être ajoutées à l’avenir. Le nouveau format de manifeste devrait être utilisable rétroactivement à partir de la version 1.6.2 de Julia.

Lire aussi

Les nombreuses nouveautés de Julia 1.7 sont présentées en détail dans le blog de la nouvelle version. La nouvelle version du langage de programmation promet entre autres des améliorations dans l’inférence de types ainsi que des performances accrues lors du travail avec des registres dans des systèmes de fichiers distribués et sous Windows. Julia 1.7 est en outre la première version du langage à fonctionner nativement sur les systèmes M1 d’Apple. Un aperçu complet de toutes les modifications se trouve dans le dépôt GitHub. Le rôle de version de support à long terme reste réservé à la série 1.6.x – concrètement, Julia 1.6.4 est la prochaine version LTS actuelle.

Plus d'articles