Rust 0.8 disponible en téléchargement
L'alternative au C/C++ revient avec environ 2 200 changements

Le , par Stéphane le calme, Chroniqueur Actualités
Rust est un langage structuré en blocs avec un accent particulier mis sur la sécurité et la performance. Visuellement, il ressemble à un langage de la famille du langage C mais diffère de manière significative dans les détails syntaxiques et la sémantique. Ceci vient certainement du fait qu'il a été développé comme alternative au C/C++.

La communauté Rust, de concert avec la fondation Mozilla, annonce l'arrivée de la version 0.8 du langage ainsi qu'une mise à jour de ses outils et de son compilateur.

La version 0.8 apporte près de 2 200 modifications au langage parmi lesquelles un changement dans la syntaxe de la boucle « for » qui introduit désormais les objets dans les itérations.

Une nouvelle macro est aussi apportée aux chaînes de caractères ; « format! » ambitionne de remplacer « fmt! » pour plusieurs raisons, notamment un gain de performance. Ce changement signifierait aussi que les macros basées sur « fmt! » migreront vers « format! » rapidement.

Le runtime de Rust précédemment écrit en C++ a été réécrit en Rust afin de faciliter un nouveau sous-système E/S qui intègre les boucles d'événements E/S qui ne feront pas planter le planificateur de tâches. Le système est temporairement situé dans « std::rt::io ».

Rust 0.8 est disponible sur Windows Linux et OS X. Cette version devrait être considérée comme une version alpha et ne devrait donc pas être utilisée en environnement de production.

Télécharger Rust 0.8

Source : Mozilla

Et vous ?

Avez-vous déjà utilisé Rust ? Qu'en pensez-vous ?


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


 Poster une réponse Signaler un problème

Avatar de esperanto esperanto - Membre confirmé https://www.developpez.com
le 03/10/2013 à 10:10
Excusez-moi mais j'ai comme l'impression que dans l'esprit de certains, tout ce qui a des accolades "ressemble à du C". Soit à peu près tous les langages récents, à l'exception peut-être de Python et Ruby.
Moi ce langage me fait plus penser à Perl 6 (le nouveau, avec son typage fort), avec un usage massif des fonctionnelles (oui en plus maintenant pour être plus moderne faut dire closures...) à la Ruby. Ou au niveau de la syntaxe... d'abord un brin de Caml, et puis après tout, tiens, ça me fait penser à Go tout à coup, et justement, ça faisait un bail qu'on n'en entendait plus parler. De là à penser que les deux langages vont subir le même destin...
Un effet positif quand même : il semble que les concepteurs de langages aient enfin compris qu'entre un C/C++ qui permet de faire n'importe quoi avec les pointeurs et un langage parano à la Ada, il y a de la place pour un vrai langage compilé qui soit ni trop permissif ni pas assez. En plus il y a de la demande, comme le prouvent des projets comme GCJ (compilateur java natif): plutôt que de s'obstiner avec une machine virtuelle alors qu'on sait que 90% des utilisateurs sont sous Windows (c'est encore plus criant avec C#), plutôt que le "write once run everywhere" pourquoi ne pas promouvoir le "write once, build everywhere" comme par exemple le projet Lazarus?
Avatar de Uther Uther - Expert éminent https://www.developpez.com
le 03/10/2013 à 17:44
Je suis assez d’accord sur le fait que le Rust ne doit pas être considéré simplement comme un remplaçant du C/C++ même s'il semble tout a fait adapté pour pouvoir le faire à terme. La syntaxe a quelques points commun (accolades, opérateurs, ...) mais aussi pas mal de différences(déclarations, types de pointeurs, closures, pattern matching). Les développeur se sont légèrement inspirés de C++, Go ou Ruby. Mais si on les écoutes leurs principales références sont Erlang(pour la concurrence) et Haskell(pour le typage).

Je serais moins d'accord vis a vis de la comparaison a Go. Rust est plus orienté vers le bas niveau(gestion fine de la mémoire, GC optionnel,...)
Un langage n'a pas besoin de faire la une en permanence pour être efficace et utilisé. Go a une communauté qui ne fait pas beaucoup de bruit mais qui est plutôt active au vu de son jeune age.
La communauté autour de Rust est plus restreinte mais aussi très active ce qui est encore plus impressionnant si on considère que le langage, n'a même pas encore une syntaxe stabilisée.
Avatar de kremvax kremvax - Membre averti https://www.developpez.com
le 26/10/2013 à 15:27
Il me semble aussi que la comparaison avec C/C++ tient plus des applications visées (orientées performances) que du langage en lui-même. Même si d'après les quelques benchs que j'ai pu voir rust est encore loin d'avoir le même niveau de perfs, ça tient sans doute en partie à la jeunesse du langage.

J'ai "essayé d'essayer" rust pour faire un mini jeu, mais c'est assez chaud pour le moment, il va falloir attendre encore un moment que le langage gagne en maturité avant de voir se développer un petit écosystème de bibliothèques... J'ai l'impression que le langage continue d'évoluer assez massivement, les documentations / tutos qu'on peut trouver ça et là sont souvent périmés, l'interfaçage avec le C++ semble être encore en cours d'élaboration donc c'est pas encore le moment de se jeter dessus à corps perdu!
Avatar de Uther Uther - Expert éminent https://www.developpez.com
le 27/10/2013 à 0:49
Le langage continue encore d'évoluer lourdement. J'avais mis sur ce sujet un lien vers un article à jour mais malheureusement, les modérateurs n’apprécient pas que l'on mette des liens vers des tutoriels venant d'autre sites que developpez.com
Si tu es intéressé par le développement de jeu, il y a une communauté active qui travaille sur rust.

L’interfaçage avec le C++ ne sera probablement jamais totalement possible car le modèle objet de C++ est assez différent de celui de Rust. Par contre l’interfaçage avec le C fonctionne bien. Si on fait un wrapper C++ utilisant des extern "C", cela fonctionne.
Avatar de Hinault Romaric Hinault Romaric - Responsable .NET https://www.developpez.com
le 17/01/2014 à 14:39
Rust s’approche de sa première version stable
Mozilla publie une nouvelle préversion de son langage dérivé de C/C++

Avec Rust, Mozilla ambitionne de renvoyer dans les tiroirs les célèbres langages de programmation C et C++, en proposant un langage qui s’inspire de ce qui a fait leur succès, mais qui propose en plus une meilleure sécurité.

L'objectif de Mozilla est de « concevoir et implémenter un langage orienté objet statique, typé, sûr, concurrentiel et efficace ».

Rust a été développé à la base comme un projet autonome par Graydon Hoare, de la fondation Mozilla, en 2006. Le langage a été dévoilé publiquement en 2010 et est sorti en version 0.1 pour les « early adopters » en janvier 2012.




Mozilla vient de publier la version 0.9 du langage, qui marque probablement la dernière étape avant la publication de la version stable 1.0. Rust 0.9 apporte un lot d’améliorations, dont la possibilité pour les développeurs de choisir s’ils veulent construire des bibliothèques dynamiques ou statiques.

Les bibliothèques natives sont désormais des éléments de « première classe », ce qui permet de développer et distribuer une bibliothèque Rust sans que les bibliothèques natives ne soient incluses dans le package.

Les développeurs de Rust ont procédé à une révision complète de l’infrastructure d’E/S. Toutes les fonctionnalités d’E/S sont désormais disponibles au niveau de std::io, qui a été entièrement réécrit. À ce niveau, Rust s’enrichit de deux nouvelles bibliothèques : libgreen et libnative.

Des changements ont également été apportés à la façon dont les pointeurs sont traités.

Rust est disponible en open source pour Windows, Linux, Mac OS X et FreeBSD. La version 1.0 du langage sortira avant la fin de l’année.

Télécharger Rust 0.9

Source : notes de version

Et vous ?

Avez-vous testé Rust ? Allez-vous l’adopter ?
Avatar de codec_abc codec_abc - Membre averti https://www.developpez.com
le 17/01/2014 à 17:18
J' ai du mal à trouver des informations quant à la rétro-compatibilité de Rust avec le C/C++. (Je pense que pour le C c'est quasiment certain, mais pour le C++ j'ai des doutes) C'est pour moi une grosse différence, parce que le langage a beau être prometteur sur le papier, s'il ne peut pas utiliser toutes les librairies C/C++ disponibles à ce jour ca reste un sacré frein à son adoption.

EDIT: au vue du précédent message je crois bien que j'ai ma réponse.
Avatar de Uther Uther - Expert éminent https://www.developpez.com
le 19/01/2014 à 9:23
Citation Envoyé par Hinault Romaric Voir le message
Mozilla vient de publier la version 0.9 du langage, qui marque probablement la dernière étape avant la publication de la version stable 1.0.
En fait la prochaine version sera une 0.10 et il y aura probablement une 0.11 ensuite. A partir de la version 1.0 Rust devra gérer la compatibilité ascendante et il reste encore trop de changements incompatibles prévus pour les mois à venir.
L'équipe qui travaille sur Rust a annoncé quelle envisage de pouvoir sortir la version 1.0 de Rust vers fin 2014.

Citation Envoyé par Hinault Romaric Voir le message
Avez-vous testé Rust ? Allez-vous l’adopter ?
J'ai un peu joué avec, le principe me plait beaucoup, et je pense que je l'utiliserai pour des projets personnels lorsqu'il sera stable.

Pour le travail, je verrai si j'ai une bonne occasion de le pousser quand il sera stable, mais comme je travaille surtout sur des applications web et que les performances et la sécurité ne sont que rarement nos soucis principaux, j'en doute.

Citation Envoyé par codec_abc
J' ai du mal à trouver des informations quant à la rétro-compatibilité de Rust avec le C/C++. (Je pense que pour le C c'est quasiment certain, mais pour le C++ j'ai des doutes) C'est pour moi une grosse différence, parce que le langage a beau être prometteur sur le papier, s'il ne peut pas utiliser toutes les librairies C/C++ disponibles à ce jour ca reste un sacré frein à son adoption.
L’interfaçage avec du C marche déjà parfaitement bien et le langage a été prévu pour que ça soit très simple a mettre en œuvre. Il est tout de même conseillé de faire un wrapper en Rust pour gérer la sécurité, le code C étant considéré comme "unsafe".

Actuellement si on souhaite utiliser du code C++, il faut d'écrire un wrapper en C++ qui fournira à Rust une interface C (extern "C".

Le support direct et complet du C++ n'est pas vraiment possible car il y a des différences incompatibles dans la manière dont chaque langage gèrent les objets. A ma connaissance aucun langage ne le propose. Le D fournit un support limité de l’interfaçage avec C++ et les gens qui travaillent sur Rust envisagent de fournir quelque chose d'approchant à l'avenir, mais ça sera après Rust 1.0.
Avatar de _skip _skip - Expert éminent https://www.developpez.com
le 19/01/2014 à 9:35
Avec l'annonce récente de M# par microsoft, le D qui pourrait finalement sortir de sa grotte avec l'aide de facebook et Rust qui s'approche d'une version stable, on risque d'avoir 3 technos qui s'attaquent en même temps au même segment. Comme si tout le monde avait réalisé en même temps qu'il existait un gros vide entre le C++ et java/.Net.

Je suis globalement très enthousiaste pour Rust mais la bataille risque d'être rude.
Avatar de codec_abc codec_abc - Membre averti https://www.developpez.com
le 19/01/2014 à 12:09
Citation Envoyé par Uther
Le support direct et complet du C++ n'est pas vraiment possible et a ma connaissance aucun langage ne la propose. Le D fournit un support limité de l’interfaçage avec C++ et les gens qui travaillent sur Rust envisagent de fournir quelque chose d'approchant à l'avenir, mais ça sera après Rust 1.0.

Techniquement l’interfaçage complet et direct avec C++ n'est pas possible, cependant on peut tout a fait utiliser du code C++ à condition d'écrire un wrapper en C++ qui fournira à Rust une interface C (extern "C".
Effectivement c'est la même solution que la totalité des autres langages qui veulent s'interfacer avec du C++. Dans la pratique, vu que c'est quelque chose que je n'ai jamais fait, comment ca se passe ? J'imagine qu'il faut d'abord compiler la librairie C++ avec le compilo de son choix. Puis linker son wrapper C avec la libraire précédemment compilé. Enfin, on peut linké son exécutable (ou sa librairie) écrit en Rust avec le wrapper. Ça me semble assez lourd comme processus. En plus, je vois un problème avec les librairies en évolution. Leur API changeant régulièrement il faut réécrire le wrapper et une partie du code Rust qui y fait appel.

Citation Envoyé par _skip

Avec l'annonce récente de M# par microsoft, le D qui pourrait finalement sortir de sa grotte avec l'aide de facebook et Rust qui s'approche d'une version stable, on risque d'avoir 3 technos qui s'attaquent en même temps au même segment. Comme si tout le monde avait réalisé en même temps qu'il existait un gros vide entre le C++ et java/.Net.

Je suis globalement très enthousiaste pour Rust mais la bataille risque d'être rude.
Il me semble qu'il y ai une différence notable entre Rust, D et M#. C'est que M# doit produire du byte code tandis que D et Rust produisent du code natif. D'ailleurs on peut aussi rajouter Go à la liste des nouveaux langages ayant pour but de "remplacer" C++.
Avatar de Uther Uther - Expert éminent https://www.developpez.com
le 19/01/2014 à 17:41
Citation Envoyé par codec_abc  Voir le message
Effectivement c'est la même solution que la totalité des autres langages qui veulent s'interfacer avec du C++. Dans la pratique, vu que c'est quelque chose que je n'ai jamais fait, comment ça se passe ?

Certaines bibliothèque C++ fournissent déjà une interface compatible C. Si ce n'est pas le cas, il faudra réaliser soi même cette interface.
Le principe est assez simple : dans un programme C++ les fonctions déclarées extern "C" sont compilées avec une ABI compatible C. Elles sont donc utilisables dans les langages qui acceptent de s'interfacer avec le C.
Le prototype de ces fonctions ne doit pas utiliser des fonctionnalités qui n'existent pas en C, mais le corps de la fonction le peux.

Par exemple supposons la classe C++ suivante:
Code C++ : Sélectionner tout
1
2
3
4
5
6
7
// MaBibliotheque.h : Bibliothèque C++ 
class MaClasse { 
  public: 
    MaClasse(int x); 
    void methode1(int x); 
    int methode2(int x, int y); 
}

On va pouvoir coder (toujours avec un compilateur C++) des fonctions avec une interface C qui utilisent cet objet :
Code C++ : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// MaBibliotheque_C.cpp : Wrapper C++/C  
#include "MaBibliotheque.h" 
  
extern "C" { 
  void* MaClasse_new(int x){ 
      return new MaClasse(x); 
  } 
  
  void MaClasse_methode1(void* object, int x){ 
      ((MaClasse*)object)->methode1(x); 
  } 
  
  int MaClasse_methode2(void* object, int x, int y){ 
      return ((MaClasse*)object)->methode2(x,y); 
  } 
}

Puis utiliser ça dans un programme rust:
Code Rust : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
#[link(name = "MaBibliotheque_C")] 
extern { 
    fn MaClasse_new(libc::c_int) -> libc::c_void; 
    fn MaClasse_methode1(ptr : libc::c_void, x : libc::c_int); 
    fn MaClasse_methode2(ptr : libc::c_void, x : libc::c_int, y : libc::c_int) -> int; 
} 
  
fn main () { 
    /* code utilisant les fonctions */ 
}


Citation Envoyé par codec_abc  Voir le message
Il me semble qu'il y ai une différence notable entre Rust, D et M#. C'est que M# doit produire du byte code tandis que D et Rust produisent du code natif. D'ailleurs on peut aussi rajouter Go à la liste des nouveaux langages ayant pour but de "remplacer" C++.

On ne sait pour le moment pas grand chose de M# (d'ailleurs ce n'est certainement pas son nom officiel), mais du peu que j'ai lu, il semblerait qu'il soit bien compilé en code natif.
D et surtout Go sont moins orientés vers les systèmes et la sécurité que Rust : pas de protection contre les accès concurrents aux données, pointeurs null, gestion mémoire, GC obligatoire ou très difficilement évitable ...
Contacter le responsable de la rubrique Accueil