# 🎯 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)