いまだに「(レンダリングエンジンの) Blink は WebKit からフォークしたものだから、どちらも同じもので〜」という話を見かけます。
でも、Blink が WebKit からフォークしたのはもう10年以上も前1です。
それだけの期間が経過しているのだから、WebKit のコードはだいぶ減っているのでは?と思ったので調査してみました。
調査結果
Blink のソースコードのうち、WebKit からフォークしたときのままのコード行数はたったの 6.81% でした。
逆に言うと、93.19% の行はフォーク後に手が入っていました。
調査方法
Chromium のリポジトリを clone して、その中の Blink(third_party/blink
) の各ファイルに対し git balme --follow -w
(ファイル名変更を追跡、空白の差異を無視)で行ごとの変更履歴を追いかけました。
そのうえで、Blink フォーク前から変更のない行を確認しました。
(テストファイル2と画像などのバイナリファイル3は、集計から除外しています)
結果、対象となった16,016ファイル・2,494,063行のうち、WebKit から変更のまま変更のない行が 169,931行でした。
調査プログラム:https://gist.github.com/YujiSoftware/0a3adc5030918469b13894b33c7344e7
注意点
あくまで git blame
は行単位のコミット履歴を追ったものです。
そのため、ちょっとした修正であっても WebKit と異なると判定している点に注意が必要です。
例えば、メソッド名の IsEmpty()
→ empty()
というリネームがされただけの行でも変更があったと判定しています。
現在の WebKit と Blink で diff を取るほうが正確かなとも考えたのですが、ディレクトリ構造が大きく変わっていてうまくいきそうにありませんでした。
結論
WebKit と Blink は別れたの!いつまでも昔のままだと思わないで!
-
フォークしたのは2013年4月3日です。
Chromium Blog: Blink: A rendering engine for the Chromium project ↩ -
パスの一部に
test
を含むものをテストファイルと判定 ↩ -
ファイルの中に
0x00
が含まれているものをバイナリファイルと判定 ↩