Compilation pipeline
- Dart kursu
- Uzman
- Ders 7/47
- 5 dk
Dart compilation pipeline'ını öğrenirsin.
Compilation pipeline
Compilation pipeline, Dart kaynak kodunun makine koduna veya çalıştırılabilir biçime dönüşme aşamalarıdır. Kaynak önce tokenize edilir, sonra parser tarafından AST'ye (soyut sözdizimi ağacı) çevrilir. AST, Kernel denilen ara biçime (IR) derlenir.
Kernel, backend'lere gönderilir: dart2js web için, dart native (AOT) için. Her backend hedef platforma göre kod üretir. Bu akış, aynı kaynak kodun birden çok platforma derlenmesini sağlar. Her aşama bir öncekinin çıktısını tüketir.
Kernel ve backend
Kernel, Dart kodunun platformdan bağımsız ara biçimidir (intermediate representation). .dill dosyası olarak serialize edilebilir. Tüm backend'ler Kernel'ı tüketir; bu sayede frontend bir kez yazılır, birden çok hedef desteklenir.
Backend'ler: dart2js (JavaScript), dart2wasm (WebAssembly), dart native (AOT makine kodu) ve VM (JIT). Her backend kendi kod üretim stratejisini kullanır. Kernel, dilin tek bir 'doğrulanmış' biçimidir.
Uygulama Pipeline phase sınıfı
Bir Phase sınıfı tanımla: final String name; final String output; Phase(this.name, this.output); alan ve kurucu. String describe() => '$name → $output'; metodu. main içinde final p = Phase('Parse', 'AST'); yarat; print(p.describe()); ile yazdır.
Başlangıç kodu
void main() {
// Phase sınıfını tanımla (name, output; describe metodu)
// bir Phase yarat; describe() yazdır
}Örnek çözüm
class Phase {
final String name;
final String output;
Phase(this.name, this.output);
String describe() => '$name → $output';
}
void main() {
final p = Phase('Parse', 'AST');
print(p.describe());
}Beklenen çıktı
Parse → AST
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Compilation pipeline'ın ana aşamalarından biri nedir?
- Yalnızca çöp toplama
- Yalnızca paket indirme
- Yalnızca UI render
- AST'ye parse etme Doğru cevap
Açıklama: kaynak kodun AST'ye parse edilmesi pipeline'ın temel aşamalarındandır.
2 Pipeline aşaması
final phase = '____';
print(phase);
final phase = 'kernel';
print(phase);
Açıklama: kernel, AST'den sonra üretilen ara biçimdir.
3 Pipeline aşamalarını eşleştir
| Kavram | Anlamı |
|---|---|
Tokenize |
Sözcük akımı |
Parse |
AST üretimi |
Kernel |
Ara biçim (IR) |
Backend |
Hedef kod üretimi |