Quand je vois la liste des difficultés que tu dresses pour cette réécriture, [...] je ne veux absolument pas passer à Rust
C'est vrai que les borrowing rules sont assez contraignantes pour la conception d'une application. En contrepartie, elles offrent un certain nombre de garanties à l'exécution, ce qui élimine toute une classe de bugs potentiels (et de failles de sécurité).
Je crois que le truc qui m'a le plus choqué, c'est le paragraphe «Infinité indéfinie» qui explique que Rust fait de la merde mais à la fin, la conclusion, c'est que «les garanties de sûreté de Rust sont très fortes»
Oui, à part ce bug (de LLVM), en pratique c'est vraiment le cas. Quand j'ai retravaillé sur un projet C++ après, ça m'a fait tout drôle d'avoir un segfault à l'exécution.
un langage qui [...] me refile une météorite
Pour nuancer, note que le comportement est également indéfini en C++:
#include <iostream>
void infinite(int value) {
while (value != 0) {
if (value != 1) {
value -= 1;
}
}
}
int main() {
infinite(42);
std::cout << "end" << std::endl;
return 0;
}
[^] # Re: Gnirehtet réécrit en Rust
Posté par ®om (site web personnel) . En réponse au journal Du reverse tethering, en Rust. Évalué à 7. Dernière modification le 26 septembre 2017 à 08:46.
C'est vrai que les borrowing rules sont assez contraignantes pour la conception d'une application. En contrepartie, elles offrent un certain nombre de garanties à l'exécution, ce qui élimine toute une classe de bugs potentiels (et de failles de sécurité).
Oui, à part ce bug (de LLVM), en pratique c'est vraiment le cas. Quand j'ai retravaillé sur un projet C++ après, ça m'a fait tout drôle d'avoir un segfault à l'exécution.
Pour nuancer, note que le comportement est également indéfini en C++:
Sans optimisations :
Avec optimisations :
blog.rom1v.com