- 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 retours 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.4.0 sortie cette semaine est la deuxième stable (c'est comme pour l'ancien mode de développement du noyau Linux : le numéro mineur est pair pour les versions stables et impair pour les versions de développement). Les principaux changements depuis la version stable précédente (la version 0.2, pour ceux qui suivent) sont les suivants :
- nouveau client HTTP, avec une API plus simple et la gestion d'un réserve (pool) de connexions ;
- refonte du module TLS/SSL ;
- augmentation des performances, grâce à l'allocation plus rapide des tampons mémoire (Buffer) ;
- meilleure prise en charge des gestionnaires de paquets comme npm, grâce à l'amélioration de require() ;
- une mise à jour de V8 pour la version 3.1.2 ;
- un débogueur fonctionnel, mais encore très limité pour le moment ;
- un module os qui expose des informations sur le système ;
- et, bien sûr, plein de corrections de bogues.