Ana içeriğe geç
Programlama

wasm2go WebAssembly ikili dosyalarını doğrudan Go koduna dönüştürüyor

Öne çıkanlar

  • WebAssembly kodlarını harici bir çalışma zamanı olmadan bağımsız Go kaynak koduna dönüştürüyor.
  • amd64 ve arm64 mimarileri için optimize edilmiş assembly çıktısı üretirken diğer mimarilerde saf Go koduna geçiyor.
  • Yapılan testlerde soğuk derleme süresini 4,67 saniyeden 0,56 saniyeye indirerek 8,4 kat hızlanma sağladı.

Geliştirici goccy, WebAssembly ikili dosyalarını harici bir çalışma ortamına ihtiyaç duymadan doğrudan Go kaynak koduna çeviren wasm2go aracını yayımladı. Önceden derleme (AOT) yöntemiyle çalışan araç, üretilen kodun standart bir Go paketi gibi derlenmesini ve bağlanmasını sağlıyor. Bu sayede C ve C++ gibi dillerden WASI SDK ile derlenen büyük kütüphaneler, bir WebAssembly motorunun getirdiği ek bellek ve başlatma maliyetleri olmadan Go projelerine dahil ediliyor.

Araç, çıktı olarak amd64 ve arm64 mimarileri için SSA tabanlı özel assembly kodları üretirken diğer platformlar için saf Go kodunu yedek olarak hazırlıyor. Girdi dosyasında wasi_snapshot_preview1 çağrıları yer aldığında, sistem bu işlevleri yalnızca Go standart kütüphanesini kullanarak yerel olarak Go diline aktarıyor. Bu mimari yaklaşım sayesinde üretilen kodlar, hiçbir üçüncü taraf bağımlılığına ihtiyaç duymadan Go'nun desteklediği tüm işletim sistemlerinde sorunsuz çalışıyor.

Paylaşılan performans testlerinde, yaklaşık 13 MB boyutundaki bir SQL ayrıştırıcısı üzerinden wazero çalışma zamanı ile kıyaslama yapıldı. Yapılan ölçümlerde soğuk başlatma süresi 4,67 saniyeden 0,56 saniyeye geriledi ve kısa sorgularda 81 kata varan hızlanma elde edildi. Çağrı sınırındaki geçiş maliyeti ortadan kalktığı için çağrı başına düşen bellek tahsis miktarlarında da belirgin azalmalar kaydedildi.

Kaynak

Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.