Je ne comprends pas comment une conversation parlant de Rust et C fini sur JS ou Go...
'C' et 'Rust' sont des languages de programmation Système, JS et Go non.
'C++' dans la moindre mesure je le considère également comme un langage de programmation système.
Ce que sont 'C' et 'C++'
'C' est un vieux language qui a fait ces preuves et qui à également montré qu'il avait de grosses faiblesses qui coute et ont couté plusieurs millions de dollars aux sociétés. ( Use after free, buffer overflow, null pointer, etc... )
'C' à une ABI stable.
'C++' a ajouté 1 élément majeur par rapport au 'C' qui est le destructeur et qui a permit de limiter la casse en libération mémoire, mécanisme 'automatisé' de gestion de mémoire.
'C++' a également apporté l'Orienté Objet (POO) qui aujourd'hui montre également ces faibles après avoir montré sa force.
'C' et 'C++' n'ont pas été pensé pour les problèmes d'aujourd'hui ( Processeurs multicoeurs, Sécurité, Ecosystème du développeur )
'C' et 'C++' ont aux moins 3 compilateurs différents!!! ( GCC, Clang, MSVC)
Ce qu'est 'Rust'
'Rust' prend le meilleur et fait une bonne cuisine de tout ça. (D'ou son nom qui veux dire 'Rouille' car l'ensemble des concepts qu'il met en oeuvre sont des concepts qui ont fait leurs preuves)
- Il autorise l'utilisation de raw pointer, d'allocation dynamique, d'alignement mémoire custom, de 'destructeur' via le trait 'Drop'.
- Son système de Ownership et Borrowing est très bien pensé. Difficile à prendre en main mais d'une puissance indiscutable.
- Il est orienté Data Oriented Design afin de répondre au problème d'aujourd'hui (Multiplication du nom de coeur par exemple) qui demande du code cache friendly (Data et Instruction).
- Il est également orienté Test Driven ( Les tests unitaires et globaux sont parties complètes du language et du compilateur! )
- Il n'autorise pas des pointeurs null dans le 'Rust' ( Dans le 'Rust' unsafe oui ) car le pointeur null est tout simplement une erreur de conception que l'on traine depuis plusieurs décenies
Null References: The Billion Dollar Mistake
- Il détecte à la compilation les dépassements mémoires, les use after free, les races conditions...
- Il est basé sur LLVM ce qui lui permet de cibler ce que cible LLVM et également d'utiliser les outils de LLVM et de profiter des optimisations que celui-ci procurent.
- Il n'a pas de garbage collector.
- Il dispose d'un gestionnaire de paquage qui nous rappelle de l'éco-système du 'C' et 'C++' est une catastrophe.
- Il n'y a que 1 seul compilateur rustc!
J'ai lu beaucoup de bétise ici.
'Rust' est stable! Son 'ABI' ne l'ai pas mais pour info C++ non plus.
'Rust' se bind avec 'C' nativement car les OS actuels sont en 'C', ne pas le faire reviendrait à une mort prématuré du language et dire que se n'est pas prétentieux car il bind 'C' montre une incompréhension totale de la réalité.
Est-ce que tous les languages qui se bind avec 'C' sont je cite "
pas assez prétentieux pour essayer de s'en passer complètement"? WTF?
Pour 'JS' NPM utilise 'Rust' et pas 'JS'... donc...
'Rust' est actuellement utilisé par et pour
- Mozilla : Moteur de rendu CSS, Firefox et autres....
- Amazon :
Outils de builds
- Google :
Projet "Fuchsia" de Google
- NPM : "Replacing C and rewriting performance-critical bottlenecks in the registry service architecture."
- Atlassian : "We use Rust in a service for analyzing petabytes of source code."
- Dropbox :
https://www.wired.com/2016/03/epic-s...-cloud-empire/
- Microsoft :
Azure IoT Edge
- RedHat :
Système de sockage de fichier Stratis
- Reddit :
Processus de commentaire
- Twitter, Electronic Arts, Unity, OVH, etc...
Liste complète ici
Partager