PRODEgemen Avrupa BaaS platformuKontrol Panelini Aç →

Mühendislik · 8 dk. okuma

Wasmtime ve Wasmer üretimi için Edge Functions karşılaştırması

Affane Daylami · Fondateur · 25 Haziran 2026

Bloga geri dön

Wasmtime ve Wasmer, kodu tarayıcının dışında, uçta veya sunucu tarafında çalıştırmak için en yaygın kullanılan iki WebAssembly çalışma zamanıdır. Aurabase şuna karar verdi: Edge İşlevlerinin yerel WASM yürütme modu, ilgili hizmetin Cargo.toml dosyasında doğrudan doğrulanan Wasmer'i değil Wasmtime'ı yerleştirir.

Bu İngilizce metin, Fransızca orijinalinden otomatik olarak oluşturulmuştur ve henüz incelenmemiştir.
Bu sayfa otomatik olarak çevrildi. İngilizce versiyonu yetkilidir.

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"] }'yi aura-functions'de gerçek üretim bağımlılığı olarak bildirir ve Cargo.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.
#
Bağlam

İ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.

#
Yönetim ve lisanslama

Ç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.

#
Derleyiciler

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.

#
Standartlar

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 WASM Modu Neleri Kullanmaz?

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.

#
Güvenlik

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.

#
Aurabase seçimi

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.

Cargo.tomltoml
# WASM Çalışma Zamanı
wasmtime = { version = "43", features = ["async", "cranelift"] }

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:

wasm/mod.rsrust
let mut cfg = Config::new();
cfg.consume_fuel(true);
cfg.epoch_interruption(true);
let engine = Engine::new(&cfg)?;

// çağrıyla:
let limits = StoreLimitsBuilder::new()
    .memory_size(self.max_memory_mb as usize * 1024 * 1024)
    .build();
store.set_fuel(self.max_fuel)?;
store.epoch_deadline_async_yield_and_update(1);

Üç 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.

Doğrulanmış ve ürün hedefi

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.

#
Genel Bakış

Wasmtime ve Wasmer yan yana

YönetişimBytecode Alliance, çoklu organizasyonWasmer Inc., ticari yayıncı
LisansLLVM istisnası ile Apache-2.0MİT
Uygulama diliPasPas
DerleyicilerCranelift (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 ModeliWASI Preview 2 + WASIX (Wasmer'a özel uzantı)
Koşu görüntüleriYakıt + döneme göre kesinti (doğrulanmış yerel API)Wasmer'a özgü mekanizmalar, burada doğrulanmadı
Aurabase tarafından kullanılıyorEvet, aura işlevleri, sürüm 43 sabitlendiHayı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.

#
Karar

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.

#
Sıkça Sorulan Sorular

SSS

Wasmtime Wasmer'dan daha mı hızlı?+
Burada gönüllü olarak herhangi bir karşılaştırmalı performans rakamı belirtilmemiştir. İki çalışma zamanı, derleme hızı ile yürütme hızı arasındaki farklı dengelere yanıt veren farklı derleyicileri (Wasmtime için Cranelift; Wasmer için Singlepass, Cranelift veya LLVM seçimi) ortaya çıkarır. Şifrelenmiş ve kaynaklı işleme için WebAssembly soğuk başlangıcına ilişkin özel analizimize bakın.
Wasmtime ve Wasmer'ı aynı projede kullanabilir miyiz?+
Teknik olarak evet, çünkü her ikisi de aynı .wasm formatını kullanıyor. Ancak bu, entegrasyon yüzey alanını, iki ana bilgisayar API'sini, iki yapılandırma modelini iki katına çıkarır ve çoğu takım için net bir fayda sağlamaz. Aurabase, aura işlevleri hizmetinin Cargo.toml dosyasında doğrulanan yalnızca bir tane gönderir.
Tüm Aurabase Edge İşlevleri Wasmtime'da çalışır mı?+
Hayır. Aurabase Edge Functions'ın varsayılan modu, JavaScript/TypeScript'i ayrı bir Deno hizmeti aracılığıyla çalıştırır. Wasmtime tarafından desteklenen Wasm modu, varsayılan yol değil, işlev bazında seçilen ikinci bir yürütme yoludur.
WebAssembly Bileşen Modeli gerçekte ne sağlar?+
Bileşen Modeli, farklı dillerde yazılan WASM modüllerinin bileşimini, ortak tipte arayüzlerle, bir çalışma zamanına özgü ikili formata bağlı olmaksızın standartlaştırır. Aurabase'in yerel WASM modu bugün bunu kullanmıyor: Bu, Bileşen Modeli değil, ev yapımı bir minimal ana bilgisayar ABI'sidir.

DAĞITILMAYA HAZIR MISINIZ?

Beş dakika içinde arka ucunuz.

Kredi kartı gerekmez · 500 MB ücretsiz · 50.000 MAU