成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

如何開始學(xué)習(xí) V8

googollee / 3178人閱讀

摘要:如果不行的話,不用擔(dān)心,當(dāng)你審查錯誤時會學(xué)習(xí)到知識的。但是任何人不得不從某處開始,也許你堅(jiān)持,會在未來看到來自你的變更記錄。

本文轉(zhuǎn)載自:眾成翻譯
譯者:yu-wj
鏈接:http://www.zcfy.cc/article/3963
原文:https://medium.com/dailyjs/how-do-i-get-started-with-v8-development-17e976ebe4af

如何學(xué)習(xí)v8開發(fā)

你是否有興趣理解更多關(guān)于編譯器、虛擬機(jī)、JavaScript引擎的知識,或者貢獻(xiàn)V8項(xiàng)目

你也許曾沒上過編譯原理的課程或者沒有c++編程經(jīng)驗(yàn),但是沒人生來就具有這些知識的,你不需要理解任何編譯器方面知識。這里有一些資源也許會幫助你。

但是現(xiàn)在世面上有很少的編譯的書籍,而且也沒發(fā)現(xiàn)一本具有現(xiàn)代優(yōu)化知識的書籍,尤其是對于JavaScript引擎來說。如果你想學(xué)習(xí)基礎(chǔ),可以去看看龍書(中文版《編譯原理》,現(xiàn)在已經(jīng)出到了第二版)

這里有幾個關(guān)于V8的 博客:

Official V8 blog v8project.blogspot.com

benediktmeurer.de (V8 compiler and benchmarks)

http://ripsawridge.github.io/ (V8 compiler)

https://medium.com/@tverwaes (V8 runtime)

http://mrale.ph/ (Not on the V8 team anymore.)

如果你比較喜歡看視頻學(xué)習(xí),這里也有一些不錯的視頻

Breaking the Speed Limit from 2012 by Daniel Clifford, V8 lead [Slides]

A Trip to the Zoo from 2015 by me, Nordic.js [Slides]

V8, modern JavaScript, and Beyond from 2016 by Seth Thompson

A little on V8 and WebAssembly from 2016b by Ben Titzer [Slides]

JS Engines?—?how do they even? from 2017 by me JSConfEU [Slides]

不幸的是,在這些高級資源和V8源碼中還是有挺大的差距,但是你需要邊做邊學(xué)。所以去獲取源代碼然后編譯它。V8在V8/test中有數(shù)萬行代碼。堅(jiān)持在本地運(yùn)行它,否則你需要等待幾個小時。跟著V8 Wiki去編譯 and 運(yùn)行 V8。維基百科也有如何提交變更記錄的說明,變更記錄是Chromium中用于拉取請求的術(shù)語。

需要花點(diǎn)時間去編譯V8

我建議先從簡單開始。改變一些小地方,比如更改錯誤信息的提示語。然后編譯,并在幾行能導(dǎo)致錯誤代碼中運(yùn)行它,看看是否能獲取你的錯誤信息。這里變更記錄就是改變了一個錯誤信息。就這樣修改代碼,慢慢地就會熟悉基本代碼和編譯過程。

使用D8運(yùn)行你本地修改后的V8引擎而不是使用瀏覽器。當(dāng)你擅長V8后,你可以使用git。

變更記錄在 Chromium’s code review tool, Gerrit.

一旦你編輯錯誤信息和在D8上看到改變后,就可以 上傳你的代碼然后在V8測試框架下進(jìn)行所有測試,你應(yīng)該發(fā)現(xiàn)一些測試失敗,是因?yàn)槠渲幸恍y試是檢查錯誤信息的。這就要求需要熟悉代碼審查工具和如何在框架中自動執(zhí)行測試,所有當(dāng)你想提交補(bǔ)丁都需要準(zhǔn)備好。如何使用V8審查工具和如何運(yùn)行測試的細(xì)節(jié)內(nèi)容都在這里

如果你熟悉JavaScript但是不太了解c++,你也許想從V8/src/js.部分開始,這部分都是用JavaScript編寫的,而且在都在這個目錄下。代碼中大部分都是按照EcmaScript 規(guī)范實(shí)現(xiàn)的。選擇一個函數(shù)然后查找其規(guī)范。你能理解規(guī)范如何對應(yīng)于代碼嗎?如果你改變或刪除部分代碼,什么測試失敗,違反了規(guī)范中哪一步說明?在V8/test, 尤其是 V8/test/mjsunit中有大量的JavaScript代碼。

下一步,你可以閱覽V8 issue tracker。也許你會發(fā)現(xiàn)一些小問題,試圖去修改。首先檢查你是否能理解,然后復(fù)制錯誤。在JavaScript中寫一段小代碼片段,當(dāng)運(yùn)行時顯示錯誤。在代碼中尋找到錯誤代碼,然后試圖分解代碼,然后運(yùn)行測試代碼確保是因?yàn)槟惴纸獯a導(dǎo)致了錯誤。玩弄代碼。V8代碼量特別大且復(fù)雜。你需要足夠能力去解決錯誤。如果不行的話,不用擔(dān)心,當(dāng)你審查錯誤時會學(xué)習(xí)到知識的。

V8中做出大量更改是很困難的,并且需要大量時間和知識。如果我告知你可以很容易改變V8的運(yùn)行方式或添加新特點(diǎn),那一定是騙人的。但是任何人不得不從某處開始,也許你堅(jiān)持,會在未來看到來自你的變更記錄。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/84931.html

相關(guān)文章

  • V8引擎深入研究目錄貼

    摘要:對于每個前端程序員來講都有一個終極理想,那就是搞懂引擎是如何工作的。性能經(jīng)過了兩次飛躍第次飛躍是年發(fā)布,第次則是年的。從去年底開始連載源碼分析,記錄一下自己學(xué)習(xí)源碼的點(diǎn)點(diǎn)滴滴。月星期六晚點(diǎn)和大家一起聊聊引擎前端程序員應(yīng)該懂點(diǎn)知識講堂。 對于每個前端程序員來講都有一個終極理想,那就是搞懂 javascript 引擎是如何工作的。 從我的網(wǎng)絡(luò) ID(justjavac)可以看出來,當(dāng)我開始...

    blastz 評論0 收藏0
  • JavaScript是如何工作的:深入V8引擎&編寫優(yōu)化代碼的5個技巧

    摘要:第二篇文章將深入谷歌的引擎的內(nèi)部。引擎可以實(shí)現(xiàn)為標(biāo)準(zhǔn)解釋器,或者以某種形式將編譯為字節(jié)碼的即時編譯器。這個引擎是在谷歌中使用的,但是,與其他引擎不同的是也用于流行的。一種更復(fù)雜的優(yōu)化編譯器,生成高度優(yōu)化的代碼。不是唯一能夠做到的引擎。 本系列的 第一篇文章 主要介紹引擎、運(yùn)行時和調(diào)用堆棧。第二篇文章將深入谷歌 V8 的JavaScript引擎的內(nèi)部。 想閱讀更多優(yōu)質(zhì)文章請猛戳GitHu...

    Turbo 評論0 收藏0
  • JavaScript是如何工作的:深入V8引擎&編寫優(yōu)化代碼的5個技巧

    摘要:第二篇文章將深入谷歌的引擎的內(nèi)部。引擎可以實(shí)現(xiàn)為標(biāo)準(zhǔn)解釋器,或者以某種形式將編譯為字節(jié)碼的即時編譯器。這個引擎是在谷歌中使用的,但是,與其他引擎不同的是也用于流行的。一種更復(fù)雜的優(yōu)化編譯器,生成高度優(yōu)化的代碼。不是唯一能夠做到的引擎。 本系列的 第一篇文章 主要介紹引擎、運(yùn)行時和調(diào)用堆棧。第二篇文章將深入谷歌 V8 的JavaScript引擎的內(nèi)部。 想閱讀更多優(yōu)質(zhì)文章請猛戳GitHu...

    DevWiki 評論0 收藏0
  • 「譯」JavaScript 究竟是如何工作的?(第一部分)

    摘要:文章的第二部分涵蓋了內(nèi)存管理的概念,不久后將發(fā)布。的標(biāo)準(zhǔn)化工作是由國際組織負(fù)責(zé)的,相關(guān)規(guī)范被稱為或者。隨著分析器和編譯器不斷地更改字節(jié)碼,的執(zhí)行性能逐漸提高。 原文地址:How Does JavaScript Really Work? (Part 1) 原文作者:Priyesh Patel 譯者:Chor showImg(https://segmentfault.com/img...

    Youngdze 評論0 收藏0
  • JavaScript是如何工作的:引擎,運(yùn)行時和調(diào)用堆棧的概述!

    摘要:調(diào)用棧是一種單線程編程語言,這意味著它只有一個調(diào)用堆棧。調(diào)用棧是一種數(shù)據(jù)結(jié)構(gòu),它記錄了我們在程序中的位置。而且這不是唯一的問題,一旦你的瀏覽器開始處理調(diào)用棧中的眾多任務(wù),它可能會停止響應(yīng)相當(dāng)長一段時間。 本文是旨在深入研究JavaScript及其實(shí)際工作原理的系列文章中的第一篇:我們認(rèn)為通過了解JavaScript的構(gòu)建塊以及它們是如何工作的,將能夠編寫更好的代碼和應(yīng)用程序。我們還將分...

    PiscesYE 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<