- PDF dosyalarının genellikle statik belgeler olduğu düşünülür, ancak aslında Javascript desteği içeren özelliklere sahiptir
- PDF standardının kendine ait bir Javascript standart kütüphanesi vardır
- Chromium, Firefox gibi modern tarayıcılar güvenlik nedeniyle son derece sınırlı API'ler uygular
- Yalnızca Adobe Acrobat, PDF içindeki Javascript'in tam spesifikasyonunu destekliyordu; buna 3D rendering, HTTP istekleri, kullanıcının tüm monitörlerini algılama gibi çok geniş kapsamlı özellikler dahildi
- Sınırlı tarayıcı API'leri temel alınsa bile istenen hesaplama mantığı çalıştırılabilir, ancak IO kısmı çok kısıtlıdır
- C kodu asm.js'ye derlenerek PDF içinde çalıştırılabilir
- Eski bir Emscripten sürümü kullanılıyor (
asm.js hedefini destekleyen 1.39.20 gibi)
- TinyEMU RISC-V emülatörü değiştirilip asm.js'ye derleniyor ve PDF içinde çalıştırılıyor
- Ekran çıktısı ve giriş yöntemi, DoomPDF içinde kullanılandan (PDF içinde Doom çalıştırma) aynı
- Ekranda her satır tek bir metin alanı olarak kullanılıyor ve piksel durumu ASCII karakterlerle ifade ediliyor
- Girdi, sanal klavye ve metin kutusu üzerinden VM'ye tuş girişleri iletilerek sağlanıyor
- Performansla ilgili ciddi sorunlar ortaya çıkıyor
- Örneğin Linux çekirdeğinin açılması 30 ila 60 saniye sürüyor ve normal çalıştırmaya kıyasla 100 kattan fazla daha yavaş
- Chrome'un PDF motorundaki V8'de JIT devre dışı olduğu için performans ciddi biçimde düşüyor
- Kök dosya sistemi için 64 bit veya 32 bit sürüm seçilebiliyor
- Varsayılan olarak 32 bit Buildroot sistemi kullanılıyor (başlangıçta TinyEMU örneğinden alınmış)
- 64 bit Alpine Linux sürümü de var, ancak performansı yaklaşık 2 kat daha yavaş olduğu için genelde kullanılmıyor
4 yorum
Doom seviyesinde bir delilik, Linux hahah
Bu romantizm mi yoksa çılgınlık mı? Vay canına.
vay be...
Vay be......