Quiero ejecutar una consola de Javascript encima de V8. ¿Cómo hago esto?Ejecutando V8 Javascript Engine Independiente
Respuesta
V8 es fácil de construir y no viene con la sobrecarga de Java VM del intérprete de JavaScript independiente de Mozilla. Afortunadamente, V8 viene con código para construir una consola. Aquí es cómo construir este:
$> svn co http://v8.googlecode.com/svn/trunk v8-trunk ... $> cd v8-trunk $> scons $> g++ ./samples/shell.cc -o v8-shell -I include libv8.a
Ahora, tenemos un binario independiente llamada v8-shell
.
Ejecución de la consola:
$> ./v8-shell V8 version 2.0.2 > var x = 10; > x 10 > function foo(x) { return x * x; } > foo function foo(x) { return x * x; } > quit()
La ejecución de Javascript desde la línea de comandos:
$> ./v8-shell -e 'print("10*10 = " + 10*10)' 10*10 = 100
Muchas más características están documentados en la ayuda:
$> ./v8-shell --help Usage: ...
para construir la consola del programador , en lugar de la aplicación de ejemplo 'shell', copie y pegue los comandos siguientes 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 kernel "genérico". Para otras distribuciones, deberá reemplazar el comando apt-get con cualquier herramienta de paquete que tenga disponible. En los sistemas de 64 bits, es posible que deba agregar arch=x64
. La opción console=readline
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:
Consulte también: Building v8 with GYP
Tuve que agregar 'arch = x64' para compilar en ubuntu de 64 bits. – projectshave
¿Qué hace la opción console = readline? – Hugh
@Hugh: habilita el sistema readline; esto es lo que le permite usar la flecha hacia arriba para obtener el comando anterior, entre otras cosas. – bukzor
En Mac OS X Asegúrese de tener instalado brew
. A continuación, ejecute el comando (sudo) brew install v8
, dependiendo de su máquina, esto puede llevar algo de tiempo. Para iniciar la consola V8, simplemente ejecute v8
- Voilà!
Consejo: Para salir de la consola, basta con ejecutar quit()
y no olvides los paréntesis!
Si utiliza ArchLinux, puede usar pacman -S v8
para instalarlo. Luego use d8
para iniciarlo en su caparazón. Disfrútalo.
Eso parece estar en el AUR así que no se puede instalar con pacman. – Colliot
¿Qué tal si ejecuta V8 Javascript a través de la línea de comando usando node.js?
node.js usa v8 como motor y agrega mucha funcionalidad encima.
Por ejemplo en Mac OS X si tiene Homebrew instalado, simplemente cuestión:
$ brew install node
$ node
>
IMHO node.js es el nuevo estándar de facto cuando se trata de consolas de JavaScript. Utiliza v8, y es probablemente la mejor opción para usar para esto. – Tracker1
Si usted está planeando para incrustar V8, entonces por todos los medios construirlo y jugar con "D8".
Si, por otro lado, no tiene previsto extender el V8 o tratarlo como opcional, , simplemente utilice Node.JS. No te molestes con V8 puro.
Node.js tiene E/S verdaderamente completas, 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
Después de seguir las instrucciones de compilación (Google's V8 Build Docs) 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'
v8 Typing en la CLI (en un nuevo terminal o shell - para recargar su perfil de golpe) produce el shell v8. JavaScript en el símbolo del sistema! :)
Creo que esto podría haber cambiado. Me read the manual v8 y construir de esta manera:
[email protected]$ svn co http://v8.googlecode.com/svn/trunk v8-trunk
[email protected]$ cd v8-trunk
[email protected]$ make dependencies
[email protected]$ make ia32.release
añade export PATH=${PATH}:/home/moose/Downloads/v8-trunk/out/ia32.release
a mi .bashrc
[email protected] ~ $ source ~/.bashrc
[email protected] ~ $ d8 A_tic_tac_toe_Tomek.js < A-small-practice.in
(con javascript de aditsu y A-small-practice.in de Google Code Jam)
Una página llena de respuestas y la tuya, la menos considerada, contiene el consejo final que necesitaba. –
- 1. Ejecutando el motor independiente javascript?
- 2. Google Javascript V8 - multithreading
- 3. Javascript regex cuelga (usando v8)
- 4. JavaScript Standard Library for V8
- 5. ¿Está ejecutando Javascript con CScript?
- 6. pila y montón en V8 (JavaScript)
- 7. Perl: Javascript :: Plantillas V8 - del perl
- 8. ¿Cliente independiente de webGL/Javascript?
- 9. Javascript - Template Engine
- 10. Javascript Graph Layout Engine
- 11. Uso de Spark View Engine en una aplicación independiente
- 12. Ejecutando Javascript desde Python
- 13. Ejecutando .exe desde Javascript
- 14. ¿Puedo crear un objeto 'ventana' para javascript ejecutando en Java6 Rhino Script Engine
- 15. V8 FunctionTemplate Clase Instancia
- 16. Descripción de la arquitectura de Google V8
- 17. Sistema de archivos de E/S en Javascript usando V8
- 18. Javascript: bajo rendimiento en V8 de funciones agregadas a String.prototype?
- 19. ¿Cómo convertir el javascript compilado de V8 en un EXE?
- 20. Ejecutando javascript dentro de PHP
- 21. Ejecutando el servidor Mercurial en Google App Engine
- 22. Cómo "bloquear" V8?
- 23. Edificio v8 sin JIT
- 24. Node.js y V8 de recolección de basura
- 25. jQuery Mobile no está ejecutando secundaria javascript
- 26. ejecutando funciones anónimas creadas usando JavaScript eval()
- 27. Ejecutando código Javascript "in situ" en Chrome?
- 28. Exprimir el rendimiento de v8
- 29. Conversión de v8 :: Argumentos a C++ Tipos
- 30. ¿Incrustar V8 en la aplicación OpenCL?
Gracias para la propina y las instrucciones explícitas. Tuve que agregar la opción '-lpthread' al comando' g ++ 'bajo ubuntu 10.04. – intuited
scons falló para mí en Ubuntu, pero al ejecutar sudo apt-get install libc6-dev-i386 se solucionó eso. –
y si su en x86_64 hacer a: 'scons arch = x64' hasta que se solucione en el tronco http://code.google.com/p/v8/issues/detail?id=429#c1 – EdH