
Uma coleção atualizada de recursos voltados para a exploração de navegadores.
O mundo dos navegadores é dominado por 4 grandes players:
O conteúdo a seguir é dividido em duas partes:
É claro que você pode usar sua própria configuração favorita para navegar pelas fontes. No entanto, esses repositórios são relativamente grandes e eu tentei algumas configurações diferentes até encontrar algo que funcionasse para mim. Então, se você ainda não tem uma boa configuração, aqui estão algumas das minhas experiências que podem ajudar você:
Artigos:
O mecanismo JavaScript do Blink é o V8.
Projeto | GitHub | Código-Fonte | Como Compilar
Compilação (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
Flags úteis:
--print-opt-code: código gerado pelo compilador otimizador--print-byte-code: bytecode gerado pelo interpretador--trace-ic: diferentes tipos de objeto que um call site encontra--trace-opt e --trace-deopt: quais funções são (des)otimizadas--trace-turbo: traces do TurboFan para a visualização no TurbolizerArtigos:
O V8 fornece uma visualização para o TurboFan chamada Turbolizer
Artigos:
--trace-turbo: d8 --trace-turbo foo.jsturbo-foo-0.jsonv8/tools/turbolizer e instale com npm conforme descrito no README.mdpython -m SimpleHTTPServer 8000localhost:8000 e abra turbo-foo-0.jsonO mecanismo JavaScript do Gecko é o Spidermonkey.
Projeto | Código-Fonte | Como Compilar
Compilação (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
O Spidermonkey fornece uma visualização para o IonMonkey chamada IonGraph
O mecanismo JavaScript do WebKit é o JavaScriptCore (JSC).
Projeto | Wiki | Código-Fonte
Artigos:
# 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
O WebKit possui um sistema de compilador JIT de 4 camadas, representando o trade-off entre o custo de desempenho da sobrecarga e o benefício de desempenho.
Artigos:
Como o Edge migrou para o Blink e o Projeto Chromium como seu mecanismo de renderização, o Edge está usando o v8. Originalmente, o Edge tinha seu próprio mecanismo de renderização chamado EdgeHTML, que usava o mecanismo 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