อัปเดต Servo ประจำเดือนนี้: การท่องเว็บแบบแท็บ, การปรับปรุง Windows, เครื่องมือสำหรับนักพัฒนา และอื่น ๆ
(servo.org)- อัปเดต Servo เดือนสิงหาคม 2024 ครอบคลุมตั้งแต่ ฟีเจอร์ของเว็บเอนจิน ไปจนถึงเบราว์เซอร์ servoshell, คุณภาพบน Windows, เครื่องมือสำหรับนักพัฒนา และเสถียรภาพของ CI
- Nightly build เพิ่ม
HTMLDialogElement.show(), การเรนเดอร์อินพุตใน<textarea>,border-image,structuredClone(),crypto.randomUUID(), การเล่น WAV, Web AudioIIRFilterNode, การนำทางแบบ 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()
- ยกเว้นค่า
- 2024-07-27: รองรับพื้นฐานสำหรับ
การเปลี่ยนแปลงคอมโพเนนต์ของเอนจินและพฤติกรรมเริ่มต้น
- 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
- รวมถึงการเปลี่ยนสถาปัตยกรรม fragment tree และงานเกี่ยวกับอินเทอร์เฟซ
เบราว์เซอร์ 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 ความคิดเห็น
ความคิดเห็นบน Hacker News
แปลกใจที่ ยอดสนับสนุนที่ได้รับน้อยมาก สงสัยว่านับเฉพาะเงินสนับสนุนจากบุคคลที่สามที่เป็นรายบุคคล โดยไม่นับองค์กรใหญ่ ๆ หรือเปล่า
เห็นคนจำนวนมากพูดเสียงดังว่าเว็บเบราว์เซอร์ถูก Google ครอบงำผ่าน chrom(ium)e ก็คิดว่าน่าจะมีบุคคลหรือบริษัทสนใจมากกว่านี้ เพื่อให้คู่แข่งออกมาได้เร็วขึ้น
อีกอย่างคงมีมุมมองว่าการสร้างเบราว์เซอร์ใหม่ทั้งตัวด้วยเอนจินใหม่ตั้งแต่ศูนย์ไม่ค่อยสมจริง เลยอาจมีบรรยากาศว่าแล้วจะสนับสนุนไปทำไม โชคดีที่ Ladybird อาจเปลี่ยนเรื่องนี้ไปแล้ว
แล้วบางองค์กรที่มีเงินแบบนั้นก็ยอมแพ้ไปแล้ว อย่าง Microsoft ที่เปลี่ยน Edge ไปใช้ Chromium เมื่อไม่กี่ปีก่อน อีกทั้งหลายคนคงอยากบริจาคให้ Firefox ซึ่งเป็นทางเลือกที่มั่นคงแทน Chromium มากกว่า แต่ในความเป็นจริง การบริจาคแบบเจาะจงเพื่อการพัฒนา Firefox นั้นก็ค่อนข้างยาก
คนส่วนใหญ่ในนี้ดูเหมือนจะเอาแต่บ่นถึงสภาพเว็บที่ย่ำแย่ แต่จริง ๆ แล้วไม่ได้ทำอะไรเลย
ทุกคน มาโชว์ ตัวเลขที่หนักแน่น กันเถอะ
ถ้าเป็นคอมมูนิตี้ HN น่าจะทะลุ 100,000 ดอลลาร์ได้ง่าย ๆ ภายในวันเดียว ตอนนี้มีเบราว์เซอร์ใหม่ที่น่าคาดหวังจริง ๆ ออกมาแล้ว มาทำให้สำเร็จกัน
น่าสนใจที่เห็นว่า Servo ยังมีชีวิตอยู่ต่อไป เอาใจช่วย
แต่ผมคิดว่าการมีความพยายามอย่างจริงจังในการพัฒนาเบราว์เซอร์และเอนจินทางเลือกเป็นเรื่องดี เบราว์เซอร์ Ladybird ยังไกลกว่ามากกว่าจะเป็นผลิตภัณฑ์ที่สุกงอม แต่ก็เป็นโปรเจกต์ที่น่ายินดีที่มีอยู่
ผมดึงการเปลี่ยนแปลงล่าสุดมาแล้วดูแท็บใหม่ ก็แปลกใจที่เห็นว่ามี การรองรับ RTL แล้ว ไม่กี่สัปดาห์ก่อนยังไม่รองรับ
PR ที่ merge แล้วอยู่ที่นี่: https://github.com/servo/servo/pull/33148
Servo ไม่ได้ถูกทิ้งไปแล้วเหรอ?