1 คะแนน โดย GN⁺ 2024-09-01 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • อัปเดต Servo เดือนสิงหาคม 2024 ครอบคลุมตั้งแต่ ฟีเจอร์ของเว็บเอนจิน ไปจนถึงเบราว์เซอร์ servoshell, คุณภาพบน Windows, เครื่องมือสำหรับนักพัฒนา และเสถียรภาพของ CI
  • Nightly build เพิ่ม HTMLDialogElement.show(), การเรนเดอร์อินพุตใน <textarea>, border-image, structuredClone(), crypto.randomUUID(), การเล่น WAV, Web Audio IIRFilterNode, การนำทางแบบ cross-origin redirect และอื่น ๆ
  • คอมโพเนนต์หลักอัปเกรดเป็น SpiderMonkey 128, WebRender 0.65, wgpu 22.0, Rust 1.80.1 และเปิดใช้ WebXR กับ flexbox เป็นค่าเริ่มต้น
  • servoshell ได้ การท่องเว็บแบบแท็บ รวมถึงทูลบาร์ใหม่และหน้าแท็บใหม่ ส่วนบน Windows มีการปรับปรุงการนำทางด้วยคีย์บอร์ด, การส่งออก PNG, ปัญหาเกี่ยวกับฟอนต์และ GPU
  • CI runner ใหม่ทำให้เวลาบิลด์เฉพาะ Windows ลดลง 70% และแก้ไขแครชหลายรายการที่เกิดบนเว็บไซต์จริง รวมถึง BorrowError ที่เกี่ยวข้องกับ GC ของ SpiderMonkey

การเพิ่มฟีเจอร์เว็บแพลตฟอร์ม

  • Servo nightly build ทยอยเพิ่ม เว็บ API และฟีเจอร์ CSS หลายรายการ
    • 2024-07-27: รองรับพื้นฐานสำหรับ show() ของ HTMLDialogElement
    • 2024-07-29: คุณสมบัติ type ของ HTMLFieldSetElement
    • 2024-07-31: การเรนเดอร์ข้อความที่ป้อนใน <textarea>
    • 2024-07-31: พร็อพเพอร์ตี CSS border-image
    • 2024-08-02: CSP source unsafe-eval, wasm-unsafe-eval
    • 2024-08-04: การเล่น ไฟล์เสียง WAV
    • 2024-08-09: API structuredClone()
    • 2024-08-12: IIRFilterNode ของ Web Audio
    • 2024-08-13: การนำทางแบบ cross-origin redirect
    • 2024-08-23: API crypto.randomUUID()
    • 2024-08-29: พร็อพเพอร์ตี CSS clip-path
      • ยกเว้นค่า path(), polygon(), shape(), url()

การเปลี่ยนแปลงคอมโพเนนต์ของเอนจินและพฤติกรรมเริ่มต้น

  • Servo อัปเกรดคอมโพเนนต์พึ่งพาหลักเป็นเวอร์ชันล่าสุด
    • SpiderMonkey 128

    • WebRender 0.65

    • wgpu 22.0

      • Rust 1.80.1
      • เปิดใช้ WebXR และ flexbox เป็นค่าเริ่มต้น
      • เว็บ API ที่คืนค่า Promise เมื่อเกิดความล้มเหลวจะ reject Promise อย่างถูกต้อง แทนที่จะโยน exception

การปรับปรุง WebXR และ flexbox

  • WebXR API ได้ปรับปรุงหลายอินเทอร์เฟซและความสามารถด้านอินพุตให้สอดคล้องกับการเปิดใช้เป็นค่าเริ่มต้น
    • เพิ่มการรองรับ Gamepad
    • มีการอัปเดตเกี่ยวกับ hand input, XRBoundedReferenceSpace, XRFrame, XRInputSource, XRPose, XRSession, XRTargetRayMode, XRView, XRWebGLLayer
    • ตอนนี้ makeXRCompatible() เรียกได้ทั้งบน WebGLRenderingContext และ WebGL2RenderingContext
  • flexbox ได้เสริม ฟีเจอร์เลย์เอาต์ ที่ใช้บ่อย
    • พร็อพเพอร์ตี gap
    • align-content: stretch
    • ค่า start, end ของ align-items, align-self
    • รองรับพื้นฐานสำหรับ flex-direction: column, column-reverse
  • การจัดวางและการคำนวณขนาดของ flex item ก็แม่นยำขึ้นด้วย
    • รองรับ position: relative ใน flex item
    • z-index ของ flex item จะสร้าง stacking context เสมอ
    • ใช้ intrinsic size ที่ถูกต้องกับ flex item และ flex container
  • งานรองรับข้อความสองทิศทางกำลังดำเนินอยู่
    • รวมถึงการเปลี่ยนสถาปัตยกรรม fragment tree และงานเกี่ยวกับอินเทอร์เฟซ writing-mode
    • รองรับพร็อพเพอร์ตี unicode-bidi และแอตทริบิวต์ dir บางส่วน
    • ยังไม่รองรับค่า dir=auto

เบราว์เซอร์ servoshell และคุณภาพบน Windows

  • เพิ่ม ทูลบาร์ใหม่ และ การท่องเว็บแบบแท็บ ให้กับ Servo-the-browser
  • หน้าแท็บใหม่ใช้ API ใหม่ที่ทำให้ Servo embedder สามารถลงทะเบียน custom protocol handler ได้
  • คุณภาพการรันบน Windows ได้รับการปรับปรุงในหลายส่วนเช่นกัน
    • แก้ไขการนำทางด้วยคีย์บอร์ด
    • แก้ไขพฤติกรรมการส่งออก PNG ของ --output
    • แก้บั๊กเกี่ยวกับฟอนต์และ GPU
  • การแก้ไขเกี่ยวกับ Windows เชื่อมโยงกับปัญหาที่ glyph จัดแนวผิดและสีผิดบน servo.org กับ duckduckgo.com รวมถึงปัญหาภาพเสียบน wikipedia.org

เครื่องมือสำหรับนักพัฒนาและเวิร์กโฟลว์ของนักพัฒนา

  • การรองรับ devtools มีฟีเจอร์เพิ่มขึ้นหลังงานในเดือนสุดท้ายของโปรเจกต์ฝึกงาน
    • Servo รองรับ HTML tree
    • รองรับพาเนล Styles และ Computed
  • บน macOS กระบวนการรัน servoshell หลังบิลด์เสร็จเร็วขึ้นอีกไม่กี่วินาที
  • ใน CI มีการรัน clippy ใน linting job เฉพาะ แยกจาก tidy check เดิม
  • ด้วยเงินบริจาค มีการเพิ่ม CI runner ใหม่สำหรับบิลด์ Windows และ Windows-only build time ลดลง 70%
  • จะมีการเพิ่ม runner ใหม่สำหรับบิลด์ Linux ในเร็ว ๆ นี้ และ WPT try build จะเร็วขึ้น
  • กำลังมี triage meeting เพื่อตรวจสอบ GitHub issue และ Servo issue triage meeting ครั้งถัดไปจะจัดขึ้นในวันที่ 2 กันยายน เวลา 10:00 UTC
    • รายละเอียดเพิ่มเติมอยู่ที่ project#99

การปรับปรุงเสถียรภาพของเอนจิน

  • ในเดือนสิงหาคม มีการแก้ไข บั๊กแครช จำนวนมากที่เกิดบนเว็บไซต์จริง
  • กรณีแก้ไขหลักครอบคลุมการเรนเดอร์, reflow และพฤติกรรมของ HTML parser
    • แครชที่เกิดระหว่างการเรนเดอร์ float ใกล้ table ใน HTML spec
    • แครชบน w3schools.com ที่เกิดจาก explicit reflow ที่ไม่จำเป็น
    • ทำให้ HTML parser เป็นแบบ re-entrant เพื่อแก้แครชในหลายไซต์ เช่น kilonova.ro, tweakers.net
  • นอกจากนี้ แครชที่เกิดในเส้นทางของแพลตฟอร์ม, API และการพาร์สก็ลดลง
    • แครชเมื่อปรับขนาดหน้าต่างระหว่างใช้ WebGL บน macOS
    • แครชระหว่างเรนเดอร์ข้อความที่มี grapheme cluster ยาวมาก
    • แครชระหว่างเรนเดอร์อักขระ tab ของฟอนต์บางตัว
    • แครชของ parser หลังเรียก window.stop()
    • แครชเมื่อส่งค่าบางอย่างให้ console.log()
    • แครชระหว่างพาร์สค่าบางแบบของ <img srcset>
    • แครชระหว่างพาร์สค่า HTTP header บางแบบ
    • แครชเมื่อตั้งค่า window.opener ในบางสถานการณ์
    • แครชเมื่อเอา iframe ออกจากเอกสาร
    • แครชเมื่อเรียก new AudioContext() ด้วยออปชันที่ไม่รองรับ
    • แครชเป็นครั้งคราวใน WRSceneBuilder ขณะปิด Servo
  • แก้ไขแครช BorrowError หลายรายการที่เกิดใน GC ของ SpiderMonkey
  • งานเพื่อป้องกันบั๊กประเภทนี้ด้วย static analysis กำลังดำเนินอยู่
  • วัตถุ DOM Window จะไม่รั่วไหลอีกต่อไปเมื่อมีการนำทาง
  • บน Unix เมื่อเกิด panic servoshell จะจบการทำงานแบบผิดปกติ ทำให้ web test สามารถบันทึกผลเป็น “CRASH” ได้อย่างถูกต้อง

สถานะการบริจาค

  • ปัจจุบัน Servo ได้รับเงินบริจาคแบบ recurring 3,077 ดอลลาร์ต่อเดือน เพิ่มขึ้น 4.1% จากเดือนกรกฎาคม
  • รวมเงินบริจาคจากผู้บริจาค 12 รายผ่าน LFX แต่ Servo จะหยุดรับเงินบริจาคผ่าน LFX ในเร็ว ๆ นี้
  • ควรย้ายการบริจาคแบบ recurring ไปที่ GitHub Sponsors หรือ Open Collective
  • Servo ยังลงทะเบียนบน thanks.dev ด้วย และมีองค์กร GitHub 3 แห่งที่พึ่งพา Servo ให้การสนับสนุนอยู่แล้ว
  • หากใช้ไลบรารีของ Servo เช่น url, html5ever, selectors, cssparser ก็สามารถมีส่วนร่วมกับชุมชนผ่าน thanks.dev ได้
  • การใช้เงินทุนตัดสินใจอย่างโปร่งใสโดย Technical Steering Committee และรายละเอียดเพิ่มเติมอยู่ที่ Sponsorship page

1 ความคิดเห็น

 
GN⁺ 2024-09-01
ความคิดเห็นบน Hacker News
  • แปลกใจที่ ยอดสนับสนุนที่ได้รับน้อยมาก สงสัยว่านับเฉพาะเงินสนับสนุนจากบุคคลที่สามที่เป็นรายบุคคล โดยไม่นับองค์กรใหญ่ ๆ หรือเปล่า
    เห็นคนจำนวนมากพูดเสียงดังว่าเว็บเบราว์เซอร์ถูก Google ครอบงำผ่าน chrom(ium)e ก็คิดว่าน่าจะมีบุคคลหรือบริษัทสนใจมากกว่านี้ เพื่อให้คู่แข่งออกมาได้เร็วขึ้น

    • อาจเป็นอะไรทำนอง โศกนาฏกรรมของทรัพยากรร่วม คือไม่มีใครคิดว่าตัวเองควรเป็นคนสนับสนุนงานแบบนี้
      อีกอย่างคงมีมุมมองว่าการสร้างเบราว์เซอร์ใหม่ทั้งตัวด้วยเอนจินใหม่ตั้งแต่ศูนย์ไม่ค่อยสมจริง เลยอาจมีบรรยากาศว่าแล้วจะสนับสนุนไปทำไม โชคดีที่ Ladybird อาจเปลี่ยนเรื่องนี้ไปแล้ว
    • ผมคิดว่าคนจำนวนมากที่ส่งเสียงดังไม่ใช่คนที่มีเงินก้อนใหญ่ขนาดนั้น และอาจไม่ใช่องค์กรที่มีเงินแบบนั้นด้วย
      แล้วบางองค์กรที่มีเงินแบบนั้นก็ยอมแพ้ไปแล้ว อย่าง Microsoft ที่เปลี่ยน Edge ไปใช้ Chromium เมื่อไม่กี่ปีก่อน อีกทั้งหลายคนคงอยากบริจาคให้ Firefox ซึ่งเป็นทางเลือกที่มั่นคงแทน Chromium มากกว่า แต่ในความเป็นจริง การบริจาคแบบเจาะจงเพื่อการพัฒนา Firefox นั้นก็ค่อนข้างยาก
    • เกวียนเปล่าย่อมเสียงดัง การออกเสียงในประเด็นหนึ่งนั้นต้นทุนต่ำ แต่การสละเวลาหรือเงินเพื่ออุดมการณ์นั้นไม่ใช่
    • น่าเศร้านิดหน่อย แค่ HN เอง ถ้าบริจาคกันคนละ 5 ดอลลาร์ต่อเดือน ก็น่าจะถึงเป้าได้แล้ว
      คนส่วนใหญ่ในนี้ดูเหมือนจะเอาแต่บ่นถึงสภาพเว็บที่ย่ำแย่ แต่จริง ๆ แล้วไม่ได้ทำอะไรเลย
  • ทุกคน มาโชว์ ตัวเลขที่หนักแน่น กันเถอะ
    ถ้าเป็นคอมมูนิตี้ HN น่าจะทะลุ 100,000 ดอลลาร์ได้ง่าย ๆ ภายในวันเดียว ตอนนี้มีเบราว์เซอร์ใหม่ที่น่าคาดหวังจริง ๆ ออกมาแล้ว มาทำให้สำเร็จกัน

    • อยากให้แสดงการสนับสนุนและบริจาคกันจริง ๆ ถ้าผู้ใช้ที่แอ็กทีฟทั้งหมดของ HN บริจาคแค่คนละ 10 ดอลลาร์ ก็จะเป็นจำนวนมหาศาล
  • น่าสนใจที่เห็นว่า Servo ยังมีชีวิตอยู่ต่อไป เอาใจช่วย

    • เห็นด้วย ยังมีทางอีกยาวไกลกว่าจะเป็นทางเลือกจริง ๆ แทนเบราว์เซอร์และเอนจินอื่น ๆ
      แต่ผมคิดว่าการมีความพยายามอย่างจริงจังในการพัฒนาเบราว์เซอร์และเอนจินทางเลือกเป็นเรื่องดี เบราว์เซอร์ Ladybird ยังไกลกว่ามากกว่าจะเป็นผลิตภัณฑ์ที่สุกงอม แต่ก็เป็นโปรเจกต์ที่น่ายินดีที่มีอยู่
    • อย่าแค่เอาใจช่วย บริจาคด้วย สิ :)
  • ผมดึงการเปลี่ยนแปลงล่าสุดมาแล้วดูแท็บใหม่ ก็แปลกใจที่เห็นว่ามี การรองรับ RTL แล้ว ไม่กี่สัปดาห์ก่อนยังไม่รองรับ
    PR ที่ merge แล้วอยู่ที่นี่: https://github.com/servo/servo/pull/33148

  • Servo ไม่ได้ถูกทิ้งไปแล้วเหรอ?

    • Mozilla ทิ้งไปแล้ว แต่ตาม Wikipedia ระบุว่า Linux Foundation รับช่วงต่อไปแล้ว