Node.js est un environnement JavaScript côté serveur, sous licence MIT. Sa particularité est son approche asynchrone pour faciliter la montée en puissance dans des contextes avec beaucoup d’entrées‐sorties, notamment réseau. En pratique, il se compose :
- d’un interpréteur JavaScript, à savoir V8 ;
- de
require()
, un chargeur de modules compatible CommonJS ; - d’une bibliothèque standard, volontairement restreinte (une sorte de libc JavaScript où tous les appels sont asynchrones) ;
- d’un ensemble de conventions : par exemple, les fonctions de retour indiquent toujours en premier paramètre si l’appel s’est bien passé, et dans le cas contraire, quelle a été l’erreur ;
- et d’un exécutable,
« node »
, pour lancer tout ça.
La version 0.6.0 est sortie aujourd’hui et apporte quelques nouveautés de taille (plus de détails en seconde partie) :
- la prise en charge de Windows en utilisant les I/O Completion Ports (IOCP) ;
- un répartiteur de charge entre plusieurs processus Node.js intégré ;
- des moyens de communications entre des processus Node.js plus efficaces ;
- des améliorations du débogueur en ligne de commande ;
- des bindings pour la
zlib
; - la mise à jour de V8, passant de la version 3.1 à la 3.6.
La prise en charge de Windows, sans dégrader les performances pour les UNIX, a pris plus longtemps que prévu. Cela a fortement retardé la sortie de cette version, mais Ryan Dahl, son créateur, souhaite sortir la prochaine version stable de Node.js (la v0.8.0) pour janvier 2012.