# 🎯 Definição > [!Abstract] Definição > Rust utiliza o modelo de compilação **Ahead-of-Time (AOT)**. Isso significa que o código-fonte é traduzido pelo compilador (`rustc`) diretamente para código de máquina (binário executável) **antes** do programa ser distribuído ou executado. # 📝 Notas ## 1. Portabilidade do Executável Diferente de linguagens interpretadas (como Python) ou que dependem de uma Máquina Virtual (como Java/C#), um programa Rust compilado é um arquivo binário independente. - **Vantagem:** Você pode enviar o executável para outra pessoa e ela poderá rodá-lo sem precisar instalar o compilador Rust ou qualquer runtime adicional. ## 2. Performance e Otimização Como a compilação acontece antes da execução, o compilador pode gastar tempo realizando otimizações agressivas no código. - O código resultante é altamente eficiente, pois já está na linguagem nativa do processador (instruções de CPU). - Não há o "overhead" de tradução durante a execução (como ocorre no JIT - Just-In-Time). ## 3. Comparação de Modelos | Modelo | Linguagens | Funcionamento | Dependência | | :--- | :--- | :--- | :--- | | **AOT (Compilada)** | Rust, C, C++ | Traduz tudo antes de rodar. | Nenhuma (apenas o binário). | | **Interpretada** | Python, Ruby | Traduz linha por linha ao rodar. | Precisa do Interpretador. | | **JIT (VM)** | Java, C# | Traduz para bytecode e depois para nativo. | Precisa da VM (JVM/.NET). | ## 4. O papel do `rustc` Embora usemos o [[Cargo para Rust]] no dia a dia, por trás dele está o `rustc`, o compilador que transforma seus arquivos `.rs` em executáveis. - No Windows: Gera um `.exe`. - No Linux/macOS: Gera um arquivo binário (ELF ou Mach-O). # 🔗 Conceitos relacionados - [[Linguagem Rust]] - [[Cargo para Rust]] - [[Segurança de Memória em Rust]] # 📚 Referências - [Introduction - The Rust Programming Language (The Book)](https://doc.rust-lang.org/book/ch01-01-installation.html) - [Ahead-of-time compilation - Wikipedia](https://en.wikipedia.org/wiki/Ahead-of-time_compilation)