Exécution autonome du moteur Javascript V8


128

Je veux exécuter une console Javascript sur V8. Comment puis-je faire cela?

Réponses:


115

La version V8 est facile à construire et ne vient pas avec la surcharge de machine virtuelle Java de l'interpréteur Javascript autonome de Mozilla. Heureusement, le V8 est livré avec un code pour la construction d'une console. Voici comment construire ceci:

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

Maintenant, nous avons un binaire autonome appelé v8-shell.

Exécution de la console:

$> ./v8-shell 
V8 version 2.0.2
> var x = 10;
> x
dix
> fonction foo (x) {return x * x; }
> foo
function foo (x) {retourne x * x; }
> quitter ()

Exécution de Javascript depuis la ligne de commande:

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

De nombreuses autres fonctionnalités sont documentées dans l'aide:

$> ./v8-shell --aide
Usage:
...

9
Merci pour le conseil et les instructions explicites. J'ai dû ajouter l'option -lpthreadà la g++commande sous ubuntu 10.04.
intuité

1
scons a échoué pour moi sur Ubuntu, mais l'exécution de sudo apt-get install libc6-dev-i386 a résolu ce problème.
Thorsten Lorenz

2
et si vous êtes sur x86_64, faites un: 'scons arch = x64' jusqu'à ce qu'il soit corrigé dans le tronc code.google.com/p/v8/issues/detail?id=429#c1
EdH

4
Veuillez noter que cette coque v8 est destinée à être un exemple de jouet. Le "vrai" shell v8 est appelé d8. Voir ma réponse pour plus d'informations.
bukzor

2
La méthode de récupération du code source semble modifiée. Regardez ici .
Colliot

59

Pour construire la console développeur, plutôt que l'exemple d'application jouet «shell», copiez-collez les commandes ci-dessous dans votre terminal.

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

Ces instructions fonctionneront pour Ubuntu / Debian avec un noyau "générique". Pour les autres distributions, vous devrez remplacer la commande apt-get par n'importe quel outil de package dont vous disposez. Sur les systèmes 64 bits, vous devrez peut-être ajouter arch=x64. L' console=readlineoption active le système readline , pour qu'il se sente un peu plus comme un shell standard.

Une documentation plus complète ici: http://code.google.com/apis/v8/build.html


Remarque:

entrez la description de l'image ici

Voir aussi: Construire v8 avec GYP


9
J'ai dû ajouter arch=x64pour construire sur ubuntu 64 bits.
projectshave le

@Hugh: Cela active le système readline; c'est ce qui vous permet d'utiliser la flèche vers le haut pour obtenir la commande précédente, entre autres subtilités.
bukzor

Une fois la construction terminée, exécutez le shell en entrant ./d8.
Mathias Bynens

sur ubunt 12.04: erreur fatale: readline / readline.h: Aucun fichier ou répertoire de ce type - des idées?
pguardiario

44

Que diriez-vous d'exécuter V8 Javascript via la ligne de commande en utilisant node.js ?

node.js utilise la v8 comme moteur et ajoute de nombreuses fonctionnalités en plus.


Par exemple sur Mac OSX si Homebrew est installé, émettez simplement:

    $ brew install node
    $ node
    > 

1
IMHO node.js est le nouveau standard de facto en ce qui concerne les consoles JavaScript. Il utilise la v8 et est probablement la meilleure option à utiliser pour cela.
Tracker1

23

Sur Mac OS X, assurez-vous d'avoir brewinstallé. Ensuite, exécutez simplement la commande (sudo) brew install v8, en fonction de votre machine, cela peut prendre un certain temps. Pour démarrer la console V8, lancez simplement v8- Voilà!

Astuce: pour quitter la console, lancez simplement quit()et n'oubliez pas les parenthèses!


1
Ou appuyez simplement sur Ctrl-Dpour quitter :)
Dogbert

Ou Ctrl-Cpour le tuer
Braden Best

Vous pouvez créer la v8 par elle-même et c'est assez simple, utiliser brew est bien trop compliqué.
b01

4
En quoi 'Brew Install V8' est-il fastidieux?
Devan Buggay

5

Je pense que cela a peut-être changé. J'ai lu le manuel et construit la v8 comme ceci:

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

ajouté export PATH=${PATH}:/home/moose/Downloads/v8-trunk/out/ia32.releaseà mon .bashrc

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

(Avec javascript d' aditsu et A-small-practice.in de Google Code Jam)


2
Une page pleine de réponses et la vôtre, la moins considérée, contient les derniers conseils dont j'avais besoin.
Seth Difley

4

Après avoir suivi les instructions de construction ( Google V8 Build Docs ) pour votre système;

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

J'ai créé un alias dans mon .bash_profile pour faciliter l'invocation du shell.

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

Taper v8 sur la CLI (dans un nouveau terminal ou shell - pour recharger votre profil bash) donne le shell v8. JavaScript à l'invite de commande! :)


3

Si vous utilisez ArchLinux, vous pouvez l'utiliser pacman -S v8pour l'installer. Ensuite, utilisez d8pour le démarrer dans votre shell. Profitez-en.


1
Cela semble être sur l'AUR et ne peut donc pas être installé avec pacman.
Colliot

3

Si vous souhaitez exécuter votre code source javascript à l'aide du moteur v8 ou de toute version de celui-ci, vous pouvez utiliser l' outil de ligne de commande jsvu . Il est développé et maintenu par les ingénieurs de Google et, en plus, il offre la possibilité d'installer d'autres moteurs javascript en dehors de la v8 , tels que spidermonkey , chakracore , javascriptcore et xs .


2

Si vous prévoyez d'intégrer le V8, alors construisez-le et jouez avec "d8".

Si, d'un autre côté, vous ne prévoyez pas d'étendre V8 ou de le traiter comme facultatif, utilisez simplement Node.JS. Ne vous embêtez pas avec du V8 pur.

Node.js possède des E / S, des extensions, des bibliothèques (comme Perl CPAN, Python Eggs, Ruby Gems) et une communauté vraiment riches.


Vous n'avez pas besoin d'utiliser node.js, c'est juste un wrapper et une dépendance supplémentaire.
b01
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.