1 puan yazan GN⁺ 3 시간 전 | 1 yorum | WhatsApp'ta paylaş
  • Servo 0.3.0, Mayıs ayında birleştirilen 391 commit'i içeriyor ve web platformu, embedding API, performans, kararlılık ve güvenlik düzeltmelerini tek bir sürümde sunuyor
  • Web platformu tarafında font-variant-*, fast start olmayan mp4 `` oynatma, form encoding ve ek DOM API'leriyle gerçek sitelerle uyumluluk genişletildi
  • Güvenlik tarafında JS runtime SpiderMonkey 140.10.1 sürümüne yükseltilerek bellek güvenliği hataları düzeltildi; bu değişiklik CVE-2026-7322, CVE-2026-7323 ve MFSA 2026-36 ile bağlantılı
  • Kullanıcılar ve geliştiriciler, servoshell'in --host-file=, --userscripts= seçeneklerini ve Firefox DevTools Debugger içindeki “Ignore source” blackboxing özelliğini kullanabiliyor
  • Embedder'ların Rust 1.88.0 veya üstü gereksinimini ve SiteDataManager, Preferences, DiagnosticsLogging içindeki breaking change'leri dikkate alması gerekiyor; performans iyileştirmeleri ise layout traversal'ın azaltılması ve thread pool birleştirmesine odaklanıyor

Servo 0.3.0'a dahil olan Mayıs değişiklikleri

  • Servo 0.3.0, Mayıs ayında birleştirilen değişiklikleri içeriyor ve toplamda 391 commit barındırıyor
  • Yeni web platformu özellikleri yazı tipi, medya, form ve layout uyumluluğu alanlarına yayılarak eklendi
    • CSS yazı tipi özellikleri: font-kerning: none, font-variant-east-asian, font-variant-ligatures, font-variant-numeric, font-variant-position
    • Medya ve formlar: fast start olmayan mp4 dosyaları için desteği,, ``
    • Layout: `` layout
  • DOM API de çeşitli standart alanlarında genişletildi
    • onslotchange özelliği ShadowRoot'a eklendi
    • screenLeft, screenTop özellikleri Window'a eklendi
    • new Blob() içinde {endings: "native"} destekleniyor
    • new PerformanceMark() eklendi
    • parseHTML() Document'e eklendi
    • readAsBinaryString() FileReader'a eklendi
    • performance.measure(), redirectStart, redirectEnd, secureConnectionStart, responseEnd mark değerlerini destekliyor
  • Windows, FreeBSD, NixOS veya Nix tabanlı ortamlardaki build sorunları da düzeltildi

Güvenlik: SpiderMonkey bellek güvenliği düzeltmeleri

  • Servo'nun JS runtime'ı olan SpiderMonkey 140.10.0 içinde birden fazla bellek güvenliği hatası bulunuyordu
  • Servo 0.3.0, SpiderMonkey 140.10.1 güncellemesiyle bu sorunları gideriyor
  • Ayrıntılar CVE-2026-7322, CVE-2026-7323, MFSA 2026-36 sayfalarında görülebilir

Devam eden web özellikleri

  • document.execCommand() implementasyonu, rich text editing desteği için sürdürülüyor ve --pref dom_exec_command_enabled altında çalışıyor
    • Bu sürüm backColor, foreColor, createLink, unlink, superscript, subscript, removeFormat komutlarını destekliyor
    • insertParagraph komutu kısmi olarak destekleniyor
  • Sanitizer API çalışmaları --pref dom_sanitizer_enabled altında devam ediyor
    • servoshell'in deneysel modunda etkinleştiriliyor
    • Sanitizer için setComments(), setDataAttributes(), allowProcessingInstruction(), removeProcessingInstruction(), removeUnsafe() eklendi
  • IndexedDB, --pref dom_indexeddb_enabled altında geliştirilmeye devam ediyor ve IDBTransaction.abort() için standart uyumluluğu artırıldı
  • Bu özellikler servoshell'in deneysel modunda etkinleştiriliyor
  • Erişilebilirlik desteği, name from contents algoritmasını ve erişilebilirlik ağacının kademeli olarak oluşturulmasını içeren değişiklikler barındırıyor
    • Erişilebilirlik ağacının kademeli oluşturulması, gerçek web içeriği performansı açısından önemli
  • Worker tarafındaki implementasyonlar da başladı
    • SharedWorker, --pref dom_sharedworker_enabled altında new SharedWorker() desteği sunuyor
    • ServiceWorker, --pref dom_serviceworker_enabled altında API'nin bazı bölümlerini ekliyor

Embedding API değişiklikleri ve geçiş noktaları

  • Servo'nun minimum desteklenen Rust sürümü olan MSRV, 1.86.0'dan 1.88.0 ve üstüne çıkarıldı
    • MSRV ile derleme testleri yapılıyor, ancak testlerin çoğu Rust 1.95.0 ile yürütülüyor
  • SiteDataManager içindeki cookie metodlarında breaking change bulunuyor
    • clear_cookies, clear_session_cookies, set_cookie_for_url artık ek bir callback argümanı alıyor ve asenkron çağrı yapılabiliyor
    • Senkron çağrıyı korumak için callback parametresine None verilmesi gerekiyor
    • set_cookie_for_url_async kaldırıldı; bunun yerine set_cookie_for_url(Some(Box::new(callback))) kullanılmalı
  • Preferences API'sinde thread pool ayar adları düzenlendi
  • DiagnosticsLogging API'si de yeniden düzenlendi
    • Seçenekler toggle_option ile ayarlanıyor ve etkinlik durumu is_enabled ile kontrol ediliyor
    • Her seçenek, yeni DiagnosticsLoggingOption tipinin bir variant'ı
    • DiagnosticsLogging içindeki seçenek bazlı pub alanları kaldırıldı; alan yazma ve okuma işlemleri sırasıyla toggle_option ve is_enabled ile değiştirilmeli
    • extend_from_string artık help seçeneğini kabul etmiyor; ilgili implementasyon servoshell'e taşındı

Kullanıcı ve geliştirici özellikleri

  • servoshell için iki yeni seçenek eklendi
    • --host-file= hosts file yolunu ayarlar ve HOST_FILE environment variable'ına alternatiftir
    • --userscripts= tüm belgelerde çalıştırılacak kullanıcı scriptleri dizinini belirtir
  • Firefox DevTools Debugger sekmesinde script blackboxing mümkün hale geldi
    • “Ignore source” tıklandığında ilgili script içinde breakpoint tetiklenmiyor
    • Debugger ile adım adım ilerlerken de bu script'in içine girip durmaması gerekiyor
    • Scopes panelinin doğruluğu da iyileştirildi
  • Servo'nun kendi geliştiricileri, proje politikası gereği büyük dil modeli veya üretken yapay zeka araçlarının çıktılarını katkılarda kullanamıyor
    • Bunu zorunlu kılmak için, AI agent'ı coauthor olarak içeren katkıları reddeden bir CI kontrolü eklendi
  • --features vello build sorunu da düzeltildi

Web platformunda ayrıntılı iyileştirmeler

  • Çeşitli HTML öğelerinin varsayılan gösterimi iyileştirildi
    • Hedefler , , , , , , , , , , , , ``
  • CryptoKey serileştirilebilir hale geldi; böylece structuredClone() ve postMessage() içinde kullanılabiliyor
  • DOM'un çeşitli bölümlerindeki JS hata mesajları iyileştirildi
  • Standart uyumluluğu şu alanlarda artırıldı
    • Form gönderimi, tab navigation, javascript: URL navigation
    • Refresh header ve ``
    • line-break: anywhere, Location.assign()
    • crypto.subtle.deriveBits(), getComputedStyle(), performance.measure()
    • FileReader.readAsDataURL(), Blob.stream()
    • SubtleCrypto içindeki ML-KEM
  • WebGPU tarafında GPUSupportedLimits, GPUTexture, GPUDevice.createBindGroup() ve diğer WebGPU özellikleri geliştirildi
  • Hata düzeltmeleri; ``, Content-Security-Policy, :active, :hover, align-items, border-image-outset, overflow: scroll için padding, pointerup event'i, slotchange event'i, dinamik import(), CanvasRenderingContext2D.clip() ve daha fazlasını kapsıyor

Performans iyileştirmeleri: layout traversal azaltımı ve ertelenmiş işleme

  • about:memory iyileştirmeleri için izlenmeyen allocation'ları bulan bir araç oluşturuldu
  • Image cache, web storage ve IndexedDB için kullanılan thread pool'lar birleştirildi; böylece CPU başına gereken OS thread sayısı azaltıldı
  • Layout optimizasyonları, fragment tree traversal ve cache maliyetini azaltmaya odaklandı
    • Fragment tree büyük ölçüde immutable hale geldi; böylece birçok erişimde AtomicRefCell borrow'un runtime maliyeti ortadan kalktı
    • Containing block hesaplaması ile stacking context tree oluşturma, çoğu durumda tek bir fragment tree traversal içinde birleştirildi
    • Scrollable overflow hesaplaması lazy ve incremental hale getirildi; bu da tam fragment tree traversal'ı fiilen ortadan kaldırdı
    • Reflow'lar arasında fragment, shaping sonuçları ve diğer layout sonuçları için cache kullanımı geliştirildi
    • Incremental fragment layout hassasiyeti artırıldı
    • Metin shaping'in bellek kullanımı azaltıldı
  • DOM attributes işleme de daha verimli hale getirildi
    • Script, attribute değerlerini yazdığında tekrar okunana kadar serialization yapılmıyor; bu sayede inline style'a sık yazım işlemleri en fazla %25 hızlandı
    • HTML parsing veya dahili attribute okumaları sırasında, script gerçekten ihtiyaç duymadan Attr node'ları oluşturulmuyor; böylece bellek kullanımı ve garbage collection olasılığı düşüyor
  • ağaca her eklendiğinde tüm DOM tree'yi dolaşan davranış kaldırıldı; bu da çok sayıda etiketi içeren belgelerin parse edilmesinde hissediliyor
  • Stylesheet lock, parking_lot::RwLock yerine daha verimli AtomicRefCell kullanıyor
  • OpenHarmony'de gerçek bir refresh driver eklendi; böylece boşta CPU kullanımı düştü ve font listesi diskte cache'lenerek başlangıç hızı arttı
  • Build süresini iyileştirmek için büyük script crate içinden daha fazla kod ayrıştırıldı ve dependency tree boyutu küçültüldü

Kararlılık düzeltmeleri ve tip sisteminin kullanımı

  • Birden fazla crash ve hang sorunu düzeltildi
    • content, MediaStream, Element.attributes.item(), CSSKeyframesRule.appendRule(), FocusEvent.initEvent(), Window.stop()
    • document.execCommand("delete")
    • --debug-mozjs build
    • DevTools'ta duraklatma sırasında script değerlendirme
    • DevTools'ta bazı JS değerlerinin önizlemesi
    • Layout içinde zero-width space shaping
    • servoshell'in deneysel modunu çalışma zamanında değiştirme
  • Rust tip sistemi kullanılarak bazı dinamik borrow hatalarını imkansız hale getirmeyi amaçlayan uzun vadeli çalışma sürüyor

Katkıcılar ve sponsorluk durumu

  • 9 kişi Servo'ya ilk patch'ini birleştirdi
    • AbdAlRahman Gad, Onyeka Obi, Steve Sharon Sam, avis137, Xabier Rodríguez, June, Matt Van Horn, nicole, panxt8
  • Yeni katkıcılara uygun issue listesi curated list üzerinden sunuluyor
  • Düzenli sponsorluk geliri aylık 7659 dolar seviyesine çıktı; bu, Nisan ayına göre %4,2 artış anlamına geliyor
    • Sponsor gelirleri CI ve benchmarking sunucuları, Outreachy stajyerleri ve maintainer çalışmalarını desteklemek için kullanılıyor
  • thanks.dev üzerinde Servo'ya bağımlı 35 GitHub kullanıcısı sponsorluk sağlıyor; bu sayı Nisan'a göre 2 kişi arttı
  • Sponsorluk kullanımına, Technical Steering Committee'nin açık funding request process süreciyle karar veriliyor ve aktif öneriler servo/project#187 üzerinden takip ediliyor

1 yorum

 
GN⁺ 3 시간 전
Lobste.rs yorumları
  • lobste.rs’in Servo’da neredeyse kusursuz çalışmasına sevindim
    Gözüme çarpanlar yalnızca kalın bağlantıların kalın görünmemesi, yazı tipinin biraz tuhaf olması (Fira Sans gibi hissettiriyor), giriş sayfasındaki giriş alanlarının fazla ince olması ve bu metin alanına tıklayınca imlecin tıklanan konumdan farklı bir yere yerleşmesi oldu
    Yorumlarda JavaScript motorunun Firefox ile aynı olduğu söylenmişti; genel olarak beklendiği gibi çalışıyor gibi görünüyor
    Düzeltme: Deneysel ayarı açınca kalın yazı sorunu çözüldü
  • Servo yıllardır geliştiriliyor; en başta bunun anlamı ne?
    • Servo, Mozilla’nın Rust ile yeni bir tarayıcı yapmayı hedefleyerek başlattığı deneysel bir projeydi
      Ana hedeflerinden biri Microsoft HoloLens’ti, ancak sonunda büyük bir proje olarak durduruldu ve bazı bileşenleri Firefox’a girdi
      Örneğin çok iş parçacıklı yapısı nedeniyle C++ ile yazılması zor olan CSS motoru bunlardan biriydi
      Daha sonra Igalia devralıp yeni yönetici taraf oldu ve projeyi canlandırarak yeni bir rakibe dönüştürmeye çalışıyor
      JavaScript motoru Firefox ile aynı
    • Proje 2012’de başladı, ancak bildiğim kadarıyla birkaç yıl boyunca geliştirme durakladıktan sonra ancak yakın zamanda hızlı bir tempoyla yeniden başladı
      Amaç, başlıca tarayıcı motorlarına bir alternatif bulundurmak; özellikle de Chrome’un motoru Blink üzerinde daha fazla rekabet baskısı yaratmak
    • Güncel donanımın desteklediği paralellik ve eşzamanlılıktan daha kolay yararlanabilen bellek güvenli bir dil ile tarayıcı motoru uygulamak, proje ilk başladığında olduğu gibi hâlâ büyük bir avantaj
      Büyük teknoloji şirketlerinin etkisinden bağımsız ayrı bir web platformu uygulamasına sahip olmak da önemli
      Google şu anda çok fazla güce sahip, Mozilla ise yıllardır olabilecek en kötü performanslardan birini sergiledi
      Bu yüzden en azından ben her ay birkaç dolar bağış yapıyorum