屌炸天的內核來襲,史上最小chromium內核miniblink!

轉載自:https://zhuanlan.zhihu.com/p/22611497?utm_source=tuicool&utm_medium=referral


一直忘記發一個miniblink的介紹了。

miniblink是什麼?

Miniblink是一個全新的、追求極致小巧的瀏覽器內核項目,

其基於chromium最新版內核,去除了chromium所有多餘的部件,只保留最基本的排版引擎blink。

Miniblink保持了10M左右的極簡大小,是所有同類產品最小的體積,同時支持windows xp、npapi。

爲什麼要做miniblink?

市面上作爲嵌入的組件的可用的瀏覽器內核,不外乎這幾個:webkit、cef、nwjs、electron。

cef:優點是由於集成的chromium內核,所以對H5支持的很全,同時因爲使用的人也多,各種教程、示例,資源很多。但缺點很明顯,太大了。最新的cef已經誇張到了100多M,還要帶一堆的文件。同時新的cef已經不支持xp了(chromium對應版本是M49)。而且由於是多進程架構,對資源的消耗也很誇張。如果只是想做個小軟件,一坨文件需要帶上、超大的安裝包,顯然不能忍受。

nwjs,或者最近大火的electron:和cef內核類似,都是chromium內核。缺點和cef一模一樣。優點是由於可以使用nodejs的資源,同時又自帶了各種api的綁定,所以可以用的周邊資源非常豐富;而基於js的開發方案,使得前端很容易上手。所以最近N多項目都是基於nwjs或electron來實現。例如vscode,atom等等。

原版webkit:現在官網還在更新windows port,但顯然漫不在心,而且最新的webkit也很大了,超過20幾M。最關鍵的是,周邊資源很少,幾乎沒人再基於webkit來做開發。同時由於windows版的saferi已經停止開發了,所以用webkit就用不了他的dev tools了。這是個大遺憾。

WKE:這是個很老的webkit內核的裁剪版了。小是小,但bug太多了。

那麼關鍵點來了,使用miniblink有啥好處呢??

首先,miniblink對大小要求非常嚴格。原版chromium、blink裏對排版渲染沒啥大用的如音視頻全都被砍了,只專注於網頁的排版和渲染。甚至爲了裁剪大小,我不惜使用vc6的crt來跑mininblink(見我上篇文章)。這個也算前無古人後無來者了。

其次,miniblink緊跟最新chromium,這意味着chromium相關的資源都可以利用。在未來的規劃裏,我是打算把electron的接口也加上的,這樣可以無縫替換electron。使用miniblink的話,開發調試時用原版electron,發佈的時候再替換掉那些dll,直接可以無縫切換,非常方便。

miniblink如何使用?

Miniblink導出了CEF、WKE的接口,可以直接無縫替換現有的CEF、WKE項目。

同時,正在開發electron的接口,大家拭目以待。

目前miniblink放出了一個小demo,從demo裏可以看到,brackct這個基於cef的開源編輯器,已經順利由miniblink跑起來了。未來如果electron的接口做好,把vscode跑起來,那就屌炸天了。

miniblink如何裁剪到這麼小?

這個比較複雜了。主要就是把blink從chromium抽離了出來,同時補上了cc層(硬件渲染層)。現在的blink,已經不是當年的那個webkit了,渲染部分全走cc層,複雜無比。我這大半年都在重寫他那個蛋疼又複雜的cc層。

和webkit比,miniblink架構有什麼優勢

現在的webkit版本,已經比miniblink落後太多了。blink一直在加入各種極富創造力和想象力的功能、組件。例如,blink早就加入多線程解析html token、blink gc回收器、多線程錄製回放渲染機制。這些能讓blink的解析渲染速度極大提升。下一次,我會先開源出blink gc組件,這東西很有意思,在c++裏硬是搞出了一個垃圾回收機制,能讓你像寫java一樣寫c++。

miniblink有計劃開源嗎?

正有此意。一個成熟的產品,需要更多人去測試和使用,雖然我完全不指望會有人給我提代碼。。。。

但由於現在bug還比較多,感覺開源出去不負責。不過誰感興趣的話,可以發郵件到[email protected]和我索要。

miniblink還在開發中,目前只有內測版。 我會持續維護這個項目的,我相信,這個纔是此項目最有價值的地方

更多動態可以關注我的博客: 炫酷的miniblink demo已上傳,基於bracket


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章