Ejecutando V8 Javascript Engine Standalone

128

Quiero ejecutar una consola Javascript encima de V8. ¿Cómo hago esto?

Manuel
fuente

Respuestas:

115

V8 es fácil de construir y no viene con la sobrecarga Java VM del intérprete independiente de Javascript de Mozilla. Afortunadamente, V8 se envía con un código para construir una consola. Aquí es cómo construir esto:

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

Ahora, tenemos un binario independiente llamado v8-shell.

Ejecutando la consola:

$> ./v8-shell 
V8 versión 2.0.2
> var x = 10;
> x
10
> función foo (x) {return x * x; }
> foo
función foo (x) {return x * x; }
> salir ()

Ejecutando Javascript desde la línea de comando:

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

Muchas más características están documentadas en la ayuda:

$> ./v8-shell --help
Uso:
...
Georg Schölly
fuente
9
Gracias por el consejo y las instrucciones explícitas. Tuve que agregar la opción -lpthreadal g++comando en ubuntu 10.04.
intuido
1
scons me falló en Ubuntu, pero ejecutar sudo apt-get install libc6-dev-i386 lo resolvió.
Thorsten Lorenz
2
y si está en x86_64, haga un: 'scons arch = x64' hasta que se solucione en el código troncal.google.com/p/v8/issues/detail?id=429#c1
EdH
44
Tenga en cuenta que este v8-shell está destinado a ser un ejemplo de juguete. Se llama el shell "real" v8 d8. Vea mi respuesta para más información.
bukzor
2
El método para recuperar el código fuente parece cambiado. Ver aquí .
Colliot
59

Para construir la consola del desarrollador, en lugar de la aplicación de juguete 'shell' de ejemplo, copie y pegue los siguientes comandos en su 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 instrucciones funcionarán para Ubuntu / Debian con un núcleo "genérico". Para otras distribuciones, deberá reemplazar el comando apt-get con cualquier herramienta de paquete que tenga disponible. En sistemas de 64 bits, es posible que deba agregar arch=x64. La console=readlineopción habilita el sistema readline , para que se sienta un poco más como un shell estándar.

Documentación más completa aquí: http://code.google.com/apis/v8/build.html


Nota:

ingrese la descripción de la imagen aquí

Ver también: Construyendo v8 con GYP

bukzor
fuente
9
Tuve que agregar arch=x64para construir en 64 bits ubuntu.
proyectoshave
@Hugh: habilita el sistema readline; Esto es lo que le permite utilizar la flecha hacia arriba para obtener el comando anterior, entre otros detalles.
bukzor
Una vez que el edificio haya terminado, ejecute el shell entrando ./d8.
Mathias Bynens
en ubunt 12.04: error fatal: readline / readline.h: No existe tal archivo o directorio, ¿alguna idea?
pguardiario 01 de
44

¿Qué hay de ejecutar V8 Javascript a través de la línea de comandos usando node.js ?

node.js usa v8 como su motor y agrega mucha funcionalidad encima.


Por ejemplo, en Mac OSX si tiene instalado Homebrew , simplemente emita:

    $ brew install node
    $ node
    > 
tle
fuente
1
En mi humilde opinión, node.js es el nuevo estándar de facto cuando se trata de consolas JavaScript. Utiliza v8, y es probablemente la mejor opción para esto.
Rastreador1
23

En Mac OS X, asegúrese de tener brewinstalado. Luego, simplemente ejecute el comando (sudo) brew install v8, dependiendo de su máquina, esto puede llevar algún tiempo. Para iniciar la consola V8, solo ejecuta v8- ¡Voilà!

Sugerencia: Para salir de la consola, simplemente ejecute quit()y no olvide los paréntesis.

Mario Uher
fuente
1
O simplemente presione Ctrl-Dpara salir :)
Dogbert
O Ctrl-Cpara matarlo
Braden Best
Puede construir v8 por sí mismo y es bastante simple, usar brew es demasiado engorroso.
b01
44
¿Cómo es engorroso 'brew install v8'?
Devan Buggay
5

Creo que esto podría haber cambiado. Me leído el manual v8 y la acumulación de esta manera:

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

agregado export PATH=${PATH}:/home/moose/Downloads/v8-trunk/out/ia32.releasea mi .bashrc

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

(Con javascript de aditsu y A-small-practice.in de Google Code Jam)

Martin Thoma
fuente
2
Una página llena de respuestas y la suya, la menos considerada, contiene el consejo final que necesitaba.
Seth Difley
4

Después de seguir las instrucciones de compilación ( V8 Build Docs de Google ) para su sistema;

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

Creé un alias en mi .bash_profile para facilitar la invocación del shell.

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

Al escribir v8 en la CLI (en una nueva Terminal o shell, para recargar su perfil bash) se obtiene el v8 shell. JavaScript en el símbolo del sistema! :)

Joe Johnson
fuente
3

Si usa ArchLinux, puede usarlo pacman -S v8para instalarlo. Luego use d8para iniciarlo en su shell. Disfrútala.

alswl
fuente
1
Eso parece estar en el AUR, por lo que no se puede instalar con pacman.
Colliot
3

En caso de que desee ejecutar su código fuente javascript utilizando el motor v8 o cualquier versión del mismo, puede utilizar la herramienta de línea de comandos jsvu . Es desarrollado y mantenido por los ingenieros de Google y, además, ofrece la característica de la instalación de otros motores de JavaScript aparte de v8 , como spidermonkey , chakracore , JavaScriptCore y XS .

sgeorgiou
fuente
2

Si planeas incrustar V8, entonces, por supuesto, compílalo y juega con "d8".

Si, por otro lado, no planea extender V8 o tratarlo como opcional, simplemente use Node.JS. No te molestes con el puro V8.

Node.js tiene E / S verdaderamente ricas, extensiones, bibliotecas (como Perl CPAN, Python Eggs, Ruby Gems) y comunidad.

Arkansas
fuente
No necesita usar node.js, es solo un contenedor y una dependencia adicional.
b01