Developpez.com

Télécharger gratuitement le magazine des développeurs, le bimestriel des développeurs avec une sélection des meilleurs tutoriels

Rust 1.1 disponible en version stable avec la bêta de Rust 1.2
Le langage de programmation de Mozilla améliore de 32% le temps de compilation

Le , par Hinault Romaric, Responsable .NET
Les développeurs responsables du développement du langage de programmation Rust viennent d’annoncer la publication de la version 1.1, moins d’un mois et demi après la sortie de la première version stable de Rust.

Cette première itération de la branche 1.0 se concentre sur l’amélioration des performances de la plateforme. Rust 1.1 améliore de 32% le temps de compilation par rapport à Rust 1.0 (tel que mesurer par bootstrapping).

Des améliorations ont également été apportées aux messages d’erreurs lors de la compilation. Une grande partie des erreurs de compilation dispose désormais d’explications étendues qui s’affichent lorsqu’on clique sur le drapeau « -- ».

En dehors de ces améliorations, Rust 1.1 apporte de nouvelles fonctionnalités intéressantes, dont :

  • la disponibilité en version stable de la nouvelle API « std::fs » : cette fonctionnalité rend stable un grand nombre d’extensions pour les API du système de fichiers. Ce qui permet, par exemple, de compiler le gestionnaire de packages Cargo sur Rust ;
  • support de musl : il est désormais possible de cibler musl sur Linux. Les binaires générés de cette façon sont liés statiquement et n’ont aucune dépendance ;
  • l’intégration de cargo rustc : cette fonctionnalité permet de générer des packages Cargo en passant un drapeau pour invoquer rustc.


La sortie de cette version s’accompagne de la publication de la bêta de Rust 1.2, conformément au cycle de développement du langage de programmation.

Rust 1.2 bêta est disponible en téléchargement avec ses outils. L’amélioration des performances est également au centre de cette version. Grâce aux optimisations qui ont été apportées à cette dernière, sa vitesse de compilation est améliorée de 30% par rapport à Rust 1.1. La compilation pour Cargo est également plus rapide de 18%.

Le gestionnaire de packages du langage a bénéficié de plusieurs autres améliorations de performances.

Rust 1.2 bêta marque la première étape pour l’intégration de la prise en charge de MSVC (Microsoft Visual C). Selon les développeurs du langage, cela représente un grand pas pour la prise en charge de Windows et rend plus facile la liaison entre le code Rust et le code compilé en utilisant la chaine de compilation native.

Rust 1.2 sera publié en version stable dans six semaines, avec la version bêta de Rust 1.3.




À titre de rappel, Rust est un langage de programmation compilé, multiparadigme (orienté objet, fonctionnel et procédural) qui tire parti des langages fonctionnels comme Haskell et ML, du langage orienté objet C++ et bien plus.

Le but de Mozilla est de mettre à la disposition des développeurs « un langage orienté objet statique, typé, sûr, concurrentiel et efficace ». Selon la fondation Mozilla, il s’agit d’un nouveau langage de programmation visant à rendre plus facile le développement des systèmes fiables et efficaces.

Sur le site du projet, on peut lire en guise d’introduction que « Rust est un langage de programmation système qui fonctionne incroyablement rapidement, empêche presque toutes les erreurs de segmentation, et garantit la sécurité des threads. »

Ce qui rend Rust différent des autres langages de programmation est son système de type, selon Mozilla. Le langage fournit la sécurité et la commodité des langages modernes, tout en maintenant l’efficacité et le contrôle de bas niveau des langages C et C++.

Le langage de Mozilla semble disposer de plusieurs caractéristiques intéressantes. Mais, sont-elles suffisantes pour permettre à celui-ci de s’imposer dans l’écosystème de l’IT ?

Télécharger Rust 1.1 et Rust 1.2 bêta

Source : Blog Rust

Et vous ?

Avez-vous testé le langage de programmation Rust ? Qu’en pensez-vous ?

A-t-il du potentiel pour se faire une place devant les ténors ?

Allez-vous adopter ce langage ?


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de Crejak Crejak - Membre à l'essai https://www.developpez.com
le 01/07/2015 à 16:02
Je connaissais le langage depuis la 0.9 (fin 2014) et je m'y suis remis après la sortie de la 1.0. C'est vrai qu'au début j'étais un peu sceptique mais une fois qu'on a compris la logique du compilateur, c'est vraiment un plaisir de l'utiliser. Quand par exemple le slogan dit "empêche presque toutes les erreurs de segmentation", c'est vrai ! Venant des langages C / C++ où les segfaults sont un véritable calvaire, et malheureusement assez fréquentes, Rust permet, en forçant à s'adapter au compilateur, de coder de telle sorte qu'il n'y ait jamais de pointeurs invalides, de buffer overflow... Et c'est vraiment très agréable qu'une fois notre code compilé, on est (quasiment) sûr qu'il ne plantera pas.
Cependant, le fait qu'il soit exigeant n'apporte pas que du bon. La gestion des chaînes de caractères par exemple est particulièrement tordue ^^. Mais encore une fois, quand on a compris comment ça marche, on peut faire de réeles économies de mémoire et de calculs (au prix de quelques heures passées sur la doc ).

A-t-il du potentiel pour se faire une place devant les ténors ?
Je pense que Rust a encore un peu de chemin à faire (beaucoup d'éléments de la bibliothèque standard sont marqués `unstable` par exemple, et le compilateur peut être encore largement optimisé), cependant je trouve que ce langage a un réel potentiel et peut être comparé aux "grands" langages compilés comme le C. Un point important est que Rust est un langage multi-paradigme et permet de coder de plusieurs façons différentes (fonctionnelle, orientée objet avec les traits/enums/structs...).
Un autre éléments valorisant ce langage est la mise à disposition d'outils permettant de compiler et de gérer ses projets simplement. Le logiciel cargo, fourni avec Rust sur le site (il me semble), est en effet un gestionnaire de projet complet. En le couplant avec un éditeur de texte (j'utilise personnellement Atom, sorti en 1.0 très récemment, qui compte déjà plusieurs plugins concernant Rust), on a un environnement de développement multi-plateformes et complet.

Allez-vous adopter ce langage ?
Comme je l'ai dit, j'ai déjà adopté ce langage et il est devenu un de mes outils principaux de développement. Dès que j'ai une idée de projet, un petit `cargo new` et c'est parti ! Alors je ne peux que vous encourager à le tester, d'autant que des tutoriels existent pour démarrer : doc.rust-lang.org/index.html.
Avatar de Max Lothaire Max Lothaire - Membre averti https://www.developpez.com
le 01/07/2015 à 16:12
Avez-vous testé le langage de programmation Rust ? Qu’en pensez-vous ?
Je l'ai testé. Certains aspects de la syntaxe m'ont un peu perturbé.
Par exemple :
Code : Sélectionner tout
1
2
3
4
5
fn carre (x: i32) -> i64 
{
    x * x  // sans le ' ; '
}
qui serait une écriture recommandée en lieu et place du traditionnel << return x*x; >> que je trouve plus lisible.

Mais c'est surtout Cargo, l'outil de gestion de projet, que j'apprécie énormément (téléchargement automatique de dépendance, etc)

A-t-il du potentiel pour se faire une place devant les ténors ?

Allez-vous adopter ce langage ?
Ce qui fait le succès des autres langages, notamment le c et le c++, c'est le nombre de bibliothèques et de frameworks existants. (merci de me corriger si j'ai dit une bêtise)
J'attends de voir un ce qu'il y aura comme api graphiques par exemple.
Avatar de ParseCoder ParseCoder - Membre habitué https://www.developpez.com
le 01/07/2015 à 16:15
Je n'ai pas encore codé avec ce langage mais il a l'air très intéressant. Il n'y a que les life time que je trouve un peu déroutant. Je n'arrive pas à me rendre compte si cela apporte un supplément de sémantique intéressant lorsqu'on lit le code, ou si ça permet seulement d'aider le compilo au prix d'un alourdissement du code.
Si quelqu'un a pratiqué suffisamment, je suis intéressé par son point de vue.
Merci.
Avatar de unoomad unoomad - Membre du Club https://www.developpez.com
le 01/07/2015 à 16:17
Citation Envoyé par Max Lothaire Voir le message
Je l'ai testé. Certains aspects de la syntaxe m'ont un peu perturbé.
Par exemple :
Code : Sélectionner tout
1
2
3
4
5
fn carre (x: i32) -> i64 
{
    x * x  // sans le ' ; '
}
qui serait une écriture recommandée en lieu et place du traditionnel << return x*x; >> que je trouve plus lisible.
Moi au contraire je préfère sans le return c'est ce que je suis habitué a faire en Ruby chacun ses préférences .
Avatar de Uther Uther - Expert éminent https://www.developpez.com
le 01/07/2015 à 17:21
Citation Envoyé par Max Lothaire Voir le message
Je l'ai testé. Certains aspects de la syntaxe m'ont un peu perturbé.
Par exemple x * x // sans le ' ; ' qui serait une écriture recommandée en lieu et place du traditionnel return x*x; que je trouve plus lisible.
Le cas que tu cites n'est qu'une conséquence d'une propriété plus générale : touts les blocs qui ne se terminent pas par ";" retournent une valeur. Si cette propriété est déroutante dans les fonction où on a l'habitude de faire "return", elle prend tout son intérêt dans les autres types de blocs comme les "if" ou les closures, ... ou l'on a besoin d'une syntaxe plus légère.

Par exemple cela permet de faire:
Code : Sélectionner tout
1
2
let x = if x>0 {x} else {0};
let mut power= iter.map(|&x| {x * x});
Utiliser "return" dans une fonction est considéré comme tout à fait correct.
Avatar de psykokarl psykokarl - Membre confirmé https://www.developpez.com
le 01/07/2015 à 22:39
Citation Envoyé par Uther Voir le message
Le cas que tu cites n'est qu'une conséquence d'une propriété plus générale : touts les blocs qui ne se terminent pas par ";" retournent une valeur. Si cette propriété est déroutante dans les fonction où on a l'habitude de faire "return", elle prend tout son intérêt dans les autres types de blocs comme les "if" ou les closures, ... ou l'on a besoin d'une syntaxe plus légère.

Par exemple cela permet de faire:
Code : Sélectionner tout
1
2
let x = if x>0 {x} else {0};
let mut power= iter.map(|&x| {x * x});
Utiliser "return" dans une fonction est considéré comme tout à fait correct.
Autant le fait d'oublier un ";" me fait redouter un return non désirés (les pires des erreur de programmation sont celles qui sont syntaxiquement correctes...), autant l'avantage sur l’opérateur ternaire dans le cas de if ou de switch me parait évident en terme de lisibilité.
Pour les closures je ne suis pas convaincu, pour peu qu'elle se complexifient. L'idéal étant pour moi étant de garder les return obligatoire pour les fonction. Assez pratique pour retourner une ligne à l'arrache sans avoir a commenter ce qui suit...
Avatar de Max Lothaire Max Lothaire - Membre averti https://www.developpez.com
le 02/07/2015 à 0:02
Citation Envoyé par Uther Voir le message
Le cas que tu cites n'est qu'une conséquence d'une propriété plus générale : touts les blocs qui ne se terminent pas par ";" retournent une valeur. Si cette propriété est déroutante dans les fonction où on a l'habitude de faire "return", elle prend tout son intérêt dans les autres types de blocs comme les "if" ou les closures, ... ou l'on a besoin d'une syntaxe plus légère.

Par exemple cela permet de faire:
Code : Sélectionner tout
1
2
let x = if x>0 {x} else {0};
let mut power= iter.map(|&x| {x * x});
Utiliser "return" dans une fonction est considéré comme tout à fait correct.
Je n'y avais pas pensé.
Du coup ça devient plus lisible qu'un
Code : Sélectionner tout
x = y==2 ? 4 : 1
Le return fonctionne tout à fait dans les fonctions, mais c'est considéré comme << poor style >> d'après la doc.
Après, ce n'est qu'un détail.
Avatar de psykokarl psykokarl - Membre confirmé https://www.developpez.com
le 02/07/2015 à 3:26
Citation Envoyé par Max Lothaire Voir le message
Je n'y avais pas pensé.
Du coup ça devient plus lisible qu'un
Code : Sélectionner tout
x = y==2 ? 4 : 1
Le return fonctionne tout à fait dans les fonctions, mais c'est considéré comme << poor style >> d'après la doc.
Après, ce n'est qu'un détail.
Si ce n'était que pour l'exemple simple de Uther, l’intérêt vis à vis de l’opérateur ternaire est quasi nul et de mon point de vue, ce n'est pas qu'une question de "poor style" ou de recommandation.

Si on compare
Code : Sélectionner tout
x = (x > 20) ? "geant" : (x > 15) ?  "grand" : (x > 10) ? "moyen" : (x > 5) ? "petit" : "minscule"
à
Code : Sélectionner tout
x = if (x > 20) "geant" elseif (x > 15) "grand" elseif (x > 10)  "moyen" elseif (x > 5) ? "petit" else "minscule"
Les deux expressions sont aussi faciles à lire mais la seconde est plus facile à manipuler (shunter une condition pour tester le comportement, ajouter une clause, générer du code dynamique)

C'est cette tendance à vouloir imposer un style qui fait que je n'adopterai jamais python en dépit de ses qualités.

A mon avis
Code : Sélectionner tout
x = if(rouge) x+=1 if(vert) x+=2 if(bleu) x+=4
dans le cadre d'expression courte

ou
Code : Sélectionner tout
1
2
3
4
x = if(rouge) x+=1 
    if(vert) x+=2 
    if(bleu) x+=4
    ...
dans le cadre d'expression longue

restent plus lisible, plus facilement shuntable que
Code : Sélectionner tout
1
2
3
4
x = if(rouge) x+=1 
        if(vert) x+=2 
            if(bleu) x+=4
                ....
parce que les deux premières me rappellent que je pensais a une variable complexe, calculée via une structure "linéaire" alors que pour la troisième, je ne peux pas savoir si il s'agit d'une variable complexe ou une variable alternative avant de lire le code.

Même délire avec les return
Code : Sélectionner tout
1
2
3
4
5
if(rouge) /*return*/ x+=1; 
if(vert) return  x+=2; 
if(bleu) return  x+=4;
...
return  x+=32;
De mon point de vue, ce n'est pas qu'une question de style dans le sens pour faire joli. Il y a une recherche d'efficience derrière...
Avatar de ParseCoder ParseCoder - Membre habitué https://www.developpez.com
le 02/07/2015 à 9:13
Très franchement je ne crois pas que l'aspect syntaxique d'un langage soit le plus important. C'est important, mais les fonctionnalités du langage le sont encore plus et l'intérêt de Rust est évidemment ailleurs que dans sa syntaxe.
Avatar de Uther Uther - Expert éminent https://www.developpez.com
le 02/07/2015 à 9:27
Citation Envoyé par psykokarl Voir le message
Autant le fait d'oublier un ";" me fait redouter un return non désirés (les pires des erreur de programmation sont celles qui sont syntaxiquement correctes...), autant l'avantage sur l’opérateur ternaire dans le cas de if ou de switch me parait évident en terme de lisibilité.
Pour les closures je ne suis pas convaincu, pour peu qu'elle se complexifient. L'idéal étant pour moi étant de garder les return obligatoire pour les fonction. Assez pratique pour retourner une ligne à l'arrache sans avoir a commenter ce qui suit...
C'est ce que je m'étais aussi dit au début mais en fait il n'y a pas de risque car si on ne met pas le ";" le bloc a pour type celui de la valeur retournée, alors que si on met un ";" le bloc est du type vide.
Si on se trompe on aura une erreur de type parfaitement claire.

Citation Envoyé par Max Lothaire Voir le message
Le return fonctionne tout à fait dans les fonctions, mais c'est considéré comme << poor style >> d'après la doc.
Après, ce n'est qu'un détail.
Bizarre, je l'ai peut-être loupé mais il me semblait bien qu'il n'y avait rien de tel dans les guidelines.

Citation Envoyé par psykokarl Voir le message
Si on compare
Code : Sélectionner tout
x = (x > 20) ? "geant" : (x > 15) ?  "grand" : (x > 10) ? "moyen" : (x > 5) ? "petit" : "minscule"
à
Code : Sélectionner tout
x = if (x > 20) "geant" elseif (x > 15) "grand" elseif (x > 10)  "moyen" elseif (x > 5) ? "petit" else "minscule"
Les deux expressions sont aussi faciles à lire mais la seconde est plus facile à manipuler (shunter une condition pour tester le comportement, ajouter une clause, générer du code dynamique)
Pour être exact la syntaxe correcte en Rust serait :
Code : Sélectionner tout
x = if x > 20 {"geant"} else if x > 15 {"grand"} else if x > 10  {"moyen"} else if x > 5 {"petit"} else {"minscule"}
Rust a choisi de rendre les accolades obligatoires, ce qui a rendu les parenthèses inutiles autour de l'expression de test.
Offres d'emploi IT
Développeur Web FULL-STACK
VACALIANS GROUP - Languedoc Roussillon - SETE (34)
RESPONSABLE WEB ANALYTICS F/H
VACALIANS GROUP - Languedoc Roussillon - SETE (34)
Développeur WEB PHP F/H
VACALIANS GROUP - Languedoc Roussillon - SETE (34)

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique Accueil