17 puan yazan xguru 2025-02-05 | 4 yorum | WhatsApp'ta paylaş
  • 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

 
xcutz 2025-02-06

Doom seviyesinde bir delilik, Linux hahah

 
tsboard 2025-02-05

Bu romantizm mi yoksa çılgınlık mı? Vay canına.

 
kuthia 2025-02-05

vay be...

 
kaydash 2025-02-05

Vay be......