
Una raccolta aggiornata di risorse incentrate sullo sfruttamento dei browser.
Il mondo dei browser è dominato da 4 attori principali:
Quanto segue è suddiviso in due parti:
Naturalmente puoi usare la tua configurazione preferita per navigare tra i sorgenti. Tuttavia, questi repository sono relativamente grandi e ho provato un paio di configurazioni diverse finché non ho trovato qualcosa che funzionasse per me. Quindi, se non hai già una buona configurazione, ecco un paio di esperienze che potrebbero aiutarti:
Articoli:
Il motore JavaScript di Blink è V8.
Build (Ubuntu 18.04):
$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
$ export PATH=$PATH:./depot_tools
$ gclient
$ mkdir ./v8 && cd ./v8
$ fetch v8 && cd v8
$ git pull
$ gclient sync
$ ./build/install-build-deps.sh
$ tools/dev/gm.py x64.release
$ out/x64.release/d8
Flag utili:
--print-opt-code: codice generato dal compilatore ottimizzante--print-byte-code: bytecode generato dall'interprete--trace-ic: i diversi tipi di oggetto che un call site incontra--trace-opt e --trace-deopt: quali funzioni vengono (de)ottimizzate--trace-turbo: tracciati TurboFan per la visualizzazione con TurbolizerArticoli:
V8 fornisce una visualizzazione per TurboFan chiamata Turbolizer
Articoli:
--trace-turbo: d8 --trace-turbo foo.jsturbo-foo-0.jsonv8/tools/turbolizer e installa con npm come descritto in README.mdpython -m SimpleHTTPServer 8000localhost:8000 e apri turbo-foo-0.jsonIl motore JavaScript di Gecko è Spidermonkey.
Build (Ubuntu 18.04):
$ wget -O bootstrap.py https://hg.mozilla.org/mozilla-central/raw-file/default/python/mozboot/bin/bootstrap.py && python bootstrap.py
$ git clone https://github.com/mozilla/gecko-dev.git && cd gecko-dev
$ cd js/src
$ autoconf2.13
# This name should end with "_DBG.OBJ" to make the version control system ignore it.
$ mkdir build_DBG.OBJ
$ cd build_DBG.OBJ
$ ../configure --enable-debug --disable-optimize
# Use "mozmake" on Windows
$ make -j 6
$ js/src/js
Spidermonkey fornisce una visualizzazione per IonMonkey chiamata IonGraph
Il motore JavaScript di Webkit è JavaScriptCore (JSC).
Articoli:
# sudo apt install libicu-dev python ruby bison flex cmake build-essential ninja-build git gperf
$ git clone git://git.webkit.org/WebKit.git && cd WebKit
$ Tools/gtk/install-dependencies
$ Tools/Scripts/build-webkit --jsc-only --debug
$ cd WebKitBuild/Release
$ LD_LIBRARY_PATH=./lib bin/jsc
WebKit ha un sistema di compilatori JIT a 4 livelli, che rappresenta il compromesso tra il costo prestazionale dell'overhead e il beneficio prestazionale.
Articoli:
Da quando Edge è passato a Blink e al progetto Chromium come motore di rendering, Edge usa v8. Originariamente, Edge aveva un proprio motore di rendering chiamato EdgeHTML, che utilizzava il motore JavaScript ChakraCore.
# To build ChakraCore on Linux: (requires Clang 3.7+ and Python 2)
$ apt-get install -y git build-essential cmake clang libicu-dev libunwind8-dev
$ git clone https://github.com/Microsoft/ChakraCore && cd ChakraCore
$ ./build.sh --cc=/usr/bin/clang-3.9 --cxx=/usr/bin/clang++-3.9 --arch=amd64 --debug
$ out/Debug/ch