1 điểm bởi GN⁺ 2024-09-01 | 1 bình luận | Chia sẻ qua WhatsApp
  • Bản cập nhật Servo tháng 8 năm 2024 bao quát nhiều nội dung, từ tính năng của web engine đến trình duyệt servoshell, chất lượng trên Windows, công cụ phát triển và độ ổn định của CI
  • Bản dựng Nightly được bổ sung HTMLDialogElement.show(), kết xuất nhập liệu của <textarea>, border-image, structuredClone(), crypto.randomUUID(), phát WAV, Web Audio IIRFilterNode, điều hướng cross-origin redirect và hơn thế nữa
  • Các thành phần cốt lõi đã được nâng lên SpiderMonkey 128, WebRender 0.65, wgpu 22.0 và Rust 1.80.1; WebXR và flexbox cũng được bật mặc định
  • servoshell có thêm duyệt web theo tab, thanh công cụ mới và trang tab mới; trên Windows, khả năng điều hướng bằng bàn phím, xuất PNG và các vấn đề liên quan đến phông chữ·GPU cũng được cải thiện
  • Với runner CI mới, thời gian dựng chỉ dành cho Windows đã giảm 70%; nhiều lỗi crash xảy ra trên website thực tế cùng các BorrowError liên quan đến GC của SpiderMonkey cũng đã được sửa

Bổ sung tính năng nền tảng web

  • Nhiều Web API và tính năng CSS đã lần lượt được đưa vào bản dựng Servo nightly
    • 2024-07-27: hỗ trợ mặc định show() của HTMLDialogElement
    • 2024-07-29: thuộc tính type của HTMLFieldSetElement
    • 2024-07-31: kết xuất văn bản nhập trong <textarea>
    • 2024-07-31: thuộc tính CSS border-image
    • 2024-08-02: các nguồn CSP unsafe-eval, wasm-unsafe-eval
    • 2024-08-04: phát tệp âm thanh WAV
    • 2024-08-09: API structuredClone()
    • 2024-08-12: IIRFilterNode của Web Audio
    • 2024-08-13: điều hướng cross-origin redirect
    • 2024-08-23: API crypto.randomUUID()
    • 2024-08-29: thuộc tính CSS clip-path
      • không bao gồm các giá trị path(), polygon(), shape(), url()

Thay đổi trong các thành phần engine và hành vi mặc định

  • Servo đã nâng các thành phần phụ thuộc chính lên phiên bản mới nhất
    • SpiderMonkey 128

    • WebRender 0.65

    • wgpu 22.0

      • Rust 1.80.1
      • WebXRflexbox được bật mặc định
      • Các Web API trả về Promise giờ sẽ reject Promise đúng cách khi thất bại thay vì ném exception

Cải thiện WebXR và flexbox

  • WebXR API đã được chỉnh sửa nhiều giao diện và tính năng nhập liệu để phù hợp với việc bật mặc định
    • Đã bổ sung hỗ trợ Gamepad
    • Có các cập nhật liên quan đến hand input, XRBoundedReferenceSpace, XRFrame, XRInputSource, XRPose, XRSession, XRTargetRayMode, XRView, XRWebGLLayer
    • makeXRCompatible() giờ có thể được gọi không chỉ từ WebGLRenderingContext mà còn từ WebGL2RenderingContext
  • flexbox được tăng cường các tính năng layout thường dùng
    • thuộc tính gap
    • align-content: stretch
    • các giá trị start, end của align-items, align-self
    • hỗ trợ mặc định flex-direction: column, column-reverse
  • Việc tính toán vị trí và kích thước của flex item cũng chính xác hơn
    • hỗ trợ position: relative trên flex item
    • z-index của flex item luôn tạo stacking context
    • intrinsic size chính xác được áp dụng cho flex item và flex container
  • Công việc hỗ trợ văn bản hai chiều vẫn đang được tiến hành
    • bao gồm thay đổi kiến trúc fragment tree và công việc trên giao diện writing-mode
    • thuộc tính unicode-bididir được hỗ trợ một phần
    • giá trị dir=auto vẫn chưa được hỗ trợ

Trình duyệt servoshell và chất lượng trên Windows

  • Servo-the-browser đã có thanh công cụ mớiduyệt web theo tab
  • Trang tab mới sử dụng API mới cho phép Servo embedder đăng ký custom protocol handler
  • Chất lượng chạy trên Windows cũng được cải thiện ở nhiều mặt
    • điều hướng bằng bàn phím đã được sửa
    • hành vi xuất PNG của --output đã được sửa
    • các lỗi liên quan đến phông chữ và GPU đã được khắc phục
  • Các bản sửa liên quan đến Windows gắn với những vấn đề như glyph bị căn sai và màu hiển thị sai trên servo.org và duckduckgo.com, cũng như ảnh bị vỡ trên wikipedia.org

Công cụ phát triển và quy trình làm việc cho nhà phát triển

  • Hỗ trợ devtools đã được mở rộng thêm tính năng sau tháng cuối cùng của dự án thực tập
    • Servo hỗ trợ HTML tree
    • hỗ trợ các panel StylesComputed
  • Trên macOS, quá trình chạy servoshell ngay sau khi build đã nhanh hơn thêm vài giây
  • Trong CI, clippy được chạy trong một job linting chuyên biệt tách riêng với tidy check hiện có
  • Nhờ tiền quyên góp, một runner CI mới cho bản dựng Windows đã được thêm vào, giúp thời gian build chỉ dành cho Windows giảm 70%
  • Một runner mới cho bản dựng Linux cũng sẽ sớm được thêm vào, và WPT try build dự kiến sẽ nhanh hơn
  • Các buổi triage meeting để điều tra GitHub issue đang được tiến hành; buổi Servo issue triage meeting tiếp theo sẽ diễn ra vào 10:00 UTC ngày 2 tháng 9

Cải thiện độ ổn định của engine

  • Trong tháng 8, nhiều lỗi crash xảy ra trên các website thực tế đã được sửa
  • Các ví dụ sửa lỗi chính trải rộng trên rendering, reflow và hoạt động của HTML parser
    • crash xảy ra khi kết xuất float gần bảng trong HTML spec
    • crash trên w3schools.com do explicit reflow không cần thiết
    • sửa crash trên nhiều trang như kilonova.ro, tweakers.net bằng cách làm HTML parser có thể re-entrant
  • Ngoài ra, số crash phát sinh trên các đường đi của nền tảng·API·parsing cũng đã giảm
    • crash khi thay đổi kích thước cửa sổ trong lúc dùng WebGL trên macOS
    • crash khi kết xuất văn bản có grapheme cluster rất dài
    • crash khi kết xuất ký tự tab của một số phông chữ nhất định
    • crash của parser sau khi gọi window.stop()
    • crash khi truyền một số giá trị vào console.log()
    • crash khi parse một số giá trị <img srcset>
    • crash khi parse một số giá trị HTTP header
    • crash khi thiết lập window.opener trong một số tình huống nhất định
    • crash khi xóa iframe khỏi tài liệu
    • crash khi gọi new AudioContext() với tùy chọn không được hỗ trợ
    • crash thỉnh thoảng xảy ra trong WRSceneBuilder khi Servo thoát
  • Nhiều lỗi crash BorrowError xảy ra trong GC của SpiderMonkey đã được sửa
  • Công việc nhằm ngăn loại lỗi này bằng phân tích tĩnh vẫn đang được tiến hành
  • Đối tượng DOM Window không còn bị leak khi điều hướng
  • Trên Unix, servoshell sẽ kết thúc bất thường khi panic, nhờ đó web test có thể ghi nhận kết quả là “CRASH” một cách chính xác

Tình hình tài trợ

  • Hiện Servo đang nhận 3.077 USD mỗi tháng từ các khoản quyên góp định kỳ, tăng 4,1% so với tháng 7
  • Con số này bao gồm 12 khoản đóng góp qua LFX, nhưng Servo sẽ sớm ngừng nhận quyên góp qua LFX
  • Các khoản quyên góp định kỳ nên được chuyển sang GitHub Sponsors hoặc Open Collective
  • Servo cũng đã đăng ký trên thanks.dev, và đã có 3 tổ chức GitHub phụ thuộc vào Servo tài trợ
  • Nếu bạn sử dụng các thư viện Servo như url, html5ever, selectors, cssparser, bạn có thể đóng góp cho cộng đồng thông qua thanks.dev
  • Việc sử dụng quỹ được quyết định minh bạch bởi Technical Steering Committee; xem thêm tại Sponsorship page

1 bình luận

 
GN⁺ 2024-09-01
Ý kiến trên Hacker News
  • Tôi ngạc nhiên vì quy mô tài trợ nhận được quá nhỏ. Không rõ đây có phải chỉ tính các khoản tài trợ cá nhân từ bên thứ ba, không bao gồm các tổ chức lớn hay không
    Nhìn vào số người lớn tiếng nói rằng trình duyệt web đã bị Google thống trị thông qua chrom(ium)e, tôi cứ nghĩ sẽ có nhiều cá nhân hoặc công ty quan tâm hơn để một đối thủ cạnh tranh xuất hiện sớm hơn

    • Có lẽ là kiểu bi kịch của tài sản chung, nên không ai nghĩ rằng chính mình phải tài trợ cho việc này
      Cũng có nhận thức rằng việc tạo ra một trình duyệt hoàn toàn mới với một engine mới ngay từ đầu là không thực tế, nên có lẽ nhiều người thấy chẳng có lý do gì để tài trợ. May là Ladybird có thể đã thay đổi phần nào điều đó
    • Tôi nghĩ phần lớn những người lên tiếng rất to không phải là những người có nhiều tiền. Cũng có thể họ không phải là các tổ chức có số tiền đó
      Và trong số các tổ chức có tiền, một số đã bỏ cuộc rồi. Microsoft, công ty đã chuyển Edge sang Chromium vài năm trước, là ví dụ như vậy. Ngoài ra, nhiều người có lẽ sẽ thích quyên góp cho Firefox, một lựa chọn thay thế đã được khẳng định so với Chromium, hơn, nhưng trên thực tế việc quyên góp dành riêng cho phát triển Firefox lại khá khó
    • Thùng rỗng kêu to. Lên tiếng về một chủ đề thì rẻ, nhưng bỏ thời gian hay tiền bạc cho chính nghĩa đó thì không
    • Khá buồn. Chỉ riêng HN thôi, nếu mỗi người quyên góp 5 đô mỗi tháng thì có lẽ đã đạt mục tiêu rồi
      Có vẻ như phần lớn mọi người ở đây chỉ than phiền về tình trạng tồi tệ của web chứ thực ra không làm gì cả
  • Mọi người hãy cùng thể hiện những con số mạnh mẽ
    Với cộng đồng HN, vượt 100.000 đô trong một ngày là chuyện dễ dàng. Một trình duyệt mới thực sự đáng để kỳ vọng đã xuất hiện, nên hãy làm được điều đó

    • Sẽ rất tốt nếu thể hiện bằng sự ủng hộ và quyên góp. Chỉ cần toàn bộ người dùng hoạt động của HN quyên góp 10 đô mỗi người thôi cũng sẽ thành một con số khổng lồ
  • Thật thú vị khi thấy Servo vẫn tiếp tục tồn tại. Tôi ủng hộ

    • Đồng ý. Vẫn còn rất xa mới có thể trở thành một lựa chọn thay thế thực sự cho các trình duyệt và engine khác
      Dù vậy, tôi nghĩ thật đáng mừng khi có những nỗ lực nghiêm túc nhằm phát triển các trình duyệt và engine thay thế. Trình duyệt Ladybird còn cách rất xa một sản phẩm trưởng thành, nhưng bản thân sự tồn tại của nó cũng là một dự án đáng hoan nghênh
    • Đừng chỉ ủng hộ, hãy quyên góp nữa :)
  • Tôi vừa cập nhật các thay đổi mới nhất và mở tab mới thì ngạc nhiên khi thấy đã có hỗ trợ RTL. Vài tuần trước vẫn chưa có
    Đây là PR đã được hợp nhất: https://github.com/servo/servo/pull/33148

  • Servo chẳng phải đã bị bỏ rơi rồi sao?

    • Mozilla đã bỏ, nhưng theo Wikipedia thì Linux Foundation đã tiếp quản