Executando o mecanismo Javascript V8 autônomo

127

Quero executar um console Javascript em cima da V8. Como eu faço isso?

Manuel
fonte

Respostas:

115

A V8 é fácil de construir e não vem com a sobrecarga da Java VM do interpretador Javascript independente da Mozilla. Felizmente, o V8 é fornecido com o código para a construção de um console. Aqui está como criar isso:

$> svn co http://v8.googlecode.com/svn/trunk v8-trunk
...
$> cd v8-trunk
$> scons
$> g ++ ./samples/shell.cc -o v8-shell -Eu incluo libv8.a 

Agora, temos um binário independente chamado v8-shell.

Executando o console:

$> ./v8-shell 
V8 versão 2.0.2
> var x = 10;
> x
10
> função foo (x) {return x * x; }
> foo
função foo (x) {return x * x; }
> sair ()

Executando Javascript a partir da linha de comando:

$> ./v8-shell -e 'print ("10 * 10 =" + 10 * 10)'
10 * 10 = 100

Muitos outros recursos estão documentados na ajuda:

$> ./v8-shell --help
Uso:
...
Georg Schölly
fonte
9
Obrigado pela dica e instruções explícitas. Eu tive que adicionar a opção -lpthreadao g++comando no ubuntu 10.04.
intuited
1
O scons falhou para mim no Ubuntu, mas a execução do sudo apt-get install libc6-dev-i386 resolveu isso.
Thorsten Lorenz
2
e se você estiver em x86_64, faça um: 'scons arch = x64' até que seja corrigido no código de tronco.google.com/p/v8/issues/detail?id=429#c1
2010
4
Observe que este shell v8 é um exemplo de brinquedo. O shell v8 "real" é chamado d8. Veja minha resposta para mais informações.
bukzor
2
O método para buscar o código-fonte parece alterado. Veja aqui .
Colliot
59

Para criar o console do desenvolvedor, em vez do aplicativo de brinquedo 'shell' de exemplo, copie e cole os comandos abaixo no seu terminal.

sudo apt-get install subversion scons libreadline-dev
svn co http://v8.googlecode.com/svn/trunk v8
cd v8/
scons console=readline d8

Estas instruções funcionarão para Ubuntu / Debian com um kernel "genérico". Para outras distribuições, você precisará substituir o comando apt-get por qualquer ferramenta de pacote disponível. Em sistemas de 64 bits, pode ser necessário adicionar arch=x64. A console=readlineopção habilita o sistema readline , para torná-lo um pouco mais parecido com um shell padrão.

Documentação mais completa aqui: http://code.google.com/apis/v8/build.html


Nota:

insira a descrição da imagem aqui

Veja também: Criando v8 com GYP

bukzor
fonte
9
Eu tive que adicionar arch=x64para construir no ubuntu de 64 bits.
projectshave
@Hugh: Permite o sistema readline; é isso que permite que você use a seta para cima para obter o comando anterior, entre outras características.
7119
Quando a construção terminar, execute o shell digitando ./d8.
Mathias Bynens
no ubunt 12.04: erro fatal: readline / readline.h: Não existe tal arquivo ou diretório - alguma idéia?
Pguardiario 01/07
44

Que tal executar o Javascript V8 via linha de comando usando o node.js ?

O node.js usa a v8 como seu mecanismo e adiciona muitas funcionalidades a ela.


Por exemplo, no Mac OSX, se você tiver o Homebrew instalado, basta emitir:

    $ brew install node
    $ node
    > 
tle
fonte
1
O IMHO node.js é o novo padrão padrão no que diz respeito aos consoles JavaScript. Ele usa a v8 e é provavelmente a melhor opção para isso.
precisa saber é o seguinte
23

No Mac OS X, certifique-se de ter brewinstalado. Em seguida, basta executar o comando (sudo) brew install v8, dependendo da sua máquina, isso pode levar algum tempo. Para iniciar o console V8, basta executar v8- Voilà!

Dica: Para sair do console, basta executar quit()e não esquecer os parênteses!

Mario Uher
fonte
1
Ou apenas pressione Ctrl-Dpara sair :)
Dogbert
Ou Ctrl-Cpara matá-lo
Braden Best
Você pode criar a v8 por si só e é bastante simples, usar o brew é muito complicado.
b01
4
Como o 'brew install v8' é complicado?
Devan Buggay
5

Eu acho que isso pode ter mudado. Eu li o manual e construí a v8 assim:

moose@pc08$ svn co http://v8.googlecode.com/svn/trunk v8-trunk
moose@pc08$ cd v8-trunk
moose@pc08$ make dependencies
moose@pc08$ make ia32.release

adicionado export PATH=${PATH}:/home/moose/Downloads/v8-trunk/out/ia32.releaseao meu .bashrc

moose@pc08 ~ $ source ~/.bashrc
moose@pc08 ~ $ d8 A_tic_tac_toe_Tomek.js < A-small-practice.in

(Com javascript do aditsu e A-small-practice.in do Google Code Jam)

Martin Thoma
fonte
2
Uma página cheia de respostas e a sua, a menos considerada, contém os conselhos finais de que eu precisava.
Seth Difley
4

Depois de seguir as instruções de compilação ( V8 Build Docs do Google ) para o seu sistema;

[v8 directory]$ cd out/native
[v8 directory]$ ./shell (sample shell)
[v8 directory]$ ./d8 (console: dumb)

Criei um alias no meu .bash_profile para facilitar a chamada do shell.

alias v8='/Volumes/Dev/GitHub/v8/out/native/shell'

Digitar v8 na CLI (em um novo Terminal ou shell - para recarregar seu perfil do bash) produz o shell v8. JavaScript no prompt de comando! :)

Joe Johnson
fonte
3

Se você usa o ArchLinux, pode pacman -S v8instalá-lo. Em seguida, use d8para iniciá-lo em seu shell. Aproveite.

alswl
fonte
1
Parece estar no AUR, portanto não pode ser instalado com o pacman.
Colliot
3

Caso você queira executar seu código-fonte javascript usando o mecanismo v8 ou qualquer versão dele, poderá utilizar a ferramenta de linha de comando jsvu . Foi desenvolvido e mantido pelos engenheiros do Google e, além disso, oferece o recurso de instalar outros mecanismos javascript além da v8 , como spidermonkey , chakracore , javascriptcore e xs .

sgeorgiou
fonte
2

Se você planeja incorporar o V8, construa-o e brinque com "d8".

Se, por outro lado, você não planeja estender o V8 ou tratá-lo como opcional, basta usar o Node.JS. Não se preocupe com o V8 puro.

O Node.js possui E / S, extensões, bibliotecas verdadeiramente ricas (como Perl CPAN, Python Eggs, Ruby Gems) e comunidade.

AR
fonte
Você não precisa usar o node.js, é apenas um invólucro e uma dependência extra.
b01