Bu seçim bir cephe tercihi değildir. Bu makale, gerçekte doğrulanan iki çalışma zamanını (yönetim, derleyiciler, WASI standardı, güvenlik modeli) karşılaştırır ve ardından ölçülmemiş bir soğuk başlangıç rakamı sağlamadan Aurabase'in üretimde çalıştırdığı Wasmtime uygulamasını, yakıt ölçümünü, dönem kesintisini, bellek sınırlarını ayrıntılarıyla anlatır.
Temeller
- Wasmtime: Rust'ta yazılmış Bytecode Alliance projesi, Cranelift üretim derleyicisi, LLVM istisnası ile Apache-2.0 lisansı.
- Wasmer: Wasmer Inc. tarafından geliştirilen çalışma zamanı, üç değiştirilebilir derleyici (Singlepass, Cranelift, LLVM), MIT lisansı.
- Aurabase,
wasmtime = { version = "43", features = ["async", "cranelift"] }'yiaura-functions'de gerçek üretim bağımlılığı olarak bildirir veCargo.toml'de doğrulanır. - Yerel WASM modu, varsayılan olarak 64 MB'lık bir bellek sınırı, bir milyar birimlik yakıt bütçesi ve 10 saniyelik bir zaman aşımı süresi uygular; üçü de ortam değişkenine göre ayarlanabilir.
- Bu WASM modu, Aurabase Edge Functions'ın varsayılan moduyla (Deno çalışma zamanı) birlikte bulunur: bu, varsayılan yol değil, ikinci bir yürütme yoludur.
İki çalışma zamanı, aynı WebAssembly tabanı
WebAssembly uzun süredir tarayıcı için bir çalışma zamanı formatı belirlemiştir. Birkaç yıldır sunucu tarafında veya uçta sanal alanda kod yürütmek için de kullanılıyor: bir kez derlenen, herhangi bir ana makinede taşınabilir, bir konteyner veya tam bir sanal makine olmadan varsayılan olarak izole edilen bir bayt kodu. Wasmtime ve Wasmer, her ikisi de Rust'ta yazılmış ve aynı .wasmdosyasını çalıştırabilen bu uzantıyı tarayıcının dışına taşıyor.
Wasmtime, Cranelift derleyicisi de dahil olmak üzere WebAssembly sunucu ekosisteminin çeşitli bileşenlerini yöneten kuruluş olan Bytecode Alliance tarafından barındırılan bir projedir. Wasmer, çalışma zamanını açık kaynak olarak yayınlayan ve bunun etrafında tamamlayıcı hizmetler (kenar dağıtımı, takım oluşturma) pazarlayan bir şirket olan Wasmer Inc. tarafından geliştirilmiştir. İki farklı yönetişim modeli; birinin ürettiği kodun kalitesine ilişkin bir değerlendirme yok.
Bu makalenin geri kalanında lisanslama ve yönetişim, mevcut derleyiciler, WASI standardı ve Bileşen Modeli, güvenlik modeli olmak üzere dört doğrulanabilir alan karşılaştırılmakta ve ardından destekleyici kodla birlikte Aurabase'in Rust çekirdeği'nin Wasmtime'ı Edge Functions motorundaçalıştırdığı açıklanmaktadır.
Çok satıcılı kuruluş ile ticari yayıncının karşılaştırılması
Wasmtime, derleyici ekosisteminde yaygın olarak kullanılan izin verilen bir lisans olan LLVM istisnasıyla Apache-2.0 lisansı altında yayınlandı. Yönetişimi Bytecode Alliance modelini takip ediyor: birkaç kuruluş projeye katkıda bulunuyor, hiçbiri projenin tek başına sahibi değil.
Wasmer, kağıt üzerinde daha da hoşgörülü olan MIT lisansı altında yayınlanıyor, ancak teknik yönetimi tek bir yayıncıda, Wasmer Inc.'de yoğunlaşmış durumda. Bu kendi başına bir hata değil: birçok başarılı açık kaynak projesi bu modeli takip ediyor. Kuruluşunuz birden fazla kuruluş arasında dağıtılmış yönetişime değer veriyorsa, bu sadece farklı bir risk profilidir.
Bir arka uç ve üçe karşı: Cranelift, Singlepass, LLVM
Wasmtime, yine Bytecode Alliance'ın bir kod oluşturucusu olan Cranelift aracılığıyla üretimde derleniyor. Sandık ayrıca, başlatmaya duyarlı durumlarda Cranelift'e kıyasla derleme süresini azaltmak için tasarlanmış ek bir derleyici olan Winch'i de belgeliyor.aura fonksiyonlarının Cargo.toml'si yalnızca cranelift özelliğini etkinleştirir: üretimde yüklenen her WASM modülünü işleyen yalnızca bu derleyicidir.
Wasmer ise tam tersi bir yol izliyor: değiştirilebilir üç arka uç. Singlepass, daha az optimize edilmiş makine kodu pahasına, neredeyse anında tek geçişte derlenir. Cranelift dengeli bir uzlaşma sunar. LLVM, üçü arasında en uzun derleme süresiyle mümkün olan en iyi yürütme verimini hedeflemektedir. Tek bir çalışma zamanı, yapılandırma sırasında seçilen üç uzlaşma profili.
WASI Önizleme 2 ve Bileşen Modeli
WebAssembly Sistem Arayüzü WASI, tarayıcıya bağlı kalmadan bir WASM modülünden dosyalara, saatlere ve ağa erişimi standartlaştırır. En son sürümü olan WASI Preview 2, Bileşen Modelini temel alır: her çalışma zamanına özgü bir ikili format yerine, paylaşılan tipte arayüzlerle farklı dillerde yazılmış modüller oluşturmaya yönelik bir mekanizma. Hem Wasmtime hem de Wasmer bu standardı kendi hızlarında uygulamaya çalışıyor.
Wasmer ayrıca, iş parçacıkları veya daha kapsamlı ağ soketleri gibi resmi WASI standardının henüz kapsamadığı POSIX temellerini kapsamayı amaçlayan bir uzantı olan WASIX'i de belgeliyor. Bu, WebAssembly çalışma grubu tarafından desteklenen bir standart değil, Wasmer ekosistemine özgü bir uzantıdır.
Aurabase'in wasm/mod.rsile doğrulanan yerel wasm modu şu anda ne WASI Preview 2'yi ne de Bileşen Modelini kullanıyor. Bu, tam standart değil, konuk modülüne sunulan dört işlevli, evde yetiştirilen minimal bir ana bilgisayar ABI'sidir. Cargo.toml ayrıca wasmtimesandığı üzerindeki wasi özelliğini etkinleştirmez.
Bellek izolasyonu ve zamanlaması: yakıt, dönem, sınırlar
Her iki çalışma zamanı da, açıkça içe aktarılan işlevler dışında ana bilgisayar sistemine doğrudan erişim olmaksızın, her modülü kendi doğrusal belleğinde yalıtır. Bu, her iki projede de ortak olan WebAssembly güvenlik modelinin temelidir.
Wasmtime ayrıca yerel bir yürütme görüntüleri API'si olan fuel'yi kullanıma sunar: her talimat önceden sabitlenmiş bir bütçeyi tüketir ve bu bütçe tükendiğinde yürütme düzgün bir şekilde durur. İkinci bir API olan epochkesintisi, beklerken motoru engellemeden zaman aşımı uygulamanıza olanak tanır. Wasmer, kendi ölçüm mekanizmasını ve örnek başına bellek sınırlarını belgeliyor; Bu makale bunları üçüncü taraf bir veri deposunda doğrulamamıştır, bu nedenle bunları rakamsal olarak ayırmaz.
Bu tam olarak Aurabase'in aura-functions hizmetinin mümkün kıldığı şeydir; bir sonraki bölümde gerçek kaynak koduyla birlikte ayrıntılı olarak açıklanmaktadır.
Wasmtime kodda kontrol edildi, beyan edilmiş bir tercih değil
aura-functions hizmeti, devre dışı bırakma yorumları veya geliştirme bağımlılığı yapılandırması olmadan wasmtime'yi üretim bağımlılığı olarak bildirir. Depodaki hiçbir dosya, ne Cargo.toml ne de .rsdosyası, Wasmer'dan bahsetmez.
Başlatma kodu, yakıtı açıkça etkinleştirir ve dönem bazında kesmeyi etkinleştirir, ardından belleği StoreLimitsile çağırarak sınırlar:
Üç sınırın tümü ortam değişkeni başına yapılandırılabilir; varsayılan değerler config/mod.rsolarak kontrol edilir: 64'te WASM_MAX_MEMORY_MB, 10'da WASM_TIMEOUT_SECS, bir milyar birimde WASM_MAX_FUEL. Zaman aşımı arka planda tetiklenir: a tokio::spawn yapılandırılan süreyi bekler ve bekleme sırasında mevcut yürütmeyi engellemeden motor dönemini artırır.
Konuk modüllere sunulan ABI kasıtlı olarak minimum düzeyde kalır: aura.log, aura.get_input, aura.set_output ve aura.get_env, linker.func_wraparacılığıyla kaydedilen dört ana bilgisayar işlevi. Bu, Bileşen Modeli veya WASI Önizleme 2 değildir: şirket içi bir sözleşmedir, daha dardır, tek kullanım için tasarlanmıştır, bir HTTP uç işlevi yürütür ve JSON yanıtını kurtarır.
Bu wasm modu genel bir geçiş değil, işlev başına bir seçimdir. Aurabase mimarisine genel bakış, JavaScript/TypeScript'i ayrı bir hizmette çalıştıran varsayılan denomodu olan diğer yolu ayrıntılarıyla anlatır. Her ikisi de aynı aura-functionshizmetinde bir arada bulunur.
What is checked here is the actual Wasmtime implementation and its default resource limits. No cold start figures are stated: see our dedicated analysis of the WebAssembly cold start for what is measurable, and what is not yet.
Wasmtime ve Wasmer yan yana
| Yönetişim | Bytecode Alliance, çoklu organizasyon | Wasmer Inc., ticari yayıncı |
|---|---|---|
| Lisans | LLVM istisnası ile Apache-2.0 | MİT |
| Uygulama dili | Pas | Pas |
| Derleyiciler | Cranelift (Vinç isteğe bağlıdır, Aurabase'de etkinleştirilmemiştir) | Tek geçişli, Cranelift, seçtiğiniz LLVM |
| WASI standardı | WASI Önizleme 2 + Bileşen Modeli | WASI Preview 2 + WASIX (Wasmer'a özel uzantı) |
| Koşu görüntüleri | Yakıt + döneme göre kesinti (doğrulanmış yerel API) | Wasmer'a özgü mekanizmalar, burada doğrulanmadı |
| Aurabase tarafından kullanılıyor | Evet, aura işlevleri, sürüm 43 sabitlendi | Hayır, bağımlılık yok, doğrudan veya geçişli |
Kaynaklar: Aurabase deposundan Cargo.toml ve wasm/mod.rs, doğrudan 24 Ağustos 2026'da doğrulandı. Her projenin kamuya açık belgelerinden alınan genel Wasmtime ve Wasmer özellikleri; bu tabloda hiçbir üçüncü taraf kıyaslama rakamı yayınlanmamaktadır.
Kim neyi seçmeli
Mevcut bağımlılıklar olmadan yeni bir uç çalışma zamanı başlatırsınız. Çok sağlayıcılı bir vakıf tarafından desteklenen Wasmtime, projenin geleceği için tek bir yayıncıya bağlı kalma riskini azaltır.
Çok sık ve kısa süreli soğuk başlatmalar yaşıyorsunuz. Wasmer'in Singlepass arka ucu, daha az optimize edilmiş makine kodu pahasına, neredeyse anında derleme yaparak bu ihtiyaca doğrudan yanıt verir.
Mevcut standart WASI'nın ötesinde POSIX temel öğelerine ihtiyacınız var. WASIX, Wasmer uzantısı, WASI Preview 2'nin tek başına henüz kapsamadığı konuları ve genişletilmiş yuvaları kapsar.
Üçüncü taraf ara yazılım olmadan yerel bir görüntü ve zaman aşımı API'si istiyorsunuz. Wasmtime, fuel ve epoch'yi doğrudan sandıkta ortaya çıkarır; bu, tam olarak aura-functions'nin Aurabase'de sağladığı şeydir.