Hail to the King, Baby! – 那段華麗的JavaScript歷史

1995年,Brendan說服Netscape的老板說在netscape中需要一個屬於自己的腳本語言,在考察瞭Scheme和Java之後,10天之內,Brendan實現瞭JavaScript引擎的基本原型。從1995年到現在,經歷瞭瀏覽器大戰,經歷瞭Mozilla開源項目的故事,16年之後的昨天,Brendan將SpiderMonkey的Module Ownership轉移給瞭Mozilla的Dave Mandelin


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 ownership to @dmandelin.
—— Brendan Eich

為此,Brendan大神寫瞭這樣一篇博客——New JavaScript Engine Module Owner,給我們講述瞭那一段牛x的JavaScript歷史,裡面充滿瞭睿智的小段子,非常有趣。

  • 96年的時候,Brendan和chouck將JavaScript的運行放到瞭非主線程中,於是當網頁加載一段需要大量計算的 JavaScript代碼時不會影響頁面中其他元素的渲染,至今大傢也在Firefox可以看到“slow script running”的對話框;


  • 快進到2008年,Firefox 3成功發佈,Mozilla的JS團隊取得巨大的性能提升,當時主要競爭對手還是來自WebKit的JavaScriptCore引擎,之後又成功炮制 TraceMonkey,——一個基於類型優化的實時JIT引擎,是早於Chrome和V8的面世;


  • 在2006年的時候,Brendan就接觸到瞭V8團隊,當時Brendan非常希望V8能夠開源,並且完全可以想辦法接入到Firefox中,甚至於替代Firefox的SpiderMonkey,而且當時Adobe正在考慮將Tamarin提交給Mozilla,用Brendan的話說就是多多益善,“the more the merrier”。當時正是JavaScript JIT前期探索階段;


  • 直到2008年V8才正式開源,Google對此很謹慎,以防打草驚蛇的提醒到微軟。(配合這款引擎,Chrome應聲而出)很明顯,95年時候 “Netscape + Java kills Windows”的說法激怒瞭微軟,最後什麼結果大傢也都知道瞭。不過歷史同樣重現,Chrome的刺激帶來瞭微軟的IE9和Chakra。


  • V8長達兩年的絕密飛行“傷害”瞭JavaScript,意味著Apple和Mozilla需要自己探索陡峭的JS優化之路,不過後來借助V8的開源,這個難度大大降低。不過隨著Mozilla放出TraceMonkey,Apple放出SquirrelFish,加上Chrome的V8,都向世人證明瞭JavaScript不再低效,不再是一個玩具語言,當然隨著AJAX的流行,JavaScript變的越來越流行。


  • JavaScript的路依然漫長……
    TraceMonkey面世左右,Dave Mandelin加入瞭Mozilla。新的篇章開始。


  • 新的JIT技術不斷出現,Mozilla將Webkit中的Method JIT融入SpiderMonkey,優化別名JaegerMonkey;更多優化全面的Benchmark出現,其實主要強調來自Mozilla的Kraken;


  • 而V8也開始Phase II,Crankshaft面世,開始向類型優化JIT的方向前進;


  • 傳統的JavaScript GC方式也開始變革,Mozilla先提出來Compartment GC分配內存的方式;而以往粗暴需要Pause的Allocation模式開始向Incremental和Generational GC探索;


  • IonMonkey是Mozilla的下一代優化JIT引擎,會跟Crankshaft接近,更加優化類型推演,還包括inline function等多種優化手段


  • 如Brendan所言,JavaScript的路還很漫長,不過充滿希望


  • Dave在11年Velocity大會上的演講稿非常值得一看
    JavaScript歷久彌新,相信他擁有更美好的未來,而Brendan永遠是心中的JS大神。

    Hail to the King!
  • You May Also Like