• [^] # Re: Petite question à ceux qui "baignent" encore dans le C

    Posté par . En réponse au journal Vulnérabilités multiples dans sudo-rs. Évalué à 4.

    Il y aurait probablement du unsafe même si le démonstrateur de correction mémoire était parfait pour gérer tout ce qui est hors périmètre de Rust, le bas niveau avec lequel il interagit non ?

    Genre pour interfacer avec une lib C par essence unsafe, un autre langage dont le modèle mémoire est totalement différent et pas modélisé ou pour faire des pilotes avec une mémoire qui n'a pas du tout de concept d'ownership. "Unsafe Rust" liste deux raisons dans son intro

    Unsafe Rust exists because, by nature, static analysis is conservative. When the compiler tries to determine whether or not code upholds the guarantees, it’s better for it to reject some valid programs than to accept some invalid programs.

    Ça c'est celle que tu cites, le compilateur n'est parfois pas assez malin (et le sera ptete toujours, cf. le problème de l'arrêt) mais ça pourra sans doute à terme gérer quand même bien des cas ...

    Another reason Rust has an unsafe alter ego is that the underlying computer hardware is inherently unsafe. If Rust didn’t let you do unsafe operations, you couldn’t do certain tasks. Rust needs to allow you to do low-level systems programming, such as directly interacting with the operating system or even writing your own operating system. Working with low-level systems programming is one of the goals of the language.

    Ça c'est la deuxième, gérer des trucs qui sont par essence pas couvertes par le modèle de Rust aux interfaces. Là l'intérêt de unsafe est de bien marquer les endroits ou c'est le cas et de les minimiser, cacher derrière des interfaces propres. Mais on peut faire sale aussi bien évidemment !