Baştan deneysel bir AOT JS motoru
Porffor, JS kodunu önceden WebAssembly'ye veya native'e derleyen benzersiz bir JS motoru/derleyicisi/runtime'ıdır. Şu anda araştırma amaçlı kullanılmaktadır ve gerçek kullanım için sınırlıdır.
Wasm derleme
Porffor'un WebAssembly çıktısı, mevcut JS -> Wasm projelerine kıyasla çok daha hızlı ve küçüktür. Bunun nedeni, Porffor'un JS'yi AOT olarak derlemesidir.
- Wasm boyutu: Javy'den 32 kat daha küçük (~1.3MB -> ~40KB)
- Wasm performansı: Javy'den 18 kat daha hızlı (~70m -> ~4m)
Native derleme
JS'yi önceden derlediği için Porffor, runtime'ı paketlemeden gerçek native binary'lere derlenebilir. Bu da şu sonuçları doğurur:
- Binary boyutu: 1000 kattan fazla daha küçük (~90MB -> <50KB)
- Bellek kullanımı: 40 kattan fazla daha az (~50MB -> ~1MB)
- Performans: 3 kata kadar daha hızlı
Ek bilgiler
- Porffor güvenlidir: Wasm'a derlenir ve bellek güvenli bir dil olan JS ile yazılmıştır.
- Porffor baştan AOT düşünülerek yazılmıştır: Mevcut bir JS motorunu temel almaz. Tek bağımlılığı bir JS parser'ıdır.
- Porffor TypeScript girdisini destekler: Uğraştırıcı bir transpiler adımına gerek yoktur. TS dosyasını doğrudan girdi olarak verebilirsiniz.
Playground
Porffor'u çevrimiçi veya yerelde deneyebilirsiniz. npm i -g porffor@latest && porf komutunu kullanmanız yeterlidir.
- Prime Numbers
- Fibonacci
- Factorial
- Sum of Digits
- Exception
- Array Reading
- ArrayPrototype
- Math Proposals Parser: acorn, meriyah, hermes-parser, @babel/parser
- Target: wasm
const isPrime = number => {
if (number < 2) return false;
for (let i = 2; i < number; i++) {
if (number % i == 0) return false;
}
return true;
}
let counter = 0;
while (counter <= 10000) {
if (isPrime(counter)) Porffor.numberLog(counter);
counter++;
}
Test262
Test262, resmi ECMAScript uygunluk test paketidir. Porffor, uygunluk ilerlemesini takip etmek için bunu her commit'te çalıştırır.
GN⁺ Özeti
Porffor, JS kodunu önceden WebAssembly'ye veya native'e derleyen benzersiz bir motordur. Bu, mevcut çözümlere kıyasla çok daha küçük boyut ve daha hızlı performans sunar. Araştırma amaçlı kullanılır ve TypeScript girdisini destekler. Bu proje, JS motorlarının performansını ve verimliliğini araştırmak için faydalı olabilir. Benzer işlevlere sahip projeler arasında Javy gibi JS -> Wasm derleyicileri bulunur.
1 yorum
Hacker News görüşleri
evalgibi zor JS senaryolarını desteklemek için fallback bir interpreter'a sahipken, Porffor yalnızca AOT derlemeyi destekliyor