Node 4.0.0

Si vous l’aviez raté, sachez que Node vient de passer un cap important :) 4.0.0 c’est un peu l’album de la maturité. Passons en revue le quoi, le pourquoi et le comment 😉

Pourquoi 4.0.0 ?

Alors non ce n’est pas une lubie commerciale, ou un trait d’humour « parce que JavaScript ». La blague (voire le troll) est facile, mais la réalité est bien plus respectable.

À la base : io.js, un fork de Node qui décide de respecter le semantic versioning (*), et de suivre au plus près les mises à jour de V8. Comme mettre à jour V8 implique parfois des ruptures de compatibilités, io.js est vite passé de la 1.x à la 2.x et récemment la 3.x.

Puis, la fusion : on décide de fusionner les deux projets (en très gros,  renommer « io.js » en « node » et passer un coup de polish), il faut bien donner un numéro de version :

  • Passer « node » de 0.x à 1.x ? Ça a du sens, mais « io.js » utilisait le nom « node » pour son binaire et de nombreuses références internes (peut-être une erreur, mais ça a aussi largement simplifié la fusion au retour) donc on aurait risqué moultes confusions à l’avenir.
  • Passer « node » de 0.x à 4.x ? Ça fait rire, mais ça règle toutes les questions techniques.

Les nouveautés

API

J’avoue n’avoir pas suivi en détail les évolutions dans io.js (surtout à partir du moment où une fusion à court terme a été confirmée), mais voici ce que j’ai noté d’important :

Il manque encore 2-3 choses pour être au top 😉 personnellement j’utilise Babel pour ces fonctionnalités :

Du coup on n’est quand-même pas loin de pouvoir faire de l’ES6 tout en pouvant se passer de Babel. Mais on n’y est pas encore tout-à-fait (les modules restant le gros morceau pour moi).

La nouvelle orientation de Babel prend tout son sens (merci Bruno pour le lien :*).

(*) Semantic Versionning

Finies les 0.x, node adopte sans ambiguités le « semantic versioning« . Vous pourrez donc être sûr que vos modules écrits pour la version 4 fonctionneront pour toutes les 4.* suivantes.

Ce qui implique qu’on n’aura plus peur de toutes les mises à jour. Seulement les majeures :) La suite logique étant…

Le support à long terme !

Il y a un vrai plan de maintenance des versions de node qui fixe la durée de vie d’une version « LTS » à 30 mois : 18 mois de support actif, et 12 mois de maintenance, au-delà desquels ladite version ne sera plus du tout supportée.

En théorie, une nouvelle version « LTS » devrait sortir tous les 12 mois.

Concrètement donc, mettre à jour sa version de Node tous les 12 à 18 mois assurera d’être toujours dans le cadre du support long terme actif.

Alors on fait quoi ?

Et bien on met à jour maintenant :) Si vous utilisiez un gestionnaire de versions du genre « nvm« , ce serait mieux. Et si ce n’est pas le cas, il est temps de le faire.

$ nvm install v4
$ node -v
v4.0.0

Et puis on met à jour son appli avant de tester :)

$ nvm use 4
$ rm -rf node_modules
$ npm install
$ npm start # whatever start command your project uses

Évidemment si vous vous contentez de mettre à jour et de lancer vos applis directement avec la nouvelle version il y a des chances que vous ayez des « Segmentation Faults ». Il est normal que les modules binaires doivent être recompilés en cas de changement de version de v8, arrêtez donc de râler.

Si vous êtes auteur d’un module binaire qui ne fonctionne plus avec la nouvelle version, mettez-le rapidement à jour ! Vous ne voulez pas que la nouvelle version de node voit son adoption ralentie à cause de vous hein :) Idéalement, utilisez les helpers de Nan pour vous simplifier la vie à l’avenir. En attendant, mettez donc à jour votre « package.json » pour éviter les mauvaises surprises (et mettez vite à jour pour que l’humiliation soit moins longue :P) :

{
  "engines": {
    "node": "< 4.0"
  }
}

Si votre application dépend d’un module binaire cassé avec la nouvelle version… Désolé :( prévenez l’auteur, vérifiez qu’il réagit vite sinon envisagez de modifier cette dépendance afin de pouvoir passer à la 4.0 rapidement. Idéalement une application devrait toujours pouvoir tourner avec la LTS en cours. Donc être passé à la 4.0 avant avril 2016.

Un peu de lecture en vrac

Enjoy!

Laisser un commentaire