Bu siteyi kullanarak Gizlilik Politikası'nı ve Çerez Politikası'nı kabul etmiş olursunuz.
Kabul et
Tekno TürkiyeTekno Türkiye
  • Anasayfa
  • Teknoparklar
    Teknoparklar
    Teknoparklar, bilimsel ve teknolojik çalışmaların yapıldığı, Ar-Ge projelerinin geliştirildiği ve yenilikçi şirketlerin bulunduğu özel alanlardır. Üniversitelerle işbirliği içerisinde olan bu teknoparklar, genellikle üniversite kampüsleri içerisinde…
    Daha Fazla Göster
    En Trend Haberler
    Teknopark Başarısı Nasıl Ölçülür Örnek Projeler ve Etkileri
    Teknopark Başarısı Nasıl Ölçülür? Örnek Projeler ve Etkileri
    13 Kasım 2025
    Teknoparkların Yerli ve Yabancı Yatırımcılara Sağladığı Avantajlar
    Teknoparkların Yerli ve Yabancı Yatırımcılara Sağladığı Avantajlar
    18 Ocak 2024
    Teknoparkta İş Deneyimi Kazanma Rehberi
    Teknoparkta İş Deneyimi Kazanma Rehberi
    18 Ocak 2024
    Son Haberler
    AR-GE Projelerinde Teknoloji Hazırlık Seviyesi (TRL) Nedir? 9 Seviye Açıklaması
    21 Temmuz 2026
    Yazılımcılar İçin Teknopark Uzaktan Çalışma Yasası ve Teknopark Muafiyetleri
    12 Aralık 2025
    Girişimciler İçin Vergi Cenneti: Teknopark Vergi Avantajları ve SGK Avantajları (2025 Rehberi)
    12 Aralık 2025
    Teknoloji Transfer Ofisi (TTO) Nedir? Girişimcilere Hangi Destekleri Sağlar?
    12 Aralık 2025
  • Startup
    Startup
    Startup, genellikle yeni bir ürün veya hizmet sunan ve sürdürülebilir bir iş modeli üzerine kurulan genç bir şirket veya girişimdir. Bu tür girişimler, genellikle hızlı…
    Daha Fazla Göster
    En Trend Haberler
    Growth Hacking Nedir? Bütçesiz Büyümenin 7 Yaratıcı Yolu
    Growth Hacking Nedir? Bütçesiz Büyümenin 7 Yaratıcı Yolu
    3 Ocak 2026
    KOSGEB Girişimcilik Teşvikleri
    KOSGEB Girişimcilik Teşvikleri
    18 Ocak 2024
    MVP nedir? MVP geliştirme süreci ve aşamaları
    MVP Nedir? Başarılı Ürün İçin 7 Kritik Adım
    17 Temmuz 2026
    Son Haberler
    Platform Engineering Nedir? Yazılım Teslimatını Hızlandıran 7 Güçlü Uygulama
    24 Temmuz 2026
    FinOps Nedir? Bulut Maliyetini Azaltan 7 Güçlü Strateji
    23 Temmuz 2026
    SaaS Metrikleri: Başarı İçin 9 Güçlü Hesaplama
    23 Temmuz 2026
    Yapay Zeka Ajanları: İşletmeler İçin 10 Güçlü Kullanım Alanı
    23 Temmuz 2026
  • Savunma Sanayi
    Savunma Sanayi
    Geleceğin Yatırım Fırsatı Savunma sanayisi, bir ülkenin askeri ihtiyaçlarını karşılamak için üretilen, geliştirilen ve satılan ürün ve hizmetleri kapsayan bir sektördür. Bu alandaki yatırımlar, hem…
    Daha Fazla Göster
    En Trend Haberler
    Milli Teknoloji Hamlesinin Ekonomi Üzerindeki Etkileri
    Milli Teknoloji Hamlesinin Ekonomi Üzerindeki Etkileri
    18 Ocak 2024
    Savunma Sanayiinde Yenilikçi Yaklaşımlar
    Savunma Sanayiinde Yenilikçi Yaklaşımlar
    17 Ocak 2024
    Savunma Sanayiinde Yüksek Teknoloji İhtiyacı ve Yerli Çözümler
    Savunma Sanayiinde Yüksek Teknoloji İhtiyacı ve Yerli Çözümler
    17 Ocak 2024
    Son Haberler
    Robotik Sistemlerin Savunma Sanayinde Kullanım Alanları
    12 Aralık 2025
    Milli ve Yerli Savunma Sanayi Projeleri
    12 Aralık 2025
    F110 Motoru Üretimi: Türk Savunma Sanayiinin Yeni Hedefleri ve Planları
    20 Ocak 2024
    ASELSAN’dan Yeni Müjde: ASELFLIR-400 İçin Yapılan İlk Teslimat Detayları
    18 Ocak 2024
  • Tekno Blog
    Tekno BlogDaha Fazla Göster
    SBOM nedir
    SBOM Nedir? Yazılım Güvenliği İçin 11 Kritik Avantaj
    5 Ağustos 2026
    bellek güvenli programlama dilleri
    Bellek Güvenli Programlama Dilleri: 10 Kritik Avantaj
    5 Ağustos 2026
    Cyber Resilience Act nedir ve AB yazılım güvenliği gereksinimleri nelerdir
    Cyber Resilience Act Nedir? AB Yazılım ve Donanım Güvenliği Rehberi
    5 Ağustos 2026
    AI Gateway nedir ve çoklu yapay zekâ model trafiği nasıl yönetilir
    AI Gateway: Çoklu Model Trafiğini Tek Noktadan Yönetme Mimarisi
    5 Ağustos 2026
    Data Clean Room nedir ve kurumlar ham verileri paylaşmadan nasıl ortak analiz yapar
    Data Clean Room: Ham Veriyi Paylaşmadan Birlikte Analiz Etme Mimarisi
    5 Ağustos 2026
  • AR-GE
Arama
Technology
  • Advertise with us
  • Newsletters
  • Deal
Health
  • Provega Bilişim
  • Proje Danışmanlık
Entertainment
  • Provega Bilişim
  • Proje Danışmanlık
© 2024 Tekno Türkiye. Her hakkımız saklıdır.
Okuma: WebAssembly ve WASI: Tarayıcıdan Edge’e Taşınabilir Yazılım Mimarisi
Paylaş
Giriş Yap
Bildirim Daha Fazla Göster
Tekno TürkiyeTekno Türkiye
  • Teknoparklar
  • Tekno Blog
  • Startup
  • Savunma Sanayi
  • Firmalar
Arama
  • Tekno Türkiye
    • Firmalar
    • Teknoparklar
    • Savunma Sanayi
    • AR-GE
  • Startup
  • Tekno Blog
    • Dijital Dönüşüm
    • Finans
    • Havacılık ve Uzay
    • İmalat
    • İnovasyon
    • Sağlık
    • Teknoloji
    • Yazılım
Mevcut bir hesabınız var mı? Giriş Yap
Bizi Takip Edin
  • Provega Bilişim
  • Proje Danışmanlık
© 2024 Tekno Türkiye. Her hakkımız saklıdır.
Tekno Türkiye > Blog > Tekno Blog > Yazılım > WebAssembly ve WASI: Tarayıcıdan Edge’e Taşınabilir Yazılım Mimarisi
YazılımTeknoloji

WebAssembly ve WASI: Tarayıcıdan Edge’e Taşınabilir Yazılım Mimarisi

admin
Son güncelleme: 2026/08/05 at 1:53 AM
admin
Paylaş
38 minimum okunma
WebAssembly nedir WASI ve Component Model nasıl çalışır
WebAssembly kodu tarayıcı, sunucu ve edge ortamlarında çalışırken WASI dosya, ağ ve sistem arayüzlerini kontrollü biçimde sunar.
Paylaş

WebAssembly nedir sorusu, yalnızca tarayıcıda yüksek performanslı uygulama geliştirenlerin değil; sunucu, edge, eklenti sistemi ve güvenli kod çalıştırma platformları oluşturan ekiplerin de karşısına çıkıyor.

WebAssembly veya kısa adıyla Wasm, programlama dillerinin derlenebileceği taşınabilir ve düşük seviyeli bir ikili komut formatıdır. Kod doğrudan belirli bir işletim sistemi veya işlemci için hazırlanmak yerine WebAssembly çalışma zamanının anlayacağı bir biçime dönüştürülür.

Bu yaklaşım sayesinde Rust, C, C++, Go, JavaScript, Python ve başka dillerden oluşturulan uygun WebAssembly çıktıları; tarayıcıda, sunucuda, edge platformunda veya bir uygulamanın içine gömülü çalışma zamanında çalıştırılabilir.

Ancak WebAssembly tek başına bir işletim sistemi arayüzü sunmaz. Bir WebAssembly modülünün dosya sistemine, ağ bağlantısına, saate, rastgele sayı üreticisine veya çevre değişkenlerine nasıl erişeceği çalışma ortamı tarafından belirlenir.

Tarayıcı içerisindeki WebAssembly kodu JavaScript ve Web API’leri aracılığıyla dış dünyayla iletişim kurabilir. Tarayıcı dışındaki uygulamalarda ise bu ihtiyacı standartlaştırmak amacıyla WASI, yani WebAssembly System Interface geliştirilmiştir.

WASI; dosya, ağ, saat, rastgele sayı, komut satırı ve HTTP gibi sistem özelliklerini dil ve işletim sisteminden bağımsız arayüzler hâlinde tanımlar. Uygulamaya hangi özelliklerin açılacağı çalışma zamanı tarafından kontrol edilebilir.

Modern WebAssembly ekosisteminin diğer önemli parçası Component Model yapısıdır. Component Model, farklı dillerde hazırlanmış WebAssembly bileşenlerinin ortak ve tür güvenli arayüzler üzerinden birleştirilmesini amaçlar.

Bu rehberde WebAssembly’nin çalışma modelini, WASI’nin neden gerekli olduğunu, Module ile Component arasındaki farkı, WIT arayüzlerini, sandbox sınırlarını, WASI 0.1–0.2–0.3 sürümlerini ve üretim ortamında dikkat edilmesi gereken noktaları inceleyeceğiz.

Önemli: WebAssembly’nin sandbox içinde çalışması, çalıştırılan kodun otomatik olarak güvenilir olduğu anlamına gelmez. Çalışma zamanına verilen dosya, ağ, CPU, bellek ve dış servis yetkileri ayrıca sınırlandırılmalıdır.

Table of Contents

Toggle
  • İçindekiler
  • WebAssembly Nedir?
    • WebAssembly’nin Temel Hedefleri
    • WebAssembly Bir Programlama Dili midir?
  • Wasm Ne Anlama Gelir?
    • Yaygın Dosya Türleri
  • WebAssembly Neden Geliştirildi?
    • Temel Gereksinimler
  • WebAssembly Nasıl Çalışır?
    • Doğrulama Aşaması
    • Derleme Aşaması
  • WebAssembly Mimarisinin Temel Bileşenleri
  • WebAssembly Module Nedir?
    • Bir Module İçinde Bulunabilecek Yapılar
    • Module Tek Başına Dosyaya Erişebilir mi?
  • Wasm ile WAT Arasındaki Fark
    • Basit WAT Örneği
  • Host ve Guest Nedir?
    • Host
    • Guest
    • Güven Sınırı
  • WebAssembly Imports ve Exports
    • Import
    • Export
    • Arayüz Sözleşmesi
  • Linear Memory Nedir?
    • Özellikleri
    • Memory-Safe Dil Kullanmak Gerekir mi?
  • Tarayıcıda WebAssembly
    • Tarayıcı Akışı
    • Tarayıcı Kullanım Örnekleri
  • WebAssembly JavaScript’in Yerini Alır mı?
  • WASI Nedir?
    • WASI’nin Tanımlayabildiği İşlevler
  • WASI Neden Gereklidir?
  • WASI Sürümleri
  • WASI 0.1
    • Güçlü Yönleri
    • Sınırlamaları
  • WASI 0.2
    • Temel Özellikler
    • WASI 0.2 Asenkron Yapısı
  • WASI 0.3
    • Yeni Temel Yapılar
    • Async Func
    • Stream
    • Future
    • WASI 0.3 Dünyaları
    • WASI 0.2’den 0.3’e Geçilmeli mi?
  • WebAssembly Component Model Nedir?
    • Temel Hedefleri
    • Örnek
  • WIT Nedir?
    • Desteklenen Tür Örnekleri
  • Interface, World ve Package Nedir?
    • Interface
    • World
    • Package
  • WebAssembly Module ile Component Arasındaki Fark
  • Canonical ABI Nedir?
    • Neden Gereklidir?
  • WASI ve Capability Tabanlı Güvenlik
    • Örnek Yetkiler
    • Varsayılan Olarak Kapalı Yaklaşımı
  • WASI Dosya Sistemi Erişimi
    • Preopened Directory
    • Yetki Örnekleri
    • Risk
  • WASI Ağ Erişimi
    • Ağ Yetkisinde Kontrol Edilecekler
  • WebAssembly Runtime Nedir?
    • Runtime’ın Görevleri
  • Yaygın WebAssembly Runtime’ları
    • Wasmtime
    • Runtime Desteği Aynı mı?
  • Hangi Diller WebAssembly Üretebilir?
    • Dil Seçerken
  • WebAssembly Kullanım Alanları
  • Tarayıcı Uygulamalarında WebAssembly
    • Görüntü Düzenleme
    • Video İşleme
    • Oyunlar
    • Bilimsel Uygulamalar
  • Serverless ve Edge Ortamlarında WebAssembly
    • Uygulamalar
  • WebAssembly ile Güvenli Eklenti Sistemleri
    • Wasm Eklenti Modeli
    • Örnek Yetkiler
  • WebAssembly ve Mikroservis Mimarisi
    • Muhtemel Avantajlar
    • Mikroservisin Yerini Alır mı?
  • WebAssembly ve Yapay Zekâ
    • Kullanım Örnekleri
    • Her Model Wasm İçinde Çalışır mı?
  • WebAssembly ve IoT
    • Avantajlar
    • Dikkat Edilecekler
  • WebAssembly ile Container Arasındaki Fark
    • WebAssembly Container’ların Yerini Alır mı?
  • WebAssembly ile JVM Arasındaki Fark
  • WebAssembly ile Native Binary Farkı
    • Native Binary
    • WebAssembly
    • Hangisi Daha Hızlıdır?
  • WebAssembly Performansı
    • Performansı Etkileyen Faktörler
    • Host–Guest Sınır Maliyeti
    • Başlatma Süresi
  • WebAssembly Güvenliği
    • Güvenlik Katmanları
    • Kaynak Limitleri
  • WebAssembly Güvenlik Riskleri
    • Runtime Güvenlik Açıkları
    • Geniş Host Yetkileri
    • Güvensiz Host Fonksiyonları
    • Kaynak Tüketimi
    • Tedarik Zinciri
    • Hassas Verinin Linear Memory’de Kalması
    • Side-Channel Saldırıları
  • WebAssembly’nin Sınırlamaları
    • Ekosistem Olgunluğu
    • İşletim Sistemi Özellikleri
    • Hata Ayıklama
    • Runtime Uyumluluğu
    • Binary Boyutu
    • İşlemci Özellikleri
    • Standartların Gelişmesi
  • Örnek WIT Arayüzü
    • Bu Arayüz Ne Söylüyor?
  • Örnek WebAssembly Eklenti Mimarisi
    • WIT Sözleşmesi
    • Host Yetkileri
    • Dağıtım Süreci
  • WebAssembly Uygulama Yol Haritası
    • Aşama 1: Kullanım Senaryosunu Belirleyin
    • Aşama 2: Kaynak Dili ve Araç Zincirini Seçin
    • Aşama 3: WASI Sürümünü Belirleyin
    • Aşama 4: WIT Arayüzünü Tasarlayın
    • Aşama 5: Capability Modeli Oluşturun
    • Aşama 6: Kaynak Limitlerini Uygulayın
    • Aşama 7: Gözlemlenebilirlik Ekleyin
    • Aşama 8: Tedarik Zincirini Koruyun
  • WebAssembly Runtime Seçim Kriterleri
    • Standart Desteği
    • Performans
    • Güvenlik
    • Entegrasyon
  • WebAssembly Kontrol Listesi
  • WebAssembly Kullanımında Sık Yapılan Hatalar
  • WebAssembly ve WASI İçin Güvenilir Kaynaklar
  • WebAssembly ve WASI Hakkında Sık Sorulan Sorular
    • WebAssembly nedir?
    • Wasm ne demektir?
    • WebAssembly bir programlama dili midir?
    • WebAssembly hangi dillerle yazılır?
    • WebAssembly yalnızca tarayıcıda mı çalışır?
    • WASI nedir?
    • WASI neyin kısaltmasıdır?
    • WASI 0.3 nedir?
    • WASI 0.3 ne zaman yayımlandı?
    • WASI 0.2 hâlâ kullanılabilir mi?
    • WASI 0.1 eski mi?
    • Component Model nedir?
    • WIT nedir?
    • WebAssembly Module ile Component aynı mı?
    • WebAssembly güvenli midir?
    • WebAssembly virüs çalıştırabilir mi?
    • WebAssembly dosya sistemine erişebilir mi?
    • WebAssembly internete bağlanabilir mi?
    • WebAssembly JavaScript’ten hızlı mı?
    • WebAssembly JavaScript’in yerini alır mı?
    • WebAssembly container’ların yerini alır mı?
    • WebAssembly ile Docker birlikte kullanılır mı?
    • WebAssembly Kubernetes’te çalışır mı?
    • Wasmtime nedir?
    • WasmEdge nedir?
    • Linear memory nedir?
    • Host ve guest ne demektir?
    • WebAssembly plugin sistemi için uygun mu?
    • WebAssembly edge computing için uygun mu?
    • WebAssembly mobil uygulamada kullanılabilir mi?
    • WebAssembly’de GPU kullanılabilir mi?
    • WebAssembly kodu nasıl debug edilir?
    • WebAssembly uygulamasına ne kadar bellek verilmeli?
    • WebAssembly artifact’i imzalanmalı mı?
    • Yeni proje WASI 0.2 mi 0.3 mü kullanmalı?
    • WebAssembly kullanmaya nereden başlanmalı?
  • WebAssembly ve WASI Sonuç

İçindekiler

  • WebAssembly Nedir?
  • Wasm Ne Anlama Gelir?
  • WebAssembly Neden Geliştirildi?
  • WebAssembly Nasıl Çalışır?
  • WebAssembly Mimarisinin Bileşenleri
  • WebAssembly Module Nedir?
  • Wasm ile WAT Arasındaki Fark
  • Host ve Guest Nedir?
  • Imports ve Exports
  • Linear Memory Nedir?
  • Tarayıcıda WebAssembly
  • JavaScript ile İlişkisi
  • WASI Nedir?
  • WASI Neden Gereklidir?
  • WASI Sürümleri
  • WASI 0.1
  • WASI 0.2
  • WASI 0.3
  • Component Model Nedir?
  • WIT Nedir?
  • Interface, World ve Package
  • Module ile Component Arasındaki Fark
  • Canonical ABI Nedir?
  • Capability Tabanlı Güvenlik
  • Dosya Sistemi Erişimi
  • Ağ Erişimi
  • WebAssembly Runtime Nedir?
  • Yaygın WebAssembly Runtime’ları
  • Hangi Diller WebAssembly Üretebilir?
  • WebAssembly Kullanım Alanları
  • Tarayıcı Uygulamaları
  • Serverless ve Edge
  • Güvenli Eklenti Sistemleri
  • Mikroservis ve Bileşen Mimarisi
  • Yapay Zekâ ve Veri İşleme
  • IoT ve Gömülü Sistemler
  • WebAssembly ile Container Farkı
  • WebAssembly ile JVM Farkı
  • Native Binary ile Farkı
  • WebAssembly Performansı
  • WebAssembly Güvenliği
  • Güvenlik Riskleri
  • WebAssembly’nin Sınırlamaları
  • Örnek WIT Arayüzü
  • Örnek Eklenti Mimarisi
  • WebAssembly Uygulama Yol Haritası
  • Runtime Seçim Kriterleri
  • WebAssembly Kontrol Listesi
  • Sık Yapılan Hatalar
  • Sık Sorulan Sorular

WebAssembly Nedir?

WebAssembly, stack tabanlı sanal makine için tasarlanan taşınabilir bir ikili komut formatıdır.

Bir programlama dilinde yazılan kod, desteklenen derleyici ve araç zinciri aracılığıyla çoğunlukla .wasm uzantılı bir dosyaya dönüştürülür.

Bu çıktı doğrudan işletim sistemi tarafından değil, WebAssembly desteği bulunan bir tarayıcı veya runtime tarafından çalıştırılır.

WebAssembly’nin Temel Hedefleri

  • Farklı işlemci ve işletim sistemlerinde taşınabilir çalışmak
  • Kompakt bir ikili format kullanmak
  • Hızlı yükleme ve derleme sağlamak
  • Sandbox içinde kontrollü çalışma sunmak
  • Birden fazla programlama diline hedef olmak
  • Tarayıcı ve tarayıcı dışı ortamlarda kullanılabilmek

WebAssembly Bir Programlama Dili midir?

WebAssembly çoğunlukla doğrudan uygulama yazmak için kullanılan yüksek seviyeli bir programlama dili değildir.

Rust, C veya başka bir dilde yazılan kaynak kodun derlendiği hedef format olarak düşünülmelidir.

Wasm Ne Anlama Gelir?

Wasm, WebAssembly kelimesinin kısaltılmış biçimidir. Bir baş harf kısaltması olmadığı için bütün harflerle “WASM” yazılması zorunlu değildir.

Yaygın Dosya Türleri

Dosya Açıklama
.wasm Çalıştırılabilir ikili WebAssembly formatı
.wat İnsan tarafından okunabilen metinsel temsil
.wit Component Model arayüzlerini tanımlayan WIT dosyası

WebAssembly Neden Geliştirildi?

Web tarayıcılarında yıllarca temel programlama dili JavaScript oldu. JavaScript genel web uygulamaları için güçlü bir ekosistem sunsa da bazı iş yüklerinde başka dillerdeki mevcut kodların tarayıcıya taşınması veya yüksek hesaplama performansı elde edilmesi gerekiyordu.

Temel Gereksinimler

  • Oyun motorlarını tarayıcıda çalıştırmak
  • Görüntü ve video işleme yapmak
  • CAD ve 3D tasarım uygulamaları sunmak
  • Mevcut C ve C++ kodlarını web ortamına taşımak
  • Kriptografi ve sıkıştırma işlemlerini hızlandırmak
  • Diller için ortak taşınabilir bir hedef oluşturmak

Zamanla WebAssembly’nin taşınabilir ve sandbox tabanlı yapısının tarayıcı dışındaki platformlarda da kullanılabileceği görüldü.

WebAssembly Nasıl Çalışır?

Genel çalışma süreci şu şekildedir:

  1. Geliştirici kaynak kodunu desteklenen bir dilde yazar.
  2. Derleyici kodu WebAssembly bytecode biçimine dönüştürür.
  3. Ortaya .wasm modülü veya Component Model bileşeni çıkar.
  4. Tarayıcı ya da runtime dosyayı doğrular.
  5. Kod yorumlanır veya yerel makine koduna derlenir.
  6. Host tarafından verilen yetkilerle çalıştırılır.
  7. Çıktılar import ve export arayüzleri üzerinden aktarılır.

Doğrulama Aşaması

Runtime, kodun geçerli WebAssembly yapısına uyup uymadığını kontrol eder. Türler, talimatlar ve bellek erişim yapısı doğrulanır.

Derleme Aşaması

Runtime, WebAssembly kodunu yorumlayabilir, önceden derleyebilir veya çalışma zamanında yerel makine koduna dönüştürebilir.

WebAssembly Mimarisinin Temel Bileşenleri

Bileşen Görevi
Kaynak kod Rust, C, Go veya başka dilde yazılan uygulama
Derleyici Kaynak kodu WebAssembly çıktısına dönüştürür
Module WebAssembly talimatları, fonksiyonları ve bellek tanımları
Component Yüksek seviyeli tür ve arayüzlere sahip birleştirilebilir Wasm birimi
Host WebAssembly kodunu çalıştıran tarayıcı veya runtime
Guest Host içinde çalışan WebAssembly programı
Imports Guest’in host veya başka bileşenden istediği işlevler
Exports Guest’in dış dünyaya sunduğu işlevler
Linear memory WebAssembly programının kullanabildiği doğrusal bellek alanı
WASI Tarayıcı dışı sistem özellikleri için standart arayüzler
WIT Component Model arayüzlerinin tanımlandığı dil

WebAssembly Module Nedir?

WebAssembly Module, fonksiyonlar, türler, tablolar, bellek tanımları ve import-export bilgileri içeren temel WebAssembly ikili birimidir.

Bir Module İçinde Bulunabilecek Yapılar

  • Fonksiyon tanımları
  • Fonksiyon türleri
  • Global değerler
  • Linear memory
  • Function table
  • Imported fonksiyonlar
  • Export edilen fonksiyonlar
  • Başlangıç fonksiyonu
  • Veri segmentleri

Module Tek Başına Dosyaya Erişebilir mi?

Hayır. Host gerekli fonksiyonları veya WASI arayüzlerini sağlamazsa modül dosya, ağ ve sistem kaynaklarına erişemez.

Wasm ile WAT Arasındaki Fark

Wasm, makine tarafından verimli biçimde işlenmesi amaçlanan ikili formattır.

WAT, WebAssembly Text Format ifadesinin kısaltmasıdır ve WebAssembly yapısının insanlar tarafından okunabilen metinsel gösterimidir.

Basit WAT Örneği

(module
  (func $topla (param $a i32) (param $b i32) (result i32)
    local.get $a
    local.get $b
    i32.add
  )
  (export "topla" (func $topla))
)

Bu örnek iki adet 32 bit tam sayıyı toplayan ve dışarıya topla adıyla sunan bir fonksiyon tanımlar.

Host ve Guest Nedir?

Host

WebAssembly kodunu çalıştıran ortamdır. Tarayıcı, Wasmtime runtime’ı veya uygulamaya gömülü başka bir motor host olabilir.

Guest

Host tarafından çalıştırılan WebAssembly modülü veya bileşenidir.

Güven Sınırı

Guest, host tarafından açıkça verilmemiş sistem kaynaklarına otomatik olarak erişememelidir. Ancak host yanlış yetkilendirilirse guest geniş yetkilere sahip olabilir.

WebAssembly Imports ve Exports

Import

WebAssembly kodunun dışarıdan beklediği fonksiyon, bellek, tablo veya sistem arayüzüdür.

Örneğin guest, ekrana log yazdırmak için host tarafından sağlanan bir fonksiyonu import edebilir.

Export

WebAssembly kodunun dışarıdaki uygulamalara sunduğu fonksiyon veya kaynaktır.

Örneğin görüntüyü işleyen resize_image fonksiyonu host uygulamasına export edilebilir.

Arayüz Sözleşmesi

Module seviyesinde çoğunlukla düşük seviyeli sayılar ve bellek işaretçileri kullanılır. Component Model ise string, record ve result gibi yüksek seviyeli türleri standartlaştırmayı amaçlar.

Linear Memory Nedir?

Linear memory, WebAssembly programına sunulan sürekli bayt dizisi biçimindeki bellek alanıdır.

Özellikleri

  • Guest tarafından indeksler üzerinden kullanılır.
  • Belirli sınırlar içinde büyütülebilir.
  • Host ve guest arasında veri aktarımında kullanılabilir.
  • Sandbox dışındaki rastgele host belleğine doğrudan erişim sağlamaz.

Memory-Safe Dil Kullanmak Gerekir mi?

WebAssembly sandbox’ı host belleğini korumaya yardımcı olur. Ancak C veya C++ gibi güvenli olmayan bir dilden derlenen program kendi linear memory alanı içerisinde buffer overflow ve use-after-free benzeri mantık hataları yaşayabilir.

Tarayıcıda WebAssembly

Tarayıcı, WebAssembly modülünü indirir, doğrular, derler ve JavaScript ortamıyla birlikte çalıştırır.

Tarayıcı Akışı

  1. Web sayfası JavaScript dosyasını yükler.
  2. JavaScript, .wasm dosyasını getirir.
  3. Tarayıcı modülü doğrular ve derler.
  4. Import edilen fonksiyonlar sağlanır.
  5. Modül örneği oluşturulur.
  6. Export edilen fonksiyonlar çağrılır.

Tarayıcı Kullanım Örnekleri

  • Görüntü düzenleme
  • Video ve ses işleme
  • 3D oyunlar
  • CAD uygulamaları
  • Bilimsel hesaplama
  • Şifreleme
  • Belge dönüştürme
  • Emülatörler

WebAssembly JavaScript’in Yerini Alır mı?

WebAssembly ve JavaScript çoğunlukla birbirinin alternatifi değil, tamamlayıcısıdır.

JavaScript kullanıcı arayüzünü, DOM işlemlerini ve web uygulaması kontrol akışını yönetebilir. WebAssembly ise hesaplama açısından yoğun veya başka dillerden taşınan modülleri çalıştırabilir.

Alan JavaScript WebAssembly
DOM erişimi Doğrudan Web API’leriyle Çoğunlukla host veya JavaScript üzerinden
Kaynak dil JavaScript ve TypeScript Birçok derlenebilir dil
Dosya formatı Metin tabanlı Kompakt ikili format
Yoğun hesaplama İş yüküne göre yeterli olabilir Bazı iş yüklerinde avantaj sağlayabilir
Web dışı kullanım Node.js gibi ortamlarda Runtime ve WASI üzerinden

WASI Nedir?

WASI, WebAssembly System Interface ifadesinin kısaltmasıdır.

WebAssembly programlarının tarayıcı dışındaki çalışma ortamlarında işletim sistemine benzer özellikleri taşınabilir ve kontrollü arayüzlerle kullanmasını sağlar.

WASI’nin Tanımlayabildiği İşlevler

  • Standart giriş ve çıkış
  • Komut satırı argümanları
  • Çevre değişkenleri
  • Dosya ve dizin işlemleri
  • Duvar ve monotonic saat
  • Güvenli rastgele sayı üretimi
  • TCP ve UDP ağ işlemleri
  • DNS çözümleme
  • HTTP istemci ve sunucu arayüzleri

WASI Neden Gereklidir?

Temel WebAssembly standardı bilinçli olarak dosya sistemi, ağ veya işletim sistemi çağrılarını tanımlamaz.

Bu sayede WebAssembly yalnızca Unix veya Windows yapısına bağımlı kalmaz. Ancak gerçek uygulamaların dış dünyayla iletişim kurabilmesi için standart arayüzlere ihtiyaç duyulur.

WASI bu ihtiyacı aşağıdaki hedeflerle karşılamaya çalışır:

  • Taşınabilir sistem arayüzleri
  • Runtime’lar arasında uyumluluk
  • En az ayrıcalıklı erişim
  • Dil bağımsız bileşen geliştirme
  • Dosya ve ağ yetkilerinin host tarafından kontrolü

WASI Sürümleri

Sürüm Durum Temel Yapı
WASI 0.1 Legacy POSIX benzeri module arayüzleri
WASI 0.2 Stable Component Model ve WIT tabanlı arayüzler
WASI 0.3 Stable Component Model içinde yerel async, stream ve future

WASI 0.1

WASI 0.1, eski nesil modül tabanlı ve POSIX benzeri sistem arayüzü yaklaşımıdır.

Güçlü Yönleri

  • Uzun süredir kullanılıyor olması
  • Birçok runtime ve araç tarafından desteklenmesi
  • Basit komut satırı uygulamalarında yaygın kullanılması

Sınırlamaları

  • Component Model tabanlı değildir.
  • Diller arası yüksek seviyeli tür paylaşımı sınırlıdır.
  • Modern bileşen birleştirme yapısını sunmaz.
  • Yeni projeler için uzun vadeli hedef değildir.

WASI 0.2

WASI 0.2, WASI’yi Component Model ve WIT arayüzleri üzerine taşıyan kararlı sürümdür.

Temel Özellikler

  • Component Model tabanı
  • WIT ile dil bağımsız arayüz tanımı
  • Diller arası bileşen birleştirme
  • wasi:cli/command dünyası
  • wasi:http/proxy dünyası
  • Dosya, ağ, saat ve random arayüzleri

WASI 0.2 Asenkron Yapısı

WASI 0.2, asenkron giriş ve çıkış işlemlerini wasi:io paketindeki pollable ve stream kaynaklarıyla modelledi.

Bu yapı host ile doğrudan iletişimde çalışsa da çok sayıda bileşenin zincir hâlinde birleştirildiği senaryolarda karmaşıklık oluşturabiliyordu.

WASI 0.3

WASI 0.3, Component Model içerisine yerel asenkron programlama yetenekleri ekler.

Yeni Temel Yapılar

  • async func
  • stream<T>
  • future<T>

Async Func

WIT içerisinde fonksiyonların asenkron olduğu açıkça tanımlanabilir. Runtime zamanlama ve bekletme işlemlerini yönetir.

Stream

Verilerin bileşen sınırlarından parça parça ve asenkron biçimde aktarılmasını sağlar.

Future

Gelecekte tamamlanacak tek bir değeri veya işlemin sonucunu temsil eder.

WASI 0.3 Dünyaları

  • wasi:cli/command
  • wasi:http/service
  • wasi:http/middleware

WASI 0.2’den 0.3’e Geçilmeli mi?

Her projenin hemen geçmesi gerekmez. Kullanılan dil araç zinciri, runtime ve kütüphanelerin WASI 0.3 desteği kontrol edilmelidir.

WebAssembly Component Model Nedir?

Component Model, WebAssembly modüllerine yüksek seviyeli arayüzler, bileşen birleştirme ve diller arası uyumluluk ekleyen mimaridir.

Temel Hedefleri

  • Dil bağımsız arayüzler tanımlamak
  • Bileşenlerin ihtiyaçlarını açıkça belirtmek
  • Farklı dillerdeki bileşenleri birleştirmek
  • String, record ve result gibi yüksek seviyeli türleri desteklemek
  • Host ile guest arasındaki veri dönüşümünü standartlaştırmak

Örnek

Rust ile yazılan bir görüntü işleme bileşeni, JavaScript ile yazılan bir uygulamadan veya Go ile hazırlanan başka bir bileşenden ortak WIT arayüzü üzerinden çağrılabilir.

WIT Nedir?

WIT, WebAssembly Interface Types ifadesinin kısaltmasıdır ve Component Model için kullanılan arayüz tanımlama dilidir.

WIT, bir bileşenin hangi fonksiyonları sunduğunu ve hangi dış fonksiyonlara ihtiyaç duyduğunu dil bağımsız biçimde tanımlar.

Desteklenen Tür Örnekleri

  • String
  • Boolean
  • Tam ve ondalıklı sayılar
  • List
  • Record
  • Variant
  • Option
  • Result
  • Resource
  • Stream
  • Future

Interface, World ve Package Nedir?

Interface

Birbiriyle ilişkili tür ve fonksiyon bildirimlerinin bulunduğu sözleşmedir.

World

Bir bileşenin hangi arayüzleri import ettiğini ve hangilerini export ettiğini tanımlar.

Package

İlişkili WIT interface ve world tanımlarının bir arada bulunduğu pakettir.

Kavram Basit Karşılığı
Interface Belirli bir yetenek için fonksiyon sözleşmesi
World Bileşenin sunduğu ve ihtiyaç duyduğu bütün yetenekler
Package İlişkili interface ve world koleksiyonu

WebAssembly Module ile Component Arasındaki Fark

Özellik Module Component
Temel seviye Düşük seviyeli WebAssembly Yüksek seviyeli bileşen mimarisi
Arayüz türleri Temel sayılar ve linear memory String, record, list, result ve resource
Arayüz tanımı Import ve export imzaları WIT interface ve world yapısı
Diller arası kullanım Özel ABI ve bağlayıcı gerekebilir Canonical ABI ve oluşturulan bindings
Bileşen birleştirme Daha düşük seviyeli Mimari hedeflerden biridir

Canonical ABI Nedir?

Canonical ABI, Component Model içerisindeki yüksek seviyeli türlerin temel WebAssembly değerleri ve linear memory yapısına nasıl dönüştürüleceğini tanımlar.

Neden Gereklidir?

Rust string yapısıyla Go veya JavaScript string yapısı bellekte aynı şekilde temsil edilmeyebilir.

Canonical ABI, farklı dillerden üretilen bileşenlerin veri aktarımını ortak kurallarla gerçekleştirmesine yardımcı olur.

WASI ve Capability Tabanlı Güvenlik

WASI uygulamalarının önemli güvenlik yaklaşımlarından biri, programa bütün sistem kaynaklarını açmak yerine yalnızca ihtiyacı olan belirli yetkileri vermektir.

Örnek Yetkiler

  • Yalnızca belirli dizini okuma
  • Başka bir dizine yazma
  • Belirli çevre değişkenini görme
  • Sınırlı ağ bağlantısı kurma
  • Yalnızca belirli host fonksiyonunu çağırma

Varsayılan Olarak Kapalı Yaklaşımı

Güvenli tasarımda guest program, host tarafından açıkça verilmemiş yeteneklere erişememelidir.

WASI Dosya Sistemi Erişimi

WASI runtime’larında uygulamaya çoğunlukla yalnızca önceden açılan veya bağlanan dizinlere erişim verilir.

Preopened Directory

Host, yerel dosya sistemindeki belirli bir dizini guest içerisinde farklı bir adla erişilebilir hâle getirir.

Yetki Örnekleri

  • Salt okunur erişim
  • Okuma ve yazma
  • Yalnızca belirli alt dizin
  • Geçici çalışma dizini

Risk

Host kök dizini veya hassas dosya yollarını guest’e açarsa sandbox’ın sağladığı güvenlik avantajı büyük ölçüde zayıflar.

WASI Ağ Erişimi

WASI sürümü ve runtime desteğine göre TCP, UDP, DNS ve HTTP arayüzleri kullanılabilir.

Ağ Yetkisinde Kontrol Edilecekler

  • Hangi hedef IP adreslerine bağlanılabilir?
  • Hangi alan adları kullanılabilir?
  • Hangi portlara çıkış yapılabilir?
  • Sunucu soketi açılabilir mi?
  • DNS çözümleme izni bulunuyor mu?
  • İstek ve cevap boyutu sınırı var mı?

Guest’e bütün host ağını miras bırakmak yerine görev için gereken adres ve protokoller sınırlandırılmalıdır.

WebAssembly Runtime Nedir?

WebAssembly runtime, Wasm modüllerini veya bileşenlerini doğrulayan, derleyen, çalıştıran ve host kaynaklarıyla bağlantı kurmasını sağlayan yazılımdır.

Runtime’ın Görevleri

  • WebAssembly ikili dosyasını doğrulamak
  • Kodu yerel makine koduna dönüştürmek
  • Memory ve table kaynaklarını yönetmek
  • Import fonksiyonlarını sağlamak
  • WASI arayüzlerini sunmak
  • CPU ve bellek sınırları uygulamak
  • Hata ve trap durumlarını yönetmek
  • Component Model bindings çalıştırmak

Yaygın WebAssembly Runtime’ları

Runtime veya Araç Temel Kullanım
Wasmtime Sunucu ve gömülü uygulamalar için standalone runtime
WasmEdge Bulut, edge ve bazı AI iş yükleri
WAMR Kaynakları sınırlı ve gömülü ortamlar
wasmCloud Bileşen ve dağıtık uygulama platformu
jco Component Model bileşenlerini JavaScript ortamlarında çalıştırma
Browser engines Chrome, Firefox, Safari ve diğer tarayıcılardaki Wasm motorları

Wasmtime

Bytecode Alliance tarafından geliştirilen ve WebAssembly, WASI ile Component Model desteği sunan runtime’dır.

Runtime Desteği Aynı mı?

Hayır. Her runtime bütün WASI sürümlerini, Component Model özelliklerini veya deneysel önerileri aynı seviyede desteklemeyebilir.

Hangi Diller WebAssembly Üretebilir?

  • Rust
  • C
  • C++
  • Go
  • TinyGo
  • C#
  • AssemblyScript
  • JavaScript araç zincirleri
  • Python tabanlı araçlar
  • MoonBit
  • Zig

Destek seviyesi dile, derleyiciye, standart kütüphanelere ve hedeflenen WASI sürümüne göre değişebilir.

Dil Seçerken

  • Component Model desteği
  • WIT bindings araçları
  • WASI sürüm desteği
  • Üretilen binary boyutu
  • Başlatma süresi
  • Garbage collector gereksinimi
  • Hata ayıklama araçları

birlikte değerlendirilmelidir.

WebAssembly Kullanım Alanları

Alan WebAssembly’nin Rolü
Web uygulamaları Yoğun hesaplama ve mevcut native kodu taşıma
Edge computing Hızlı başlayan taşınabilir işlevler
Serverless İzole ve küçük çalışma birimleri
Plugin sistemi Güvenilmeyen veya üçüncü taraf eklentileri sandbox içinde çalıştırma
Mikroservis Dil bağımsız bileşenler ve arayüzler
AI Ön işleme, inference ve taşınabilir eklentiler
IoT Farklı cihazlara taşınabilir uygulama mantığı
Blockchain Deterministik sözleşme veya işlem yürütme motoru

Tarayıcı Uygulamalarında WebAssembly

Görüntü Düzenleme

Filtre, yeniden boyutlandırma ve format dönüştürme işlemleri kullanıcı cihazında yapılabilir.

Video İşleme

Codec, dönüştürme ve analiz kütüphaneleri tarayıcıya taşınabilir.

Oyunlar

Mevcut oyun motorlarının ve C++ kod tabanlarının web üzerinde çalıştırılmasına yardımcı olabilir.

Bilimsel Uygulamalar

Simülasyon, veri analizi ve matematiksel hesaplama iş yükleri kullanıcı cihazında çalıştırılabilir.

Serverless ve Edge Ortamlarında WebAssembly

WebAssembly bileşenleri küçük dosya boyutu ve hızlı başlatma potansiyeli nedeniyle kısa ömürlü edge ve serverless iş yüklerinde değerlendirilebilir.

Uygulamalar

  • HTTP istek dönüştürme
  • Kimlik doğrulama eklentileri
  • İçerik filtreleme
  • Görüntü optimizasyonu
  • Özel yönlendirme mantığı
  • API ön işleme
  • Edge güvenlik kuralları

Merkezi trafik katmanları için API Gateway Nedir? rehberini inceleyebilirsiniz.

WebAssembly ile Güvenli Eklenti Sistemleri

Bir uygulama, üçüncü taraf geliştiricilerin eklenti yazmasına izin verebilir. Eklentiyi doğrudan native kod olarak ana süreçte çalıştırmak yüksek güvenlik riski oluşturabilir.

Wasm Eklenti Modeli

  1. Eklenti geliştiricisi belirlenen WIT arayüzünü uygular.
  2. Eklenti WebAssembly Component olarak derlenir.
  3. Ana uygulama bileşenin imzasını ve sürümünü kontrol eder.
  4. Runtime eklentiyi sandbox içinde çalıştırır.
  5. Yalnızca izin verilen host fonksiyonları sağlanır.
  6. CPU, bellek ve süre sınırı uygulanır.

Örnek Yetkiler

  • Sipariş bilgisini okuma
  • Belirli log fonksiyonunu çağırma
  • Geçici veri saklama
  • Yalnızca izin verilen HTTP servisine bağlanma

WebAssembly ve Mikroservis Mimarisi

Component Model, küçük işlevlerin farklı dillerde geliştirilip ortak WIT arayüzleri üzerinden birleştirilmesini sağlayabilir.

Muhtemel Avantajlar

  • Dil bağımsız bileşenler
  • Küçük dağıtım birimleri
  • Hızlı başlatma
  • İnce yetkilendirme
  • Runtime düzeyinde izolasyon

Mikroservisin Yerini Alır mı?

Her durumda değil. WebAssembly Component aynı süreç veya runtime içinde birleştirilebilirken mikroservisler bağımsız ağ servisleri olarak çalışabilir.

Servisler arası iletişim hakkında Service Mesh Nedir? içeriğine göz atabilirsiniz.

WebAssembly ve Yapay Zekâ

WebAssembly, bazı yapay zekâ iş yüklerinde taşınabilir çalışma katmanı olarak kullanılabilir.

Kullanım Örnekleri

  • Tarayıcıda model inference
  • Metin ve görüntü ön işleme
  • AI platformları için güvenli eklentiler
  • Edge cihazlarında hafif model çalıştırma
  • Model sonrası çıktı dönüştürme
  • Özel tokenizer ve veri işleme bileşenleri

Her Model Wasm İçinde Çalışır mı?

Model boyutu, bellek kullanımı, SIMD, GPU erişimi ve runtime özellikleri uygun değilse WebAssembly tercih edilmeyebilir.

WebAssembly ve IoT

Kaynakları sınırlı cihazlarda küçük WebAssembly runtime’ları kullanılarak uygulama mantığı donanımdan daha bağımsız hâle getirilebilir.

Avantajlar

  • Cihazlar arasında taşınabilir kod
  • Uygulama güncellemesini donanım yazılımından ayırma
  • Sandbox içinde görev çalıştırma
  • Daha küçük dağıtım paketi potansiyeli

Dikkat Edilecekler

  • RAM ve flash kapasitesi
  • Runtime boyutu
  • Gerçek zamanlı çalışma gereksinimi
  • Donanım çevre birimi arayüzleri
  • Güvenli güncelleme ve imza doğrulama

WebAssembly ile Container Arasındaki Fark

Özellik WebAssembly Container
Dağıtım birimi Wasm module veya component Image ve filesystem katmanları
İşletim sistemi bağımlılığı WASI ve runtime arayüzüne bağlı Host kernel ve image kullanıcı alanına bağlı
Başlatma Çok hızlı olabilir Genellikle sanal makineden hızlıdır
Dosya sistemi Host tarafından verilen capability’ler Image ve mount yapıları
Uyumluluk Uygulama ve kütüphane desteğine bağlı Geniş Linux yazılım ekosistemi
İzolasyon Runtime sandbox’ı Namespace, cgroup ve ek güvenlik katmanları

WebAssembly Container’ların Yerini Alır mı?

Bütün uygulamalarda değil. Container’lar mevcut işletim sistemi araçlarını ve paketlerini çalıştırmak için daha geniş uyumluluk sunar.

WebAssembly küçük, taşınabilir ve yetkileri daraltılmış iş yüklerinde avantaj sağlayabilir.

WebAssembly ile JVM Arasındaki Fark

JVM ve WebAssembly, farklı kaynak dillerden gelen kodu taşınabilir çalışma ortamında çalıştırma fikrini paylaşır.

Özellik WebAssembly JVM
Temel ekosistem Çok dilli ve tarayıcı dahil Java ve JVM dilleri
Sistem arayüzü Host ve WASI Java standart kütüphanesi ve JVM
Tarayıcı desteği Yerleşik Modern tarayıcılarda yerleşik değil
Component yaklaşımı WIT ve Component Model JVM sınıf ve modül ekosistemi

WebAssembly ile Native Binary Farkı

Native Binary

Belirli işlemci ve işletim sistemi için derlenir. Doğrudan işletim sistemi kaynaklarını kullanabilir.

WebAssembly

Taşınabilir formatta üretilir ve runtime üzerinden çalışır. Dış kaynak erişimleri host tarafından sağlanır.

Hangisi Daha Hızlıdır?

İş yükü, runtime, derleyici, sistem çağrıları ve donanım özelliklerine göre değişir. WebAssembly her koşulda native koddan hızlı veya aynı hızda değildir.

WebAssembly Performansı

WebAssembly, kompakt ikili format ve optimize edilebilir talimat yapısı sayesinde yüksek performans sağlayabilir.

Performansı Etkileyen Faktörler

  • Kaynak dil ve derleyici
  • Runtime kod üreticisi
  • AOT veya JIT kullanımı
  • Host ile guest arasındaki çağrı sayısı
  • Veri kopyalama miktarı
  • Linear memory yönetimi
  • SIMD desteği
  • Garbage collection gereksinimi
  • Sistem çağrıları

Host–Guest Sınır Maliyeti

Çok küçük işlemler için sürekli host ve guest arasında geçiş yapmak performansı düşürebilir. İşlerin uygun büyüklükte gruplandırılması gerekebilir.

Başlatma Süresi

Küçük Wasm bileşenleri, büyük runtime veya container iş yüklerine göre hızlı başlatılabilir. Ancak gerçek sonuç runtime ve uygulama boyutuna bağlıdır.

WebAssembly Güvenliği

WebAssembly, kodun host sisteminden izole bir bellek ve çalışma modeli içerisinde çalıştırılmasını amaçlar.

Güvenlik Katmanları

  • Doğrulanan komut formatı
  • Sandbox bellek modeli
  • Kontrollü imports ve exports
  • WASI capability izinleri
  • Runtime kaynak limitleri
  • Host uygulamasının yetkilendirmesi

Kaynak Limitleri

Runtime aşağıdaki sınırları uygulayabilmelidir:

  • Maksimum bellek
  • CPU veya execution fuel
  • Çalışma süresi
  • Stack boyutu
  • Dosya ve ağ erişimi
  • Eş zamanlı görev sayısı

WebAssembly Güvenlik Riskleri

Runtime Güvenlik Açıkları

Runtime veya JIT derleyicideki bir güvenlik açığı sandbox kaçışına neden olabilir. Runtime düzenli güncellenmelidir.

Geniş Host Yetkileri

Guest’e bütün dosya sistemi ve ağ erişimi verilirse sandbox yalnızca biçimsel bir katman hâline gelebilir.

Güvensiz Host Fonksiyonları

Host tarafından sağlanan bir fonksiyon girdi doğrulaması yapmıyorsa guest bu fonksiyonu kötüye kullanabilir.

Kaynak Tüketimi

Sonsuz döngü veya yoğun bellek kullanımı hizmet reddine neden olabilir.

Tedarik Zinciri

İndirilen Wasm bileşeni kötü niyetli olabilir. Artifact imzası, digest ve kaynağı doğrulanmalıdır.

Yazılım üretim zincirini doğrulama hakkında SLSA Nedir? rehberini inceleyebilirsiniz.

Hassas Verinin Linear Memory’de Kalması

Parola, token veya kişisel veriler guest belleğinde gerekenden uzun süre tutulmamalıdır.

Side-Channel Saldırıları

Paylaşılan donanım, cache zamanlaması ve spekülatif çalıştırma gibi daha düşük seviyeli riskler threat model içerisinde değerlendirilmelidir.

WebAssembly’nin Sınırlamaları

Ekosistem Olgunluğu

Her dil ve kütüphane WebAssembly veya WASI için sorunsuz biçimde derlenmeyebilir.

İşletim Sistemi Özellikleri

Process oluşturma, bazı thread modelleri, cihaz sürücüleri ve özel sistem çağrıları sınırlı olabilir.

Hata Ayıklama

Kaynak haritaları ve debugging araçları gelişse de native veya klasik uygulama ortamları kadar kolay olmayabilir.

Runtime Uyumluluğu

Aynı WASI sürümünü desteklediğini belirten runtime’ların ek özellikleri ve davranışları farklı olabilir.

Binary Boyutu

Dil runtime’ı veya garbage collector dâhil edilen bileşenlerin boyutu beklenenden büyük olabilir.

İşlemci Özellikleri

GPU, özel SIMD veya donanım hızlandırıcılarına erişim standart ve her ortamda aynı olmayabilir.

Standartların Gelişmesi

Component Model ve WASI hızlı geliştiği için araç zincirleri arasında sürüm uyumsuzluğu görülebilir.

Örnek WIT Arayüzü

Aşağıdaki örnek, metni işleyen basit bir bileşen arayüzünü gösterir:

package teknoturkiye:metin@1.0.0;

interface metin-isleme {
    record sonuc {
        kelime-sayisi: u32,
        karakter-sayisi: u32,
    }

    analiz-et: func(metin: string) -> result<sonuc, string>;
}

world analiz-bileseni {
    export metin-isleme;
}

Bu Arayüz Ne Söylüyor?

  • Paketin adı teknoturkiye:metin olarak tanımlanmıştır.
  • metin-isleme adında interface bulunur.
  • Fonksiyon bir string alır.
  • Başarılı olursa record, hata oluşursa string döndürür.
  • Bileşen bu interface’i dışarıya export eder.

Örnek WebAssembly Eklenti Mimarisi

Bir e-ticaret platformunun müşterilerine özel fiyatlandırma eklentileri geliştirme imkânı sunduğunu düşünelim.

WIT Sözleşmesi

Her eklenti aşağıdaki bilgileri alır:

  • Ürün kimliği
  • Temel fiyat
  • Müşteri segmenti
  • Kampanya kodu

Ve yeni fiyatla açıklama metnini döndürür.

Host Yetkileri

  • Yalnızca belirli ürün bilgilerini okuyabilir.
  • Dosya sistemine erişemez.
  • Genel internet bağlantısı kuramaz.
  • Belirlenen log fonksiyonunu çağırabilir.
  • 100 milisaniye işlem süresine sahiptir.
  • 32 MB bellek kullanabilir.

Dağıtım Süreci

  1. Geliştirici bileşeni imzalar.
  2. Platform digest ve imzayı doğrular.
  3. WIT sürümüyle uyumluluk kontrol edilir.
  4. Test ortamında otomatik testler çalıştırılır.
  5. Bileşen sınırlı yetkilerle üretime alınır.
  6. Hata ve kaynak kullanımı izlenir.

WebAssembly Uygulama Yol Haritası

Aşama 1: Kullanım Senaryosunu Belirleyin

  • Tarayıcıda yoğun hesaplama mı?
  • Güvenilmeyen eklenti çalıştırma mı?
  • Edge işlevi mi?
  • Çok dilli bileşen sistemi mi?
  • IoT uygulama güncellemesi mi?

Aşama 2: Kaynak Dili ve Araç Zincirini Seçin

Dilin WASI ve Component Model desteğini kontrol edin. Yalnızca temel .wasm çıktısı üretmesi yeterli olmayabilir.

Aşama 3: WASI Sürümünü Belirleyin

Runtime, bindings generator ve bağımlılıkların aynı sürümle uyumlu olması gerekir.

Aşama 4: WIT Arayüzünü Tasarlayın

  • Arayüzü küçük ve anlaşılır tutun.
  • Hata türlerini açıkça tanımlayın.
  • Sürümleme stratejisi oluşturun.
  • Host ayrıntılarını arayüze sızdırmayın.

Aşama 5: Capability Modeli Oluşturun

Bileşenin ihtiyaç duyduğu dosya, ağ, saat ve host fonksiyonlarını listeleyin.

Aşama 6: Kaynak Limitlerini Uygulayın

  • Bellek sınırı
  • Execution fuel
  • Timeout
  • Maksimum çıktı boyutu
  • Eş zamanlı çalışma sınırı

Aşama 7: Gözlemlenebilirlik Ekleyin

Başlatma süresi, çalışma süresi, trap sayısı, bellek kullanımı ve host çağrıları izlenmelidir.

Genel izleme mimarisi için Observability Nedir? içeriğini inceleyebilirsiniz.

Aşama 8: Tedarik Zincirini Koruyun

  • Artifact digest’i kullanın.
  • İmza doğrulaması yapın.
  • Kaynak repository’yi kaydedin.
  • Build provenance üretin.
  • Runtime ve bağımlılıkları güncelleyin.

WebAssembly Runtime Seçim Kriterleri

Standart Desteği

  • Hangi WebAssembly Core özelliklerini destekliyor?
  • WASI 0.1, 0.2 veya 0.3 desteği var mı?
  • Component Model desteği ne durumda?
  • WASI test suite sonuçları bulunuyor mu?

Performans

  • JIT ve AOT seçenekleri
  • Başlatma süresi
  • Memory kullanımı
  • Component instantiation maliyeti
  • Host çağrı performansı

Güvenlik

  • Security advisory süreci
  • Runtime sandbox yaklaşımı
  • CPU ve memory limitleri
  • Filesystem capability kontrolleri
  • Network izinleri
  • Güncelleme sıklığı

Entegrasyon

  • Kullandığınız programlama dili için embedding API’si
  • Kubernetes desteği
  • Debugging ve profiling araçları
  • OpenTelemetry entegrasyonu
  • Artifact registry uyumluluğu

WebAssembly Kontrol Listesi

Kontrol Maddesi Durum
Kullanım senaryosu açıkça tanımlandı mı? Evet / Hayır
WebAssembly’nin gerçekten avantaj sağlayacağı doğrulandı mı? Evet / Hayır
Kaynak dilin Wasm desteği incelendi mi? Evet / Hayır
WASI sürümü belirlendi mi? Evet / Hayır
Runtime bu WASI sürümünü destekliyor mu? Evet / Hayır
Module veya Component tercihi yapıldı mı? Evet / Hayır
WIT interface ve world tanımları sürümlendi mi? Evet / Hayır
Guest’in ihtiyaç duyduğu capability’ler listelendi mi? Evet / Hayır
Dosya sistemi erişimi minimumda mı? Evet / Hayır
Ağ hedefleri allowlist ile sınırlandırıldı mı? Evet / Hayır
Bellek sınırı uygulanıyor mu? Evet / Hayır
CPU veya execution fuel sınırı var mı? Evet / Hayır
Çalışma süresi timeout ile sınırlandırıldı mı? Evet / Hayır
Host fonksiyonlarında girdi doğrulaması yapılıyor mu? Evet / Hayır
Wasm artifact digest’i doğrulanıyor mu? Evet / Hayır
Artifact imzası kontrol ediliyor mu? Evet / Hayır
Runtime güvenlik güncellemeleri izleniyor mu? Evet / Hayır
Trap ve kaynak kullanımı loglanıyor mu? Evet / Hayır
Fallback veya bileşeni devre dışı bırakma planı var mı? Evet / Hayır
Farklı işletim sistemi ve runtime’larda test yapıldı mı? Evet / Hayır

WebAssembly Kullanımında Sık Yapılan Hatalar

  • WebAssembly’yi her zaman native koddan hızlı sanmak
  • WebAssembly’nin JavaScript’in tamamen yerini alacağını düşünmek
  • Module ile Component kavramlarını karıştırmak
  • WASI sürümlerini kontrol etmeden dağıtım yapmak
  • Runtime desteği bulunmayan WIT sürümünü kullanmak
  • Guest’e bütün dosya sistemini açmak
  • Guest’e sınırsız ağ erişimi vermek
  • CPU ve bellek limiti uygulamamak
  • Host fonksiyonlarını güvenilir kabul etmek
  • Wasm artifact kaynağını doğrulamamak
  • Runtime güvenlik güncellemelerini geciktirmek
  • Her native kütüphanenin Wasm’a kolayca derleneceğini varsaymak
  • Host ve guest arasında aşırı veri kopyalamak
  • WIT interface sürümleme stratejisi oluşturmamak
  • WASI 0.1, 0.2 ve 0.3 arayüzlerini aynı kabul etmek
  • Sandbox bulunduğu için uygulama güvenlik testlerini atlamak
  • Container kullanımını hiçbir analiz yapmadan Wasm ile değiştirmek

WebAssembly ve WASI İçin Güvenilir Kaynaklar

  • WebAssembly Resmî Sitesi
  • WebAssembly Specifications
  • W3C WebAssembly Core Specification
  • WASI Sürümleri
  • WASI 0.3 Dokümantasyonu
  • WebAssembly Component Model
  • Wasmtime Dokümantasyonu
  • Bytecode Alliance
  • TeknoTürkiye – API Gateway Nedir?
  • TeknoTürkiye – Service Mesh Nedir?
  • TeknoTürkiye – Observability Nedir?
  • TeknoTürkiye – SLSA Nedir?

WebAssembly ve WASI Hakkında Sık Sorulan Sorular

WebAssembly nedir?

Farklı programlama dillerinin derlenebildiği, tarayıcı ve tarayıcı dışı çalışma ortamlarında kullanılabilen taşınabilir ikili komut formatıdır.

Wasm ne demektir?

WebAssembly kelimesinin kısa yazımıdır.

WebAssembly bir programlama dili midir?

Genellikle doğrudan uygulama yazılan yüksek seviyeli dil değil, programlama dillerinin derlendiği hedef formattır.

WebAssembly hangi dillerle yazılır?

Rust, C, C++, Go, C#, AssemblyScript, Zig ve farklı araç zincirleriyle başka dillerden WebAssembly üretilebilir.

WebAssembly yalnızca tarayıcıda mı çalışır?

Hayır. WASI ve standalone runtime’lar aracılığıyla sunucu, edge, IoT ve uygulama içi eklenti ortamlarında çalıştırılabilir.

WASI nedir?

WebAssembly uygulamalarının dosya, ağ, saat ve random gibi sistem özelliklerini taşınabilir arayüzlerle kullanmasını sağlayan standartlar ailesidir.

WASI neyin kısaltmasıdır?

WebAssembly System Interface ifadesinin kısaltmasıdır.

WASI 0.3 nedir?

WebAssembly Component Model’e yerel async func, stream ve future yetenekleri ekleyen kararlı WASI sürümüdür.

WASI 0.3 ne zaman yayımlandı?

WASI 0.3.0, 11 Haziran 2026 tarihinde yayımlandı.

WASI 0.2 hâlâ kullanılabilir mi?

Evet. Kararlı sürümdür ve Component Model tabanlı uygulamalarda kullanılabilir. Runtime ve araç zinciri uyumluluğu kontrol edilmelidir.

WASI 0.1 eski mi?

Legacy olarak sınıflandırılır ancak birçok runtime ve üretim sisteminde geniş destek görmeye devam eder.

Component Model nedir?

WebAssembly bileşenlerine yüksek seviyeli türler, dil bağımsız arayüzler ve bileşen birleştirme yeteneği ekleyen mimaridir.

WIT nedir?

WebAssembly bileşenlerinin sunduğu ve ihtiyaç duyduğu interface’leri tanımlayan arayüz dilidir.

WebAssembly Module ile Component aynı mı?

Hayır. Module temel düşük seviyeli Wasm birimidir. Component ise WIT, yüksek seviyeli türler ve Canonical ABI kullanan daha gelişmiş yapıdır.

WebAssembly güvenli midir?

Sandbox ve doğrulama önemli güvenlik avantajları sağlar. Ancak runtime açıkları, geniş host yetkileri ve kaynak tüketimi riskleri devam eder.

WebAssembly virüs çalıştırabilir mi?

Kötü amaçlı kod WebAssembly biçiminde hazırlanabilir. Sandbox etkisini sınırlar ancak kodun güvenilir kaynaktan geldiği ve yetkilerinin dar olduğu doğrulanmalıdır.

WebAssembly dosya sistemine erişebilir mi?

Yalnızca host veya WASI runtime tarafından erişim verilmişse erişebilir.

WebAssembly internete bağlanabilir mi?

Tarayıcıda Web API’leri, tarayıcı dışında ise runtime ve WASI ağ arayüzleri üzerinden izin verilirse bağlanabilir.

WebAssembly JavaScript’ten hızlı mı?

İş yüküne göre daha hızlı, benzer veya daha yavaş olabilir. Her kullanımda otomatik performans avantajı bulunmaz.

WebAssembly JavaScript’in yerini alır mı?

Çoğu web uygulamasında JavaScript ile birlikte kullanılır. Kullanıcı arayüzü ve DOM işlemlerinde JavaScript önemini korur.

WebAssembly container’ların yerini alır mı?

Bütün kullanım alanlarında hayır. Küçük ve izole iş yüklerinde alternatif olabilir; geniş işletim sistemi bağımlılığı bulunan uygulamalarda container daha uygundur.

WebAssembly ile Docker birlikte kullanılır mı?

Evet. Wasm runtime veya uygulaması container içinde çalıştırılabilir. Bazı platformlar container orkestrasyonu içinde Wasm iş yüklerini de destekler.

WebAssembly Kubernetes’te çalışır mı?

Uygun runtime ve entegrasyonlarla Kubernetes üzerinde WebAssembly iş yükleri çalıştırılabilir.

Wasmtime nedir?

Bytecode Alliance tarafından geliştirilen WebAssembly, WASI ve Component Model runtime’ıdır.

WasmEdge nedir?

Bulut, edge ve belirli yapay zekâ iş yüklerinde kullanılabilen WebAssembly runtime projelerinden biridir.

Linear memory nedir?

WebAssembly programının kullanabildiği, sürekli bayt dizisi biçimindeki sandbox bellek alanıdır.

Host ve guest ne demektir?

Host WebAssembly kodunu çalıştıran ortam, guest ise host içinde çalışan Wasm programıdır.

WebAssembly plugin sistemi için uygun mu?

Üçüncü taraf eklentilerini dar yetkiler, kaynak sınırları ve tanımlı arayüzlerle çalıştırmak için uygun olabilir.

WebAssembly edge computing için uygun mu?

Hızlı başlatma ve taşınabilirlik avantajları nedeniyle bazı edge iş yüklerinde kullanılabilir.

WebAssembly mobil uygulamada kullanılabilir mi?

Uygun runtime veya framework içine gömülerek kullanılabilir. Platform desteği ve uygulama mağazası kuralları değerlendirilmelidir.

WebAssembly’de GPU kullanılabilir mi?

Tarayıcıdaki WebGPU veya host tarafından sağlanan özel arayüzlerle mümkün olabilir. Standart ve taşınabilir destek çalışma ortamına göre değişir.

WebAssembly kodu nasıl debug edilir?

Kaynak haritaları, WAT çıktısı, runtime debugger araçları ve profiling sistemleri kullanılabilir.

WebAssembly uygulamasına ne kadar bellek verilmeli?

İş yükü ölçülmeli ve gereken minimum bellek sınırı uygulanmalıdır. Sınırsız bellek verilmemelidir.

WebAssembly artifact’i imzalanmalı mı?

Üretim ve üçüncü taraf eklenti sistemlerinde digest ve dijital imza doğrulaması önerilir.

Yeni proje WASI 0.2 mi 0.3 mü kullanmalı?

Runtime ve dil araç zinciri 0.3’ü kararlı biçimde destekliyorsa değerlendirilebilir. Aksi durumda 0.2 daha geniş araç uyumluluğu sunabilir.

WebAssembly kullanmaya nereden başlanmalı?

Önce küçük ve izole bir kullanım senaryosu seçilmeli, runtime ile dil desteği doğrulanmalı ve ardından WIT ile capability tasarımına geçilmelidir.

WebAssembly ve WASI Sonuç

WebAssembly nedir sorusunun temel cevabı; farklı programlama dillerinin derlenebildiği, taşınabilir ve sandbox tabanlı ikili çalışma formatıdır.

WebAssembly ilk olarak tarayıcıdaki yüksek performanslı uygulamalar için geliştirilmiş olsa da bugün standalone runtime’lar sayesinde sunucu, edge, IoT ve güvenli eklenti sistemlerinde kullanılabilir.

Temel WebAssembly standardı dosya ve ağ gibi sistem özelliklerini doğrudan tanımlamaz. WASI, bu özellikleri kontrollü ve taşınabilir arayüzler hâlinde sunar.

WASI 0.2, Component Model ve WIT tabanlı bileşen mimarisini kararlı hâle getirdi. WASI 0.3 ise async func, stream ve future ile asenkron işlemleri Component Model’in doğal bir parçasına dönüştürdü.

Component Model farklı dillerde geliştirilen bileşenlerin yüksek seviyeli türler ve ortak WIT arayüzleri üzerinden birleştirilmesini kolaylaştırır.

WebAssembly’nin güvenlik avantajı yalnızca sandbox’tan kaynaklanmaz. Guest’e verilen dosya, ağ ve host fonksiyonu yetkilerinin dar tutulması, CPU ve bellek sınırlarının uygulanması ve runtime’ın güncel tutulması gerekir.

WebAssembly her uygulama için container, native binary veya JavaScript’in yerini almaz. En yüksek faydayı taşınabilirlik, hızlı başlatma, güvenli eklenti çalıştırma ve dil bağımsız bileşen ihtiyacının bulunduğu projelerde sağlayabilir.

Ayrıca Hoşunuza Gidebilir

SBOM Nedir? Yazılım Güvenliği İçin 11 Kritik Avantaj

Bellek Güvenli Programlama Dilleri: 10 Kritik Avantaj

Cyber Resilience Act Nedir? AB Yazılım ve Donanım Güvenliği Rehberi

AI Gateway: Çoklu Model Trafiğini Tek Noktadan Yönetme Mimarisi

Data Clean Room: Ham Veriyi Paylaşmadan Birlikte Analiz Etme Mimarisi

ETİKETLENEN: Bytecode Alliance, Component Model, Edge Computing, sandbox, serverless, taşınabilir yazılım, WASI, Wasm, Wasmtime, WebAssembly, WIT, Yazılım Güvenliği

Posta Bültenine Kayıt Olun

Takipte kalın! En son son dakika haberlerinin doğrudan gelen kutunuza gönderilmesini sağlayın.
Kaydolarak Kullanım Koşullarımızı kabul etmiş ve Gizlilik Politikamızdaki veri uygulamalarını kabul etmiş olursunuz. İstediğiniz zaman abonelikten çıkabilirsiniz.
Bu makaleyi paylaş
Facebook Twitter Pinterest WhatsApp WhatsApp LinkedIn Tumblr Reddit Vkontakte Telegram Eposta Linki Kopyala Yazdır
Paylaş
Önceki makale AI Gateway nedir ve çoklu yapay zekâ model trafiği nasıl yönetilir AI Gateway: Çoklu Model Trafiğini Tek Noktadan Yönetme Mimarisi
Sonraki makale Cyber Resilience Act nedir ve AB yazılım güvenliği gereksinimleri nelerdir Cyber Resilience Act Nedir? AB Yazılım ve Donanım Güvenliği Rehberi
Bir yorum bırakın Bir yorum bırakın

Bir yanıt yazın Yanıtı iptal et

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bizi Takip Edin

12.1k Takipçi Beğen
14.2k Takipçi Takip et
12.3k Takipçi Takip et

Son İçerikler

CTEM nedir
CTEM Nedir? Şirketler İçin 11 Kritik Avantaj
siber güvenlik 5 Ağustos 2026
SBOM nedir
SBOM Nedir? Yazılım Güvenliği İçin 11 Kritik Avantaj
Yazılım 5 Ağustos 2026
SASE nedir
SASE Nedir? Şirketler İçin 11 Kritik Avantaj
siber güvenlik 5 Ağustos 2026
bellek güvenli programlama dilleri
Bellek Güvenli Programlama Dilleri: 10 Kritik Avantaj
Yazılım 5 Ağustos 2026
Browser Isolation nedir
Browser Isolation Nedir? 10 Kritik Güvenlik Avantajı
siber güvenlik 5 Ağustos 2026
//

Yüksek ziyaretçi sayımız ile Yerli ve Milli Teknolojilerin yanında Teknoparklar hakkında ayrıntılı bilgiye sahip olacağınız Türkiye’nin en iyi iş, inovasyon ve teknoloji portalıyız.

Tekno Türkiye

  • Gizlilik Politikası
  • Çerez (Cookie) Politikası
  • Künye
  • İletişim
  • AR-GE
  • Firmalar
  • Haberler
  • Savunma Sanayi
  • Startup
  • Teknoparklar
  • AR-GE Proje Hazırlama
  • Teknopark AR-GE Proje
  • AR-GE Portal Yönetim

Tekno Blog

  • Dijital Dönüşüm
  • Finans
  • Havacılık ve Uzay
  • İmalat
  • İnovasyon
  • Sağlık
  • Teknoloji
  • Yazılım

Posta Bülteni

En yeni içeriklere anında ulaşmak için e-posta bültenimize abone olun!

Tekno TürkiyeTekno Türkiye
Bizi Takip Edin
© 2024 Tekno Türkiye. Her hakkımız saklıdır.
adbanner
AdBlock Algılandı
Sitemiz reklam destekli bir sitedir. Lütfen sitemizi desteklemek için beyaz listeye ekleyin.
Tamam, beyaz listeye ekleyeceğim
Tekrar hoşgeldiniz!

Hesabınıza giriş yapın

Şifrenizi mi unuttunuz?