Go, Memory Arenas'ı Neden Reddetti? Orta Yol Stratejisi Tehlikede
Go, Memory Arenas önerisini API parçalanması riski yüzünden rafa kaldırdı; bu karar performans tavanını sınırlıyor ve orta yol stratejisini tehdit ediyor.
Go ekibi, Dan Scales tarafından üç yıl önce önerilen Memory Arenas özelliğini süresiz olarak rafa kaldırdı. Arenalar, çöp toplayıcının (GC) tek tek nesneleri takip etmesi yerine büyük bir bellek havuzunu bump-pointer ile doldurup tamamını birden serbest bırakmaya izin veriyordu; tokenizer'lar ve yüksek verimli parser'lar gibi kısa ömürlü nesnelerin milyonlarcasını üreten iş yükleri için ciddi bir performans kazanımı vaat ediyordu.
Karar, görünürdeki 'use-after-free' güvenlik kaygılarından çok, 'bulaşıcı API' probleminden kaynaklandı. Arena'dan performans kazanmak için fonksiyon imzalarına ekstra bir *arena.Arena parametresi eklemek gerekiyordu; bu da mevcut interface'leri tamamen kırıyor ve ekosistemi 'standart dünya' ile 'arena dünyası' olarak ikiye bölüyordu. Go ekibi, context.Context'in yayılımından çıkardığı dersle bu parçalanmayı kabul edilemez buldu.
Bu karar, Go'nun sadeliği ham performansa tercih ettiğini açıkça gösteriyor. Ancak bu, Go'yu riskli bir konuma itiyor: Python ve TypeScript gibi yüksek seviyeli diller performans açığını kapatırken, Rust ve Zig gibi sistem dilleri geliştirici verimliliğini artırıyor. Go, elle bellek yönetimi gibi köklü bir performans sıçraması olmadan bu sıkışmanın ortasında kalabilir ve zamanla bulut altyapısının COBOL'u haline gelebilir.