1 ポイント 投稿者 GN⁺ 2023-11-11 | 1件のコメント | WhatsAppで共有
  • Servoは2023年7月にNLnet助成金を受け、アプリケーションにWeb技術を組み込むための軽量・高性能な代替手段として、コアとなるレイアウト機能を強化した
  • 改善範囲は、CSS floatの完成、インラインレイアウトの多言語対応拡大、初期の<table>サポート追加に集中している
  • CSS floatは2023年半ばから作業が続いており、関連するWPTテストの平均合格率を80%超に引き上げることが目標
  • インラインレイアウトは、非ラテン文字のレンダリングに必要なフォント選択、右から左へ書く文字、論理プロパティのサポートが不足している
  • 新しいレイアウトエンジンでtableが未サポートであることは多くのWebページ表示を崩すため、まずはWikipediaのtableレンダリングが実用的な目標となる

NLnet助成金で強化するServoの領域

  • Servoは2023年7月にNLnet助成金を受け、複数のレイアウト関連機能を改善した
  • 主な目標は3つに整理される
    • Servoのfloatサポート完成
    • インラインレイアウトでより多くの言語をサポート
    • 初期の<table>サポート追加

レイアウト機能別の目標と進捗状況

  • Floats

    • Servoのfloatサポートは2023年半ばから進行中
    • CSS floatに完全準拠した実装と見るには、まだ解決すべき問題が残っている
    • /css/CSS2/floats//css/CSS2/floats-clear/の平均WPT合格率80%超が目標
    • 結果はWPT dashboardで追跡できる
    • 先週、/css/CSS2/floats/テストは**82.2%**の合格率で目標を超えた
    • /css/CSS2/floats-clear/は現在**73.3%**の合格率で、目標に近づいている
  • More languages in inline layout

    • Servoのレイアウトエンジンには、ラテンアルファベットを使わない言語のレンダリングに必要なコア機能が不足している
    • 強化対象には、正しいフォント選択、右から左へ書く文字のサポート、論理プロパティが含まれる
    • 目標は、Servoがより多様なコンテンツを表示できるよう、インラインレイアウトのサポート範囲を広げること
  • Initial <table> support

    • HTML tableは重要で広く使われているWeb機能
    • Servoの新しいレイアウトエンジンはまだtableをサポートしておらず、多くのWebページのレイアウトが正しく表示されない
    • 初期tableサポートの優先目標は、Wikipediaで使われるtableをレンダリングできるようにすること
    • 各マイルストーンが進み達成されれば、今後のブログ記事でより詳しく取り上げる予定

1件のコメント

 
GN⁺ 2023-11-11
Hacker Newsのコメント
  • Servoにはとても期待していて、Mozillaが関心を持たなかったというのが信じられない
    セキュリティと性能に優れたエンジンという発想も良いが、Webエンジンをコンポーネントとして使える点が特に気に入っている
    Windows 9x時代のIEにはActiveXコントロールがあり、どこにでもWebエンジンを埋め込めたし、KHTMLも似たようなものだったが、最近はFirefoxもChromeもそうした用途には関心がないように見える
    Qt WebEngineがあるのは幸いだが、Chrome側がこの種のユースケースを気にしていないため、関係がややぎくしゃくしていると理解している
    そのうえChromeはGoogleのもので、経験上Googleのものは独自の世界があり、ビルドして統合するのが面倒だ
    だから、セキュリティ上の懸念を解消しつつ統合の苦痛も減らしてくれる、コードに組み込める実用的な代替案に大いに期待している

    • 「MozillaがServoに関心がなかった」という表現は正確ではないように思う
      Mozillaは研究プロジェクトとして資金を出しており、完全に市場投入するにははるかに多くの資金と時間がかかると気づき、コストを抑えることにした、というほうが近い
      ただし、その資金を自分たちが掲げていた道徳性に合わない形で役員などに配分したという問題はある
      ブログ記事を見ると、MozillaはServoから取り込めるものをFirefoxに統合しており、その意味でプロジェクトから一定の価値を得たことになる
      もし誰かがMozillaに多額の資金と無制限のスケジュールを提供していたなら、Servoを完成させていたと思う
    • CEF、WebKit、WebView2を使ってみたが、この中で簡単に埋め込めるクロスプラットフォームの選択肢はCEFだけだった
      ところがCEFが人気を得るやいなや、GoogleはCEFや他の組み込みブラウザでGoogleログインをブロックするために多くのリソースを投入した[0]
      そのためCEFベースのブラウザを諦めざるを得ず、そうしたビジネス慣行は嫌悪すべきものだが、できることはなかった
      自分のブラウザでGoogle製品にログインできなければ広く使われるのは難しいし、Googleの検知方式といたちごっこをする時間もない
      誰でもブラウザを作れるほど組み込みブラウザコンポーネントが主流になるには、大企業が人気の出た組み込みブラウザを締め出す問題にまず取り組む必要がある
      理想的にはAndroidではない埋め込み可能なGeckoが出てくるとよい。Firefoxは締め出すには大きすぎるからだ
      以前にも関連する話は多くあり、ウィンドウハンドルを盗んで使う概念実証も試したが[1]、収益にはならない
      0 - https://developers.googleblog.com/2016/08/modernizing-oauth-...
      1 - https://github.com/cretz/ffembedpoc
    • MozillaはServoに関心を持っていた
      何を意味しているのか分からないが、WebRenderStyloを含め、複数のコンポーネントをGeckoに取り込んでいる
    • ActiveXの話でいろいろ思い出した
      デスクトップ背景が失敗すると、デスクトップにクリック可能なリンク付きのActiveXエラーページが表示されていたのを覚えているが、本当に混乱した
    • WebKitはいまでも埋め込みやすいが、Windowsでビルドするのは厄介だ
      macOSとLinuxでは非常によく動作する
      それでも、埋め込み可能なWebエンジンはもっと必要だ
      Geckoは良いが、XULRunnerと恒久的に一体化している点が足かせになっている
  • Igaliaが引き受けた後もServoの作業が続いているのを見るのはうれしい
    何年も最小限のメンテナンスだけで生じた技術的負債は多かったが、実際に前進しているように思える
    個人的にはモジュール性を強く推し進めてほしい
    埋め込み可能性に焦点を当てたオープンソースのブラウザエンジンが埋められる隙間はありそうで、人々がレゴブロックのように組み合わせて新しいエンジンを作れる「自作ブラウザ」ライブラリが生まれれば、Webプラットフォームの長期的な健全性にも大きく役立つはずだ

    • その通り
      Servoを内蔵したElectronや、Electronに似た何かが出てくれば良い結果になり得る
      Tauriがすでにその隙間をある程度埋めているが、何かを内蔵するというよりはOSが提供するものを使っている
      その中間くらいの選択肢があるとよい
    • 組み込みエンジンは、実用的なユースケースに至るはるかに速い道でもある
      例えばSciter [1]はDOM APIの妥当なサブセットだけを実装しているにもかかわらず、ある程度成功している
      一般的なインターネット閲覧にはあまり向かないが、UIライブラリとして使うなら、動作しない部分を避ければよい
      1: https://sciter.com/
    • 完全な推測だが、iPhoneがWebエンジンの開放を強制されることで、モバイルデバイス全般に独自エンジンを埋め込むアプリが出てくるかもしれない
    • その方向に強く設計されている
      コンポーネントモデルと埋め込みレイヤーがそうした構造だ
  • この助成金の財源は一部European Commissionから出ており、NGIプログラムを通じて支援されている

  • Servoにとって本当に良いニュースだ
    NLNet Foundationは最近すばらしいプロジェクトを多く支援していて、名前をよく見かける

    • 私のプロジェクト https://www.oilshell.org/ も2022年からNLnetの支援を受けており、大きな助けになった
      いくつかの問題を押し進めるには支援が必要だったが、実際にそうなった
      私たちは主に北米にいるのに資金はEUから来るという点で、非常に先を見据えた支援だ
  • ゼロから新しく作られているもう一つのブラウザとして、Ladybirdも注目に値する
    もう少し寄せ集め感のあるインディーグループが作っている: https://ladybird.dev/
    正直、本当に硬派なプロジェクトだと思う

    • 正直、ServoよりもLadybirdのほうに期待している
      まだ非常に若いプロジェクトだという点を考えると、すでにかなり印象的
      スクリーンショットを撮ってみるだけでも、Servoのレンダラーは非常に基本的で、遅く、バグが多い
    • Ladybirdは驚くべき存在
      速度が速く、すべてをオープンに作っているので、Ladybirdチームの取り組みは非常に印象的
    • Ladybirdは実際にSerenity OSの外でも実用に耐えるのか?
    • なぜC++で書かれた別のブラウザエンジンが必要なのか?
  • なんとなくServoはすでにFirefoxに統合されたものだと思っていた
    Rustでブラウザ全体を立ち上げずにHTMLを画像としてレンダリングする方法はあるだろうか?
    多くのHTMLやCSSをサポートする必要はない

    • CSSスタイルシステムであるStyloはServoから始まり、今はFirefoxに入っているが、私の理解では両者はかなり分岐している
      https://blog.nightly.mozilla.org/2017/07/25/stylo-is-ready-f...
    • WebRenderStyloはServoから生まれ、Quantum RenderとQuantum CSSとして統合された
      おそらく他にもあるかもしれない
    • 現在もっとも近いものはおそらく https://github.com/trimental/inlyne だと思う
      ただし2点異なる: 任意のHTMLではなくMarkdownのみをサポートし、画像ではなく画面にレンダリングする
      それでも良い出発点ではある
      今のRustにおけるWebレンダリングの主な障害は、より優れたテキストレイアウト、特に display: inline-block のようにテキスト内に非テキストコンテンツを入れるサポートだと思う
      それが実装されれば、基本的なWebページのレンダリングはかなりうまくできるようになると思う
    • エンジン全体ではないが、WebRenderStyloは数年前からFirefoxに入っている
      それぞれGPUベースのコンポジターとCSSエンジンである
  • ServoはRustで書かれたWebレンダリングエンジンで、WebGLとWebGPUをサポートし、デスクトップ・モバイル・組み込みアプリケーション向けに適応できる
    埋め込み可能で独立しており、メモリ安全性、モジュール性、並列性を備えたWebレンダリングエンジンである

  • 比較対象として使われているLegacy Layoutとは何だろう?
    Servoの以前のイテレーションなのか?
    一部のコードは両方で今も使われているように見え、曲線が時々同時に上下することもあるが、常にそうではない

    • Legacy Layoutは元のシステムであるLayout 2013を指す
      その後、CSS仕様の一部を実装する際にLayout 2013のアーキテクチャにきれいに収まらない問題を解決するため、2つ目のシステムであるLayout 2020が始まった
      今年Servo WikiにIgaliaの人たちが書いた良いレポートがあり、2つのシステムの違いと、なぜLayout 2020へ進むことにしたのかがまとめられている
      https://github.com/servo/servo/wiki/Servo-Layout-Engines-Rep...