Il ya quelques jours la sortie de la nouvelle version du langage de programmation Julia 1.9 a été annoncée, qui combine des qualités telles que des performances élevées, la prise en charge de la saisie dynamique et des outils intégrés pour la programmation parallèle. La syntaxe de Julia est proche de MATLAB, avec quelques éléments empruntés à Ruby et Lisp.
Julia se distingue pour être un langage de programmation multi-plateforme et multi-paradigme avec typage dynamique Cadre de haut niveau et hautes performances pour le calcul générique, technique et scientifique, avec une syntaxe similaire à celle d’autres environnements informatiques similaires.
Principales actualités de Julia 1.9
Dans cette nouvelle version de Julia 1.9 qui est présentée, plusieurs améliorations dans le runtime/compilateur, depuis il y a eu une Réduction significative du temps de premier passage. La précompilation du package enregistre désormais le code natif dans “pkgimage”, ce qui signifie que le code généré lors de la précompilation n’aura pas besoin d’être recompilé après le chargement du package. L’utilisation du mode pkgimages peut être désactivée avec l’option « –pkgimages=no ».
Un autre des changements qui ressort est le les appels avec des arguments non spécifiques au type peuvent maintenant être optimisés via join split pour injection ou résolution statique, même s’il existe plusieurs types différents de candidats à la soumission. Cela peut améliorer les performances dans certaines situations où les types d’objets ne sont pas entièrement résolus statiquement, en résolvant statiquement les sites d’appel “@nospecialize-d” et éviter la recompilation.
Les littéraux à caractère unique prennent désormais en charge la même syntaxe que les littéraux de chaîne ; ces syntaxes peuvent représenter des séquences UTF-8 non valides, comme le permet le type Char.
En plus de cela, sous Linux et Windows, l’option «–threads=auto» essaie maintenant de déterminer le nombre de processeurs disponibles basé sur l’affinité CPU, qui est un masque généralement défini dans les environnements HPC et cloud.
L’option a été désactivée–math-mode=rapide“, au lieu de quoi il est recommandé d’utiliser la macro “@fastmath“, qui a une sémantique bien définie, en plus du paramètre “–threads» a maintenant le format «voiture | Non.[,auto|M]»où M spécifie le nombre de threads interactifs à créer.
Option ajoutée “–heap-size-hint=
La macro “@invoke” introduit dans la version 1.7 est maintenant exporté et disponible pour utilisation. En outre, utilisez maintenant la méthode “Core.Typeof(x)” au lieu de “N’importe quel” lorsque l’annotation de type pour l’argument “x” est omise. Ceci est nécessaire pour que les types passés en arguments soient traités correctement.
D’autre part, “Threads.@spawn” a maintenant un premier argument facultatif de “:default” ou “:interactive”. Une tâche interactive nécessite une réponse à faible latence et est conçue pour être courte ou fréquente. Les tâches interactives s’exécuteront sur des threads interactifs s’ils sont spécifiés lors du démarrage de Julia.
Des Autres changements notables :
- La négation de la fonction de prédicat “!f” renvoie désormais une fonction composite “(!) ∘ f” au lieu d’une fonction anonyme.
- Les fonctions de fractionnement des dimensions fonctionnent désormais sur plusieurs dimensions : “chaque tranche », « chaque ligne » et « chaque col » retourner un objet “tranches» qui permet à l’expédition de fournir des méthodes plus efficaces.
- La macro «@kwdef» a été ajouté à l’API publique.
- Correction d’un problème avec l’ordre des opérations dans “fld1”.
- Le tri est désormais toujours stable dans le temps (Redesigned QuickSort).
- Le nombre par défaut de threads BLAS est désormais égal au nombre de threads CPU sur l’architecture ARM et à la moitié du nombre de threads CPU sur les autres architectures.
- Printf : Messages d’erreur retravaillés pour les chaînes mal formées pour une meilleure lisibilité.
- Profil : Nouvelle fonction “Profile.take_heap_snapshot(file)” qui écrit un fichier au format “.heapsnapshot” basé sur JSON supporté par Chrome.
- Ajout de la prise en charge de la spécification Unicode 15.
- Les combinaisons imbriquées de tuples et de tuples de caractères nommés peuvent désormais être utilisées comme paramètres de type.
Enfin, si vous souhaitez en savoir plus, vous pouvez consulter les détails dans le lien suivant.