Pembaruan Servo Mei: skrip pengguna, kompatibilitas mp4, blackboxing DevTools, dan lainnya
(servo.org)- Servo 0.3.0 adalah rilis yang memuat 391 commit yang digabungkan pada Mei, sekaligus mencakup perbaikan untuk platform web, API embedding, performa, stabilitas, dan keamanan
- Di platform web, kompatibilitas dengan situs nyata diperluas lewat tambahan
font-variant-*, pemutaran mp4 `` tanpa fast start, encoding form, dan DOM API - Dari sisi keamanan, runtime JS dinaikkan ke SpiderMonkey 140.10.1 untuk memperbaiki bug keamanan memori, terkait dengan CVE-2026-7322, CVE-2026-7323, dan MFSA 2026-36
- Pengguna dan developer dapat memanfaatkan opsi
--host-file=,--userscripts=di servoshell serta blackboxing “Ignore source” di Firefox DevTools Debugger - Embedder perlu menyesuaikan persyaratan Rust 1.88.0 atau lebih baru serta breaking change pada SiteDataManager, Preferences, dan DiagnosticsLogging; peningkatan performa berfokus pada pengurangan traversal layout dan penyatuan thread pool
Perubahan Mei yang termasuk dalam Servo 0.3.0
- Servo 0.3.0 memuat perubahan yang digabungkan pada Mei, dengan total 391 commit
- Fitur platform web baru ditambahkan di area kompatibilitas font, media, form, dan layout
- Fitur font CSS:
font-kerning: none,font-variant-east-asian,font-variant-ligatures,font-variant-numeric,font-variant-position - Media dan form: dukungan
untuk file mp4 tanpa fast start,, `` - Layout: layout ``
- Fitur font CSS:
- DOM API juga bertambah di beberapa area standar
- Properti
onslotchangeditambahkan ke ShadowRoot screenLeft,screenTopditambahkan ke Windownew Blob()mendukung{endings: "native"}new PerformanceMark()ditambahkanparseHTML()ditambahkan ke DocumentreadAsBinaryString()ditambahkan ke FileReaderperformance.measure()mendukung nilai markredirectStart,redirectEnd,secureConnectionStart,responseEnd
- Properti
- Masalah build di Windows, FreeBSD, NixOS, atau lingkungan berbasis Nix juga diperbaiki
Keamanan: perbaikan keamanan memori SpiderMonkey
- SpiderMonkey 140.10.0, runtime JS Servo, memiliki beberapa bug keamanan memori
- Servo 0.3.0 memperbaiki masalah tersebut dengan pembaruan ke SpiderMonkey 140.10.1
- Detailnya dapat dilihat di CVE-2026-7322, CVE-2026-7323, dan MFSA 2026-36
Fitur web yang sedang dikerjakan
- Implementasi
document.execCommand()terus berjalan untuk dukungan rich text editing, dan bekerja di bawah--pref dom_exec_command_enabled- Rilis ini mendukung perintah
backColor,foreColor,createLink,unlink,superscript,subscript,removeFormat - Perintah
insertParagraphdidukung sebagian
- Rilis ini mendukung perintah
- Pekerjaan Sanitizer API berlanjut di bawah
--pref dom_sanitizer_enabled- Diaktifkan dalam mode eksperimental servoshell
setComments(),setDataAttributes(),allowProcessingInstruction(),removeProcessingInstruction(),removeUnsafe()padaSanitizerditambahkan
- IndexedDB sedang ditingkatkan di bawah
--pref dom_indexeddb_enabled, dan kesesuaian standarIDBTransaction.abort()meningkat - Fitur-fitur di atas diaktifkan dalam mode eksperimental servoshell
- Dukungan aksesibilitas mencakup algoritme name from contents dan perubahan untuk membangun secara bertahap accessibility tree
- Pembangunan accessibility tree secara bertahap penting untuk performa konten web nyata
- Implementasi terkait worker juga dimulai
SharedWorkermendukungnew SharedWorker()di bawah--pref dom_sharedworker_enabled- Untuk
ServiceWorker, sebagian API ditambahkan di bawah--pref dom_serviceworker_enabled
Perubahan API embedding dan poin migrasi
- Minimum supported Rust version Servo, MSRV, naik dari 1.86.0 menjadi 1.88.0 atau lebih baru
- Uji kompilasi dilakukan dengan MSRV, tetapi sebagian besar pengujian dilakukan dengan Rust 1.95.0
- Ada breaking change pada metode cookie SiteDataManager
clear_cookies,clear_session_cookies,set_cookie_for_urlmenerima argumencallbacktambahan, sehingga pemanggilan asinkron menjadi mungkin- Untuk mempertahankan pemanggilan sinkron, berikan
Nonekecallback set_cookie_for_url_asyncdihapus, dan harus diganti dengan bentukset_cookie_for_url(Some(Box::new(callback)))
- API Preferences merapikan nama pengaturan thread pool
threadpools_image_cache_workers_max,threadpools_indexeddb_workers_max,threadpools_webstorage_workers_maxdiganti denganthread_pool_workers_maxyang terpaduthreadpools_fallback_worker_numberganti nama menjadithread_pool_fallback_workersthreadpools_async_runtime_workers_maxberganti nama menjadithread_pool_async_runtime_workers_maxthreadpools_webrender_workers_maxberganti nama menjadithread_pool_webrender_workers_max
- API DiagnosticsLogging juga dikerjakan ulang
- Opsi diatur dengan
toggle_option, dan status aktifnya diperiksa denganis_enabled - Setiap opsi adalah variant dari tipe baru
DiagnosticsLoggingOption - Field
pubper opsi padaDiagnosticsLoggingdihapus, dan penulisan serta pembacaan field masing-masing harus diganti dengantoggle_optiondanis_enabled extend_from_stringtidak lagi menerima opsihelp, dan implementasi tersebut dipindahkan ke servoshell
- Opsi diatur dengan
Fitur untuk pengguna dan developer
- Dua opsi baru ditambahkan ke servoshell
--host-file=menetapkan path hosts file, sebagai alternatif untuk variabel lingkunganHOST_FILE--userscripts=menentukan direktori skrip pengguna yang akan dijalankan di semua dokumen
- Blackboxing skrip kini dimungkinkan di tab Firefox DevTools Debugger
- Jika mengklik “Ignore source”, breakpoint tidak akan terpasang di dalam skrip tersebut
- Saat menelusuri eksekusi secara bertahap di debugger, seharusnya juga tidak berhenti di dalam skrip tersebut
- Akurasi panel Scopes juga ditingkatkan
- Developer Servo sendiri tidak dapat menggunakan output dari large language model atau alat AI generatif dalam kontribusi, sesuai kebijakan proyek
- Untuk menegakkannya, ditambahkan pemeriksaan CI yang menolak kontribusi yang menyertakan AI agent sebagai coauthor
- Masalah build
--features vellojuga diperbaiki
Peningkatan detail platform web
- Tampilan default beberapa elemen HTML ditingkatkan
- Sasarannya adalah
,,,,,,,,,,,, ``
- Sasarannya adalah
- CryptoKey kini dapat diserialisasi sehingga bisa digunakan dengan
structuredClone()danpostMessage() - Pesan error JS di berbagai bagian DOM ditingkatkan
- Peningkatan kesesuaian standar mencakup area berikut
- Pengiriman form, navigasi tab, navigasi URL
javascript: - Header
Refreshdan `` line-break: anywhere,Location.assign()crypto.subtle.deriveBits(),getComputedStyle(),performance.measure()FileReader.readAsDataURL(),Blob.stream()- ML-KEM pada
SubtleCrypto
- Pengiriman form, navigasi tab, navigasi URL
- Di sisi WebGPU,
GPUSupportedLimits,GPUTexture,GPUDevice.createBindGroup(), dan fitur WebGPU lainnya ditingkatkan - Perbaikan bug mencakup `` dan
Content-Security-Policy,:active,:hover,align-items,border-image-outset,paddingpadaoverflow: scroll, eventpointerup, eventslotchange,import()dinamis,CanvasRenderingContext2D.clip(), dan lainnya
Peningkatan performa: pengurangan traversal layout dan pemrosesan tunda
- Untuk meningkatkan
about:memory, dibuat alat yang menemukan alokasi yang tidak terlacak - Thread pool untuk image cache, web storage, dan IndexedDB disatukan, sehingga jumlah thread OS yang diperlukan per CPU berkurang
- Optimasi layout berfokus pada pengurangan biaya traversal fragment tree dan caching
- Fragment tree sebagian besar menjadi immutable, sehingga biaya runtime borrow
AtomicRefCellhilang pada banyak akses - Perhitungan containing block dan pembangunan stacking context tree dalam sebagian besar kasus digabungkan menjadi satu traversal fragment tree
- Perhitungan scrollable overflow diubah menjadi lazy dan incremental, sehingga traversal seluruh fragment tree praktis dihilangkan
- Caching fragment, hasil shaping, dan hasil layout lainnya antar-reflow ditingkatkan
- Presisi incremental fragment layout ditingkatkan
- Penggunaan memori text shaping berkurang
- Fragment tree sebagian besar menjadi immutable, sehingga biaya runtime borrow
- Pemrosesan DOM attributes juga dibuat lebih efisien
- Saat skrip menulis nilai atribut, serialisasi dihindari hingga nilai itu dibaca kembali, dan penulisan inline style yang sering menjadi hingga 25% lebih cepat
- Saat parsing HTML atau membaca atribut internal, pembuatan node
Attrdihindari hingga benar-benar dibutuhkan oleh skrip, sehingga penggunaan memori dan kemungkinan garbage collection menurun
- Perilaku yang menelusuri seluruh DOM tree setiap kali
ditempelkan ke tree dihapus, dan ini terasa pada parsing dokumen dengan banyak tag - Stylesheet lock menggunakan AtomicRefCell yang lebih efisien daripada
parking_lot::RwLock - Di OpenHarmony, refresh driver nyata ditambahkan untuk mengurangi penggunaan CPU idle, dan font list di-cache ke disk agar startup lebih cepat
- Untuk memperbaiki waktu build, lebih banyak kode dipisahkan dari script crate yang sangat besar, dan ukuran dependency tree juga dikurangi
Perbaikan stabilitas dan pemanfaatan type system
- Beberapa crash dan hang diperbaiki
content,MediaStream,Element.attributes.item(),CSSKeyframesRule.appendRule(),FocusEvent.initEvent(),Window.stop()document.execCommand("delete")- Build
--debug-mozjs - Evaluasi skrip saat sedang paused di DevTools
- Pratinjau sebagian nilai JS di DevTools
- Shaping zero-width space di layout
- Saat men-toggle mode eksperimental servoshell pada runtime
- Pekerjaan jangka panjang untuk menggunakan type system Rust agar kegagalan dynamic borrow tertentu menjadi mustahil terus berlanjut
Kontributor dan status sponsor
- 9 orang menggabungkan patch pertama mereka ke Servo
- AbdAlRahman Gad, Onyeka Obi, Steve Sharon Sam, avis137, Xabier Rodríguez, June, Matt Van Horn, nicole, panxt8
- Daftar issue yang cocok untuk kontributor baru tersedia sebagai curated list
- Sponsor berulang mencapai US$7.659 per bulan, naik 4,2% dibanding April
- Dana sponsor digunakan untuk server CI dan benchmarking, intern Outreachy, serta dukungan pekerjaan maintainer
- Di thanks.dev, 35 pengguna GitHub yang bergantung pada Servo sedang menjadi sponsor, bertambah 2 orang dari April
- Penggunaan dana sponsor diputuskan melalui funding request process publik dari Technical Steering Committee, dan proposal aktif dilacak di servo/project#187
1 komentar
Komentar di Lobste.rs
Yang terlihat hanya tautan tebal tidak tampil tebal, font terasa sedikit janggal (terasa seperti Fira Sans), kolom input di halaman login terlalu tipis, dan saat mengeklik kolom teks ini, kursor ditempatkan tidak sesuai dengan posisi klik
Karena di komentar disebutkan bahwa mesin JavaScript-nya sama dengan Firefox, secara keseluruhan sepertinya berjalan sesuai harapan
Koreksi: setelah mengaktifkan pengaturan eksperimental, masalah teks tebal terselesaikan
Salah satu tujuan utamanya adalah Microsoft HoloLens, tetapi akhirnya dihentikan sebagai proyek besar, dan sebagian komponennya masuk ke Firefox
Misalnya, mesin CSS yang sulit ditulis dengan C++ karena sifat multithread-nya adalah salah satunya
Setelah itu Igalia mengambil alih dan menjadi pengelola baru, dan kini berupaya menghidupkan kembali proyek ini agar menjadi pesaing baru
Mesin JavaScript-nya sama dengan Firefox
Tujuannya adalah memiliki alternatif bagi mesin browser utama, khususnya memberi lebih banyak persaingan bagi Blink, mesin Chrome
Memiliki implementasi platform web tersendiri yang lepas dari pengaruh perusahaan teknologi raksasa juga penting
Google saat ini memiliki kekuatan yang terlalu besar, dan Mozilla selama bertahun-tahun telah menunjukkan kinerja yang nyaris paling buruk
Jadi setidaknya saya mendukungnya beberapa dolar setiap bulan