Ejecutando V8 Javascript Engine Standalone


128

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

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:
...

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


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
    > 

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.


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)


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! :)


3

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


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 .


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.


No necesita usar node.js, es solo un contenedor y una dependencia adicional.
b01
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.