Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Sortie de Julia 1.1 RC 1
Le langage dynamique à haute performance retravaille sa gestion des exceptions empilées

Le , par dourouc05

42PARTAGES

16  0 
Le développement de Julia, langage de programmation dynamique de haute performance, se poursuit. La version 1.0 devait être la base du langage pour les versions à venir sans perte de rétrocompatibilité : aucune fonctionnalité ne peut disparaître d’ici à Julia 2.0. Cette garantie est prévue pour faciliter l’utilisation à plus grande échelle du langage.

Julia 1.1 apporte peu de nouvelles fonctionnalités, mais celles-ci devraient simplifier la vie des développeurs. Tout d’abord, les exceptions peuvent désormais s’empiler : si le code lance une exception pendant le traitement d’une exception, les deux sont gardées dans une pile. Auparavant, la première exception était écrasée par la seconde. Cela permettra de déboguer plus facilement le code, en remontant directement à la cause première. La méthode catch_stack est disponible pour accéder à cette pile ; pour le moment, l’implémentation est expérimentale et l’API pourrait changer. L’opérateur ~ est souvent utilisé en probabilités pour indiquer qu’une variable aléatoire suit une certaine distribution de probabilité ; Julia dispose de cet opérateur depuis un certain temps, mais celui-ci ne pouvait pas s’appliquer sur des vecteurs : le compilateur ne comprenait pas la forme .~, ce qui est maintenant le cas.

Les méthodes findmin, findmax et findall ne retournaient pas toujours le même type pour indiquer quels éléments correspondent à la requête. Désormais, quand la recherche se fait dans une matrice ou un tableau d’ordre supérieur, ces méthodes renvoient des objets CartesianIndex. Ce changement casse légèrement la compatibilité avec le code existant, mais il a été estimé qu’il aurait dû être effectué pour la 1.0 et que c’était donc un défaut.

La bibliothèque standard s’est enrichie d’une série de méthodes. Par exemple, splitpath pour convertir un chemin en ses différentes composantes ; isnothing pour déterminer si l’argument est nothing ou non (par exemple, une donnée absente) ; eachrow, eachcol et eachslice pour itérer efficacement sur des morceaux de tableaux ; les systèmes BSD disposent d’une série de méthodes pour les détecter et, au besoin, adapter le code.

Voir aussi : la liste complète des changements.

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de wolinn
Membre éprouvé https://www.developpez.com
Le 06/02/2019 à 13:42
J'étais un peu sceptique sur les conséquences du typage dynamique sur les performances, mais à la lecture de la thèse de Bezanson et de la doc, c'est quand même assez prometteur.
Et en fait, là où on veut de la performance, on peut typer statiquement, et si le compilateur est bon, on devrait retomber sur des performances comparables au C et C++, au moins en théorie...
Donc j'investis un peu sur ce langage, même s'il n'est pas encore assez mature pour que je l'utilise pour des logiciels importants- il s'en faut probablement encore de quelques années.
Je vois, par exemple, qu'il y a encore des sections importantes toujours considérées comme expérimentales.
En attendant, je peux avoir des applications sur des petits projets.
0  0 
Avatar de dourouc05
Responsable Qt & Livres https://www.developpez.com
Le 07/02/2019 à 0:05
Citation Envoyé par wolinn Voir le message
Je vois, par exemple, qu'il y a encore des sections importantes toujours considérées comme expérimentales.
À ce niveau-là, qu'est-ce qui te manque le plus ? De mon côté, c'est tout ce qui concerne la programmation parallèle, leur modèle multifil n'est pas encore fin prêt (même si l'interface a l'air plus que raisonnable, surtout avec @threads : https://docs.julialang.org/en/v1/bas...reads.@threads).
0  0 
Avatar de wolinn
Membre éprouvé https://www.developpez.com
Le 07/02/2019 à 8:22
Oui, c'est ça. C'est quand même important pour un langage qui cible des applications scientifiques et techniques gourmandes en calcul.
Lancer des files d'exécution est moins coûteux que lancer des processus, suivant le problème on a besoin des deux possibilités.
Par ailleurs, il est indiqué dans la doc que Julia n'est pas encore totalement "thread safe" (cas de plantage à la commutation entre taches).
0  0