Modül 7-8-9-10 - Derleyici, Best Practices, Projeler ve Ekosistem
Modül 7: Derleyici Kullanımı
Section titled “Modül 7: Derleyici Kullanımı”Derleyici seçenekleri, yapılandırma dosyaları ve transform API’yi öğrenin.
Bölüm 7.1: Komut Satırı Seçenekleri
Section titled “Bölüm 7.1: Komut Satırı Seçenekleri”# Temel kullanımasc input.ts --output output.wasm
# Optimizasyonasc input.ts -O # Varsayılan optimizasyonasc input.ts -O3z # Maksimum optimizasyonasc input.ts --optimizeLevel 3 # Seviye 3asc input.ts --shrinkLevel 2 # Boyut küçültme
# Debugasc input.ts --debug # Debug bilgisiasc input.ts --sourceMap # Source map oluşturasc input.ts --sourceMap url # Source map URL ile
# Çıktı formatlarıasc input.ts --outFile out.wasm # Binary outputasc input.ts --textFile out.wat # Text format output
# Bindingsasc input.ts --bindings esm # ESM bindingsasc input.ts --bindings raw # Raw bindings
# Featuresasc input.ts --enable simd # SIMD aktifleştirasc input.ts --enable threads # Threading aktifleştirasc input.ts --enable reference-types # Reference types aktifleştirasc input.ts --disable mutable-globals # Mutable globals pasifleştir
# Runtimeasc input.ts --runtime incremental # Default runtimeasc input.ts --runtime minimal # Minimal runtimeasc input.ts --runtime stub # Stub runtime (no GC)asc input.ts --exportRuntime # Runtime export et
# Memoryasc input.ts --importMemory # Memory import etasc input.ts --initialMemory 10 # 10 sayfa (640KB)asc input.ts --maximumMemory 100 # Maksimum 100 sayfa
# Diğerasc input.ts --noAssert # Assertion'ları kaldırasc input.ts --converge # Tekrarlı optimizasyonasc input.ts --stats # İstatistik yazdırBölüm 7.2: asconfig.json Yapılandırması
Section titled “Bölüm 7.2: asconfig.json Yapılandırması”{ "extends": "./base/asconfig.json",
"entries": [ "./assembly/index.ts" ],
"options": { "target": "mvp", "module": "esm", "noEmit": false, "sourceMap": true, "optimizeLevel": 3, "shrinkLevel": 0, "converge": false, "noAssert": false, "runtime": "incremental", "importMemory": false, "exportMemory": true, "initialMemory": 256, "maximumMemory": 0, "memoryBase": 0, "tableBase": 0, "exportTable": false, "importTable": false, "exportStart": "", "binaryen": { "trapMode": "allow" } },
"targets": { "debug": { "sourceMap": true, "optimizeLevel": 0, "shrinkLevel": 0, "debug": true, "noAssert": false },
"release": { "optimizeLevel": 3, "shrinkLevel": 2, "noAssert": true, "converge": true },
"release-simd": { "optimizeLevel": 3, "shrinkLevel": 2, "noAssert": true, "enable": ["simd"] },
"debug-simd": { "sourceMap": true, "optimizeLevel": 0, "enable": ["simd"] } }}Bölüm 7.3: Transform API
Section titled “Bölüm 7.3: Transform API”import { Transform } from "assemblyscript/transform";
export default class MyTransform extends Transform { // Parsing sonrası afterParse(parser: Parser): void { console.log("Parsing tamamlandı"); }
// Program başlatma sonrası afterInitialize(program: Program): void { console.log("Program başlatıldı");
// Tüm fonksiyonları bul for (let [name, fn] of program.sources) { // ... analiz ve değişiklik } }
// Derleme sonrası afterCompile(module: Module): void { console.log("Derleme tamamlandı");
// Module manipulation // ... }}# Transform kullanasc input.ts --transform ./myTransform.tsModül 8: Portability ve Best Practices
Section titled “Modül 8: Portability ve Best Practices”Taşınabilir kod yazma ve performans optimizasyonu.
Bölüm 8.1: Portable Code
Section titled “Bölüm 8.1: Portable Code”// ✅ Portable - hem AS hem TS'te çalışırlet a: i32 = 10;let b: f64 = f64(a); // Portable conversion
// ❌ Non-portable - sadece AS'te çalışırlet c: i32 = <i32>3.14;
// Portable overflowfunction portableAdd(a: u8, b: u8): u8 { return u8(a + b); // TS: (a + b) & 0xFF}
// Portable float to intfunction portableFtoI(x: f64): i32 { return i32(x); // TS: x | 0}Bölüm 8.2: Performance Tips
Section titled “Bölüm 8.2: Performance Tips”// ✅ Hızlı - cache lengthfunction hizli(dizi: Int32Array): i32 { let n: i32 = dizi.length; let toplam: i32 = 0; for (let i: i32 = 0; i < n; i++) { toplam += dizi[i]; } return toplam;}
// ❌ Yavaş - her iteration'da lengthfunction yavas(dizi: Int32Array): i32 { let toplam: i32 = 0; for (let i: i32 = 0; i < dizi.length; i++) { // Length her seferinde toplam += dizi[i]; } return toplam;}Bölüm 8.3: Memory Patterns
Section titled “Bölüm 8.3: Memory Patterns”// Stack allocation (hızlı, küçük)function stackOrnek(): void { let buffer: Int32Array = new Int32Array(100); // Stack'de // ... kullan}
// Heap allocation (yavaş, büyük)function heapOrnek(): usize { let ptr: usize = heap.alloc(sizeof<i32>() * 100); // ... kullan heap.free(ptr); return ptr;}Modül 9: Pratik Projeler
Section titled “Modül 9: Pratik Projeler”Gerçek dünya projeleri için örnekler.
Bölüm 9.1: Görüntü İşleme
Section titled “Bölüm 9.1: Görüntü İşleme”export function grayscale( pixels: Uint8Array, width: i32, height: i32): void { for (let i: i32 = 0; i < width * height * 4; i += 4) { let r: f64 = f64(pixels[i]); let g: f64 = f64(pixels[i + 1]); let b: f64 = f64(pixels[i + 2]); let gray: u8 = u8(0.299 * r + 0.587 * g + 0.114 * b); pixels[i] = gray; pixels[i + 1] = gray; pixels[i + 2] = gray; }}Bölüm 9.2: Oyun Fiziği
Section titled “Bölüm 9.2: Oyun Fiziği”class Particle { x: f64; y: f64; vx: f64; vy: f64;
update(dt: f64, gravity: f64): void { this.vy += gravity * dt; this.x += this.vx * dt; this.y += this.vy * dt; }}
export function updateParticles( particles: Particle[], dt: f64, gravity: f64): void { for (let i: i32 = 0; i < particles.length; i++) { particles[i].update(dt, gravity); }}Bölüm 9.3: Kriptografi
Section titled “Bölüm 9.3: Kriptografi”export function crc32(data: Uint8Array): u32 { let crc: u32 = 0xFFFFFFFF; for (let i: i32 = 0; i < data.length; i++) { crc ^= u32(data[i]); for (let j: i32 = 0; j < 8; j++) { crc = (crc >>> 1) ^ (0xEDB88320 & -(crc & 1)); } } return ~crc;}Modül 10: Ekosistem ve Kaynaklar
Section titled “Modül 10: Ekosistem ve Kaynaklar”Topluluk projeleri ve kaynaklar.
Bölüm 10.1: Topluluk Paketleri
Section titled “Bölüm 10.1: Topluluk Paketleri”json-as → JSON parsingassemblyscript-regex → Regex supportas-pect → Testing frameworkasls → Language serverBölüm 10.2: Öğrenme Kaynakları
Section titled “Bölüm 10.2: Öğrenme Kaynakları”- AssemblyScript Docs: https://www.assemblyscript.org
- WebAssembly Docs: https://webassembly.org
- WasmByExample: https://wasmbyexample.dev
- GitHub: https://github.com/AssemblyScript/assemblyscript
Bölüm 10.3: Müfredat Sonuçları
Section titled “Bölüm 10.3: Müfredat Sonuçları”Modül Listesi
Section titled “Modül Listesi”| Modül | Konu |
|---|---|
| 0 | Giriş ve Hazırlık |
| 1 | Temel Sözdizimi ve Türler |
| 2 | Fonksiyonlar ve Kontrol Yapıları |
| 3 | Nesne Yönelimli Programlama |
| 4 | Standart Kütüphane |
| 5 | WebAssembly Entegrasyonu |
| 6 | İleri Seviye Özellikler |
| 7 | Derleyici Kullanımı |
| 8 | Portability ve Best Practices |
| 9 | Pratik Projeler |
| 10 | Ekosistem ve Kaynaklar |
Tebrikler! 🎉
Section titled “Tebrikler! 🎉”AssemblyScript öğrenme yolculuğunuzu tamamladınız!
Artık:
- ✅ Yüksek performanslı WebAssembly modülleri yazabilirsiniz
- ✅ JavaScript ile entegre uygulamalar geliştirebilirsiniz
- ✅ SIMD ve atomics kullanarak optimize edebilirsiniz
- ✅ Profesyonel projeler oluşturabilirsiniz
Sıradaki adım: Kendi projenizi oluşturun! 🚀