向Brendan致敬-那段華麗的JavaScript歷史
Hail to the King, Baby! —— 那段牛x的JavaScript歷史
So it is with gratitude and more than a bit of relief, after a very long 16 years in full, 13 years open source, that I’m announcing the transfer of SpiderMonkey’s module ownershipto @dmandelin.
—— Brendan Eich
1995年,Brendan說(shuō)服Netscape的老板說(shuō)在netscape中需要一個(gè)屬于自己的腳本語(yǔ)言,在考察了Scheme和Java之后,10天之內(nèi),Brendan實(shí)現(xiàn)了JavaScript引擎的基本原型。從1995年到現(xiàn)在,經(jīng)歷了瀏覽器大戰(zhàn),經(jīng)歷了Mozilla開源項(xiàng)目的故事,16年之后的昨天,Brendan將SpiderMonkey的Module Ownership轉(zhuǎn)移給了Mozilla的Dave Mandelin。
為此,Brendan大神寫了這樣一篇博客——New JavaScript Engine Module Owner,給我們講述了那一段牛x的JavaScript歷史,里面充滿了睿智的小段子,非常有趣。
◆ 96年的時(shí)候,Brendan和chouck將JavaScript的運(yùn)行放到了非主線程中,于是當(dāng)網(wǎng)頁(yè)加載一段需要大量計(jì)算的JavaScript代碼時(shí)不會(huì)影響頁(yè)面中其他元素的渲染,至今大家也在Firefox可以看到“slow script running”的對(duì)話框;
◆ 快進(jìn)到2008年,F(xiàn)irefox 3成功發(fā)布,Mozilla的JS團(tuán)隊(duì)取得巨大的性能提升,當(dāng)時(shí)主要競(jìng)爭(zhēng)對(duì)手還是來(lái)自WebKit的JavaScriptCore引擎,之后又成功炮制TraceMonkey,——一個(gè)基于類型優(yōu)化的實(shí)時(shí)JIT引擎,是早于Chrome和V8的面世;
◆ 在2006年的時(shí)候,Brendan就接觸到了V8團(tuán)隊(duì),當(dāng)時(shí)Brendan非常希望V8能夠開源,并且完全可以想辦法接入到Firefox中,甚至于替代Firefox的SpiderMonkey,而且當(dāng)時(shí)Adobe正在考慮將Tamarin提交給Mozilla,用Brendan的話說(shuō)就是多多益善,“the more the merrier”。當(dāng)時(shí)正是JavaScript JIT前期探索階段;
◆ 直到2008年V8才正式開源,Google對(duì)此很謹(jǐn)慎,以防打草驚蛇的提醒到微軟。(配合這款引擎,Chrome應(yīng)聲而出)很明顯,95年時(shí)候“Netscape + Java kills Windows”的說(shuō)法激怒了微軟,最后什么結(jié)果大家也都知道了。不過歷史同樣重現(xiàn),Chrome的刺激帶來(lái)了微軟的IE9和Chakra。
◆ V8長(zhǎng)達(dá)兩年的絕密飛行“傷害”了JavaScript,意味著Apple和Mozilla需要自己探索陡峭的JS優(yōu)化之路,不過后來(lái)借助V8的開源,這個(gè)難度大大降低。不過隨著Mozilla放出TraceMonkey,Apple放出SquirrelFish,加上Chrome的V8,都向世人證明了JavaScript不再低效,不再是一個(gè)玩具語(yǔ)言,當(dāng)然隨著AJAX的流行,JavaScript變的越來(lái)越流行。
◆ JavaScript的路依然漫長(zhǎng)……
◆ TraceMonkey面世左右,Dave Mandelin加入了Mozilla。新的篇章開始。
◆ 新的JIT技術(shù)不斷出現(xiàn),Mozilla將Webkit中的Method JIT融入SpiderMonkey,優(yōu)化別名JaegerMonkey;更多優(yōu)化全面的Benchmark出現(xiàn),其實(shí)主要強(qiáng)調(diào)來(lái)自Mozilla的Kraken;
◆ 而V8也開始Phase II,Crankshaft面世,開始向類型優(yōu)化JIT的方向前進(jìn);
◆ 傳統(tǒng)的JavaScript GC方式也開始變革,Mozilla先提出來(lái)Compartment GC分配內(nèi)存的方式;而以往粗暴需要Pause的Allocation模式開始向Incremental和Generational GC探索;
◆ IonMonkey是Mozilla的下一代優(yōu)化JIT引擎,會(huì)跟Crankshaft接近,更加優(yōu)化類型推演,還包括inline function等多種優(yōu)化手段
◆ 如Brendan所言,JavaScript的路還很漫長(zhǎng),不過充滿希望
◆ Dave在11年Velocity大會(huì)上的演講稿非常值得一看
J◆ avaScript歷久彌新,相信他擁有更美好的未來(lái),而Brendan永遠(yuǎn)是心中的JS大神。
Hail to the King!
原文鏈接:http://www.mijia.org/blog/?p=292
【編輯推薦】