web-dev-qa-db-fra.com

Comment est Rust compilé en code machine?

J'ai récemment regardé le langage de programmation Rust . Comment ça marche? Rust semble être compilé en binaires ELF ou PE (etc.), mais je n'ai pas pu trouver d'informations sur la façon de procéder? Est-il compilé dans un format intermédiaire puis compilé le par exemple avec gxx? Toute aide (ou liens) serait vraiment appréciée.

25
Dllewellyn

La phase de génération de code du compilateur Rust est principalement effectuée par LLVM . LLVM est un ensemble d'outils de construction un compilateur, notamment utilisé par le compilateur C [++] clang[++].

Tout d'abord, le compilateur Rust (comme clang, par exemple) fait tout le Rust trucs spécifiques comme le type et la vérification des emprunts; dans le en fin de compte, il génère LLVM-IR. IR signifie représentation intermédiaire et c'est ... comparable à Assembly, mais un tout petit peu plus haut niveau et surtout: indépendant de la plate-forme. Ensuite, le Rust appelle simplement ☏ LLVM et dit:

Hé mon pote, pourriez-vous prendre cet IR et générer le code machine pour la plate-forme actuelle? Ce serait fantastique ◕ ◡ ◕

À quoi répond le LLVM:

???? Bien sûr, pas de problème, nouvel ami. Voici votre code machine hautement optimisé pour [par exemple] x86_64! ♫ ♪ ♫

Ensuite, ils invitent quelques amis de plus à tout emballer dans un joli petit paquet ELF [par exemple] et à le placer magnifiquement dans le système de fichiers des utilisateurs. (et l'utilisateur est comme ...)


De telles informations peuvent être trouvées dans la FAQ officielle qui contient de toute façon beaucoup d'informations intéressantes. Pour plus de détails sur le compilateur Rust, vous pouvez lire le "Rustc Guide" . Pour cette question, le chapitre "High Level Overview " est assez intéressant.

70
Lukas Kalbertodt