Servo Mayıs güncellemesi: kullanıcı scriptleri, mp4 uyumluluğu, DevTools blackboxing ve daha fazlası
(servo.org)- 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
- CSS yazı tipi özellikleri:
- DOM API de çeşitli standart alanlarında genişletildi
onslotchangeözelliği ShadowRoot'a eklendiscreenLeft,screenTopözellikleri Window'a eklendinew Blob()içinde{endings: "native"}destekleniyornew PerformanceMark()eklendiparseHTML()Document'e eklendireadAsBinaryString()FileReader'a eklendiperformance.measure(),redirectStart,redirectEnd,secureConnectionStart,responseEndmark 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_enabledaltında çalışıyor- Bu sürüm
backColor,foreColor,createLink,unlink,superscript,subscript,removeFormatkomutlarını destekliyor insertParagraphkomutu kısmi olarak destekleniyor
- Bu sürüm
- Sanitizer API çalışmaları
--pref dom_sanitizer_enabledaltında devam ediyor- servoshell'in deneysel modunda etkinleştiriliyor
SanitizeriçinsetComments(),setDataAttributes(),allowProcessingInstruction(),removeProcessingInstruction(),removeUnsafe()eklendi
- IndexedDB,
--pref dom_indexeddb_enabledaltında geliştirilmeye devam ediyor veIDBTransaction.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_enabledaltındanew SharedWorker()desteği sunuyorServiceWorker,--pref dom_serviceworker_enabledaltı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_urlartık ek bircallbackargümanı alıyor ve asenkron çağrı yapılabiliyor- Senkron çağrıyı korumak için
callbackparametresineNoneverilmesi gerekiyor set_cookie_for_url_asynckaldırıldı; bunun yerineset_cookie_for_url(Some(Box::new(callback)))kullanılmalı
- Preferences API'sinde thread pool ayar adları düzenlendi
threadpools_image_cache_workers_max,threadpools_indexeddb_workers_max,threadpools_webstorage_workers_max, birleşikthread_pool_workers_maxile değiştirildithreadpools_fallback_worker_num,thread_pool_fallback_workersolarak yeniden adlandırıldıthreadpools_async_runtime_workers_max,thread_pool_async_runtime_workers_maxolarak yeniden adlandırıldıthreadpools_webrender_workers_max,thread_pool_webrender_workers_maxolarak yeniden adlandırıldı
- DiagnosticsLogging API'si de yeniden düzenlendi
- Seçenekler
toggle_optionile ayarlanıyor ve etkinlik durumuis_enabledile kontrol ediliyor - Her seçenek, yeni
DiagnosticsLoggingOptiontipinin bir variant'ı DiagnosticsLoggingiçindeki seçenek bazlıpubalanları kaldırıldı; alan yazma ve okuma işlemleri sırasıylatoggle_optionveis_enabledile değiştirilmeliextend_from_stringartıkhelpseçeneğini kabul etmiyor; ilgili implementasyon servoshell'e taşındı
- Seçenekler
Kullanıcı ve geliştirici özellikleri
- servoshell için iki yeni seçenek eklendi
--host-file=hosts file yolunu ayarlar veHOST_FILEenvironment 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 vellobuild sorunu da düzeltildi
Web platformunda ayrıntılı iyileştirmeler
- Çeşitli HTML öğelerinin varsayılan gösterimi iyileştirildi
- Hedefler
,,,,,,,,,,,, ``
- Hedefler
- CryptoKey serileştirilebilir hale geldi; böylece
structuredClone()vepostMessage()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 Refreshheader ve ``line-break: anywhere,Location.assign()crypto.subtle.deriveBits(),getComputedStyle(),performance.measure()FileReader.readAsDataURL(),Blob.stream()SubtleCryptoiçindeki ML-KEM
- Form gönderimi, tab navigation,
- 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: scrolliçinpadding,pointerupevent'i,slotchangeevent'i, dinamikimport(),CanvasRenderingContext2D.clip()ve daha fazlasını kapsıyor
Performans iyileştirmeleri: layout traversal azaltımı ve ertelenmiş işleme
about:memoryiyileş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
AtomicRefCellborrow'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ı
- Fragment tree büyük ölçüde immutable hale geldi; böylece birçok erişimde
- 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
Attrnode'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ıdaetiketi içeren belgelerin parse edilmesinde hissediliyor- Stylesheet lock,
parking_lot::RwLockyerine 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-mozjsbuild- 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
Lobste.rs yorumları
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ü
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ı
Amaç, başlıca tarayıcı motorlarına bir alternatif bulundurmak; özellikle de Chrome’un motoru Blink üzerinde daha fazla rekabet baskısı yaratmak
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