100 bin satırlık TypeScript'i Rust'a taşımak: Claude Code ile gerçek bir portlama hikâyesi
(blog.vjeux.com/2026)Eski Facebook mühendisi Christopher Chedeau (Vjeux), Pokemon Showdown savaş motorunu (yaklaşık 100 bin satır TypeScript) Claude Code kullanarak Rust'a portladığı bir deneyi paylaştı.
Projenin hedefi
- Pokemon savaş yapay zekasını eğitmek için yüksek hızlı bir oracle (referans sistem) kurmak
- Mevcut TypeScript uygulaması → fazla yavaş (milyonlarca savaş simülasyonu mümkün değil)
- Hedef dil: Rust (yüksek performans) → ancak kendisinin Rust deneyimi sıfır
Başlıca sonuçlar
- 1 ayda (gerçek çalışma süresi yaklaşık 2~4 hafta) yaklaşık 100 bin satırlık port tamamlandı
- Yaklaşık 5.000 commit üretildi
- Çalışma hızı 3,5 kat arttı
- Diferansiyel test sonuçlarında eşleşme oranı %99,96 (2 milyon rastgele savaş bazında)
- Kalan %0,04'ün orijinal TS kodundaki hatalardan kaynaklandığı tahmin ediliyor
Başarının temel stratejisi
- Diferansiyel test (differential testing) kullanımı
- TS orijinali ile Rust sürümünü aynı anda çalıştırıp sonuçları karşılaştırma
- Uyuşmazlık örneklerinde log'ları Claude'a göstererek düzeltme isteme
- Rust sözdizimini neredeyse hiç bilmeden bile doğrulama yapılabilmesi
Claude'un yaşadığı başlıca zorluklar
- Tek tek dosyaları portlamada başarılı ↔ dosyalar arası entegrasyonda sık sorun yaşandı
- Örn: aynı kavramı (
move) farklı struct'lar olarak tanımlaması
- Örn: aynı kavramı (
- Context window sınırı → ara özetleme sürecinde önemli bilgi kaybı
- “Daha iyi” hale getirme eğilimi → açık “satır satır portlama” talimatını görmezden gelip refactoring denemesi → çok sayıda hataya yol açması
- Optimizasyon isteği → planlar çok iyi görünse de gerçek performans artışı neredeyse yoktu (bazıları hatta daha yavaştı)
İlginç workflow hilesi
- Claude'un kullanıcı onayı istemesini otomatikleştirme
- AppleScript ile birkaç saniyede bir otomatik Enter girişi → 24 saat gözetimsiz çalışma
- (Güvenlik riski var ama tek seferlik oracle amacı için göze alındı)
Yapay zeka kodlama araçlarının bugünkü durumu (değerlendirme)
- Mekanik dönüşüm ve büyük ölçekli portlama işleri → çok güçlü
- Performans optimizasyonu, mimari tasarım gibi daha üst düzey işler → hâlâ yetersiz
- Hacker News tartışması
- Şüpheci görüş: bakımı imkânsız, “sadece derlenen” kod
- Savunan görüş: diferansiyel test ile yeterince güvenilir olabilir + insana kıyasla ciddi zaman tasarrufu sağlar
Pratikte çıkarılan 3 ders
- Titiz bir otomatik test sistemi şart (diferansiyel test olmadan başarısızlık olasılığı çok yüksek)
- Açık ve dar kapsamlı talimatlar en iyi sonucu veriyor (“satır satır portla” O, “iyileştir” X)
- Yapay zeka sadece bir araç → geliştiricinin hâlâ problem teşhisi, soru tasarımı ve yönün korunmasını üstlenmesi gerekiyor
→ Rust'ı hiç bilmeyen birinin 100 bin satırlık kodu bir ay içinde pratik olarak kullanılabilir seviyeye taşıdığı bu örnek, hem yapay zeka ile kodlamanın işe yararlılığını gösteren hem de sınırlarını açıkça ortaya koyan temsili bir deney oldu.
1 yorum
Bu, test case yazmanın her derde deva olmadığını gözden kaçırıyor. Sadece input ve output'un doğru olması her şey değil. Sonuçta 100 bin satırın yeniden gözden geçirilmesi gerekecek.