1 पॉइंट द्वारा GN⁺ 3 시간 전 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Servo 0.3.0 मई में merge किए गए 391 commits के साथ आया release है, जिसमें web platform, embedding API, performance, stability और security fixes एक साथ शामिल हैं
  • web platform में font-variant-*, fast start के बिना mp4 `` playback, form encoding, और DOM API additions से real sites compatibility बढ़ी है
  • security के लिहाज से JS runtime को SpiderMonkey 140.10.1 पर upgrade कर memory safety bugs ठीक किए गए हैं, और ये CVE-2026-7322·CVE-2026-7323·MFSA 2026-36 से जुड़े हैं
  • users और developers servoshell के --host-file=, --userscripts= options और Firefox DevTools Debugger के “Ignore source” blackboxing का उपयोग कर सकते हैं
  • embedders को Rust 1.88.0 या उससे ऊपर की requirement और SiteDataManager·Preferences·DiagnosticsLogging के breaking changes को अपनाना होगा; performance improvements layout traversal घटाने और thread pool consolidation पर केंद्रित हैं

Servo 0.3.0 में शामिल मई के बदलाव

  • Servo 0.3.0 में मई में merge हुए बदलाव शामिल हैं, और कुल 391 commits हैं
  • नए web platform features fonts, media, forms और layout compatibility में जोड़े गए हैं
    • CSS font features: font-kerning: none, font-variant-east-asian, font-variant-ligatures, font-variant-numeric, font-variant-position
    • Media और forms: fast start के बिना mp4 files के support,, ``
    • Layout: `` layout
  • DOM API भी कई standard areas में बढ़ा है
    • onslotchange property ShadowRoot में जोड़ी गई
    • screenLeft, screenTop Window में जोड़े गए
    • new Blob() में {endings: "native"} support करता है
    • new PerformanceMark() जोड़ा गया
    • parseHTML() Document में जोड़ा गया
    • readAsBinaryString() FileReader में जोड़ा गया
    • performance.measure() redirectStart, redirectEnd, secureConnectionStart, responseEnd mark values support करता है
  • Windows, FreeBSD, NixOS या Nix-based environments की build issues भी ठीक की गई हैं

Security: SpiderMonkey memory safety fixes

  • Servo के JS runtime SpiderMonkey 140.10.0 में कई memory safety bugs थे
  • Servo 0.3.0 ने SpiderMonkey 140.10.1 update के जरिए इन issues को ठीक किया
  • details CVE-2026-7322, CVE-2026-7323, MFSA 2026-36 में देखी जा सकती हैं

जारी web features

  • document.execCommand() implementation rich text editing support के लिए जारी है, और --pref dom_exec_command_enabled के तहत चलता है
    • इस release में backColor, foreColor, createLink, unlink, superscript, subscript, removeFormat commands support किए गए हैं
    • insertParagraph command आंशिक रूप से support है
  • Sanitizer API पर काम --pref dom_sanitizer_enabled के तहत जारी है
    • servoshell के experimental mode में enabled है
    • Sanitizer के setComments(), setDataAttributes(), allowProcessingInstruction(), removeProcessingInstruction(), removeUnsafe() जोड़े गए हैं
  • IndexedDB --pref dom_indexeddb_enabled के तहत बेहतर हो रहा है, और IDBTransaction.abort() की standards conformance बढ़ी है
  • ऊपर के features servoshell के experimental mode में enabled हैं
  • accessibility support में name from contents algorithm और accessibility tree को incrementally build करने वाले changes शामिल हैं
    • incremental accessibility tree building real web content performance के लिए महत्वपूर्ण है
  • worker-related implementation भी शुरू हुआ है
    • SharedWorker --pref dom_sharedworker_enabled के तहत new SharedWorker() support करता है
    • ServiceWorker में --pref dom_serviceworker_enabled के तहत API के कुछ हिस्से जोड़े गए हैं

Embedding API changes और migration points

  • Servo का minimum supported Rust version यानी MSRV 1.86.0 से बढ़कर 1.88.0 या उससे ऊपर हो गया है
    • MSRV पर compile tests किए जाते हैं, लेकिन ज्यादातर tests Rust 1.95.0 से किए जाते हैं
  • SiteDataManager के cookie methods में breaking changes हैं
    • clear_cookies, clear_session_cookies, set_cookie_for_url अब अतिरिक्त callback argument लेते हैं, जिससे async calls संभव होती हैं
    • sync calls बनाए रखने के लिए callback में None pass करें
    • set_cookie_for_url_async हटाया गया है, और इसे set_cookie_for_url(Some(Box::new(callback))) रूप में बदलना होगा
  • Preferences API में thread pool setting names साफ किए गए हैं
  • DiagnosticsLogging API भी reworked हुई है
    • toggle_option से options set करें और is_enabled से enabled status check करें
    • हर option नए type DiagnosticsLoggingOption का variant है
    • DiagnosticsLogging के option-specific pub fields हटाए गए हैं, और field write/read को क्रमशः toggle_option, is_enabled से बदलना होगा
    • extend_from_string अब help option नहीं लेता, और उसका implementation servoshell में move किया गया है

User और developer features

  • servoshell में 2 नए options जोड़े गए हैं
    • --host-file= hosts file path set करता है, और HOST_FILE environment variable का alternative है
    • --userscripts= सभी documents में चलाने के लिए user scripts directory specify करता है
  • Firefox DevTools Debugger tab में script blackboxing संभव हो गया है
    • “Ignore source” click करने पर उस script के अंदर breakpoints hit नहीं होंगे
    • debugger में execution step-by-step आगे बढ़ाने पर भी उस script के अंदर नहीं रुकना चाहिए
    • Scopes panel की accuracy भी improved हुई है
  • Servo के अपने developers project policy के अनुसार large language models या generative AI tools के output को contributions में इस्तेमाल नहीं कर सकते
    • इसे enforce करने के लिए AI agent को coauthor के रूप में शामिल करने वाली contributions reject करने वाला CI check जोड़ा गया है
  • --features vello build issue भी ठीक किया गया है

Web platform की detailed improvements

  • कई HTML elements की default display बेहतर की गई है
    • targets हैं , , , , , , , , , , , , ``
  • CryptoKey serializable हो गया है, इसलिए उसे structuredClone() और postMessage() में इस्तेमाल किया जा सकता है
  • DOM के कई हिस्सों में JS error messages बेहतर किए गए हैं
  • standards conformance improvements में ये areas शामिल हैं
    • form submission, tab navigation, javascript: URL navigation
    • Refresh header और ``
    • line-break: anywhere, Location.assign()
    • crypto.subtle.deriveBits(), getComputedStyle(), performance.measure()
    • FileReader.readAsDataURL(), Blob.stream()
    • SubtleCrypto का ML-KEM
  • WebGPU side पर GPUSupportedLimits, GPUTexture, GPUDevice.createBindGroup() और अन्य WebGPU features बेहतर किए गए हैं
  • bug fixes में `` और Content-Security-Policy, :active, :hover, align-items, border-image-outset, overflow: scroll की padding, pointerup event, slotchange event, dynamic import(), CanvasRenderingContext2D.clip() आदि शामिल हैं

Performance improvements: layout traversal में कमी और lazy processing

  • about:memory improvement के लिए untracked allocations ढूंढने वाला tool बनाया गया
  • image cache, web storage और IndexedDB के thread pools consolidate किए गए, जिससे प्रति CPU जरूरी OS threads की संख्या घटी
  • layout optimization fragment tree traversal और caching cost घटाने पर केंद्रित है
    • fragment tree ज्यादातर immutable हो गया है, जिससे कई accesses में AtomicRefCell borrow की runtime cost खत्म हुई
    • containing block calculation और stacking context tree construction ज्यादातर cases में single fragment tree traversal में combine हो गए
    • scrollable overflow calculation lazy·incremental तरीके में बदल गया, जिससे पूरे fragment tree traversal को effectively हटाया गया
    • reflow के बीच fragments, shaping results और अन्य layout results की caching बेहतर हुई
    • incremental fragment layout की precision बढ़ी
    • text shaping की memory usage घटी
  • DOM attributes processing भी efficient हुआ है
    • script जब attribute values लिखता है, तब दोबारा read होने तक serialization avoid करता है, और inline style की frequent writes अधिकतम 25% तेज हुईं
    • HTML parsing या internal attribute read के समय script को वास्तव में जरूरत पड़ने तक Attr node creation से बचता है, जिससे memory usage और garbage collection की संभावना घटती है
  • tree से attach होते ही पूरे DOM tree को traverse करने वाला behavior हटाया गया, जिसका असर बहुत सारे tags वाले document parsing में महसूस होता है
  • stylesheet lock parking_lot::RwLock से अधिक efficient AtomicRefCell इस्तेमाल करता है
  • OpenHarmony में real refresh driver जोड़ा गया, जिससे idle CPU usage घटी, और font list को disk पर cache करके startup speed बढ़ी
  • build time improvement के लिए विशाल script crate से और code अलग किया गया, और dependency tree size भी घटाया गया

Stability fixes और type system का उपयोग

  • कई crashes और hangs ठीक किए गए
    • content, MediaStream, Element.attributes.item(), CSSKeyframesRule.appendRule(), FocusEvent.initEvent(), Window.stop()
    • document.execCommand("delete")
    • --debug-mozjs build
    • DevTools में paused state के दौरान script evaluation
    • DevTools में कुछ JS values का preview
    • layout में zero-width space shaping
    • servoshell के experimental mode को runtime पर toggle करने की स्थिति
  • Rust type system का उपयोग करके कुछ dynamic borrow failures को असंभव बनाने वाला long-term work जारी है

Contributors और sponsorship status

  • 9 लोगों ने Servo में अपना पहला patch merge किया
    • AbdAlRahman Gad, Onyeka Obi, Steve Sharon Sam, avis137, Xabier Rodríguez, June, Matt Van Horn, nicole, panxt8
  • नए contributors के लिए उपयुक्त issues की list curated list के रूप में उपलब्ध है
  • recurring sponsorship 7659 dollars per month है, जो April की तुलना में 4.2% बढ़ी है
    • sponsorship funds CI·benchmarking servers, Outreachy interns और maintainer work support में इस्तेमाल होते हैं
  • thanks.dev पर Servo पर depend करने वाले 35 GitHub users sponsorship दे रहे हैं, April से 2 ज्यादा
  • sponsorship fund usage Technical Steering Committee की public funding request process के जरिए तय होता है, और active proposals servo/project#187 में tracked हैं

1 टिप्पणियां

 
GN⁺ 3 시간 전
Lobste.rs की राय
  • खुशी है कि lobste.rs Servo में लगभग बिल्कुल सही तरीके से काम कर रहा है
    जो चीज़ें नज़र आईं, वे बस इतनी हैं कि bold links bold नहीं दिखते, font थोड़ा अजीब लगता है (Fira Sans जैसा), login page के input fields बहुत पतले हैं, और इस text field पर click करने पर cursor click की गई जगह से अलग जगह पर रखा जाता है
    comments में कहा गया था कि JavaScript engine Firefox जैसा ही है, इसलिए कुल मिलाकर यह उम्मीद के मुताबिक काम करता दिखता है
    सुधार: experimental settings चालू करने पर bold text की समस्या हल हो गई
  • Servo को बने हुए कई साल हो गए हैं, और शुरुआत में इसका मतलब ही क्या था?
    • Servo एक experimental project था जिसे Mozilla ने Rust में नया browser बनाने के लिए शुरू किया था
      इसके प्रमुख लक्ष्यों में से एक Microsoft HoloLens था, लेकिन आखिरकार बड़े project के रूप में इसे बंद कर दिया गया, और इसके कुछ components Firefox में शामिल कर लिए गए
      उदाहरण के लिए CSS engine उनमें से एक था, जिसे multi-threaded प्रकृति के कारण C++ में लिखना मुश्किल था
      बाद में Igalia ने इसे अपने हाथ में लिया और नया governing body बन गया, और project को फिर से जीवित कर एक नया competitor बनाने की कोशिश कर रहा है
      JavaScript engine Firefox जैसा ही है
    • project 2012 में शुरू हुआ था, लेकिन जहां तक मुझे पता है, कई साल तक development ठहरा रहा और हाल ही में तेज़ गति से फिर शुरू हुआ है
      उद्देश्य प्रमुख browser engines का एक alternative रखना है, खासकर Chrome engine Blink को ज़्यादा competition देना
    • मौजूदा hardware जिस parallelism और concurrency को support करता है, उसका ज़्यादा आसानी से लाभ उठा सकने वाली memory-safe language में browser engine implement करना आज भी उतना ही बड़ा फायदा है जितना project शुरू होने के समय था
      बड़ी tech कंपनियों के प्रभाव से अलग web platform implementation होना भी महत्वपूर्ण है
      Google के पास अभी बहुत ज़्यादा ताकत है, और Mozilla ने कई सालों तक लगभग सबसे खराब प्रदर्शन किया है
      इसलिए कम से कम मैं हर महीने कुछ डॉलर support करता हूं