All rights reserved © Pierstoval
Moon art from Lawlie.
(Support artists by paying them)
Background from Solar System Scope

mardi 12 janvier 2016

[CODE] Pourquoi passe-t-on de NodeJS v0.12 à NodeJS v4 ??

Récemment, j'ai reçu un audit sur l'un des projets que j'avais développé.

L'audit me disait ceci :
Mise à jour nécessaire de sécurité nécessaire :
Version actuelle : NodeJS v0.12
Recommandée : NodeJS v4.0

What ?

Depuis quand est-on passé de NodeJS v0.12 à NodeJS v4 ? (et aujourd'hui NodeJS v5 ?)



Je me suis un peu renseigné sur le pourquoi du comment de NodeJS v0.12 puis v4 puis v5, et en fait leur build induit tout un tas de BC breaks (rétro-incompatibilités) lorsqu'ils passent à une version supérieure de io.js (qui sert de base aux différents usages du process NodeJS), ou quand ils mettent à jour le moteur V8 utilisé.

Du coup, il y a effectivement eu une v1, v2 et v3 mais elles sont passées à côté car visiblement trop instables par rapport à la branche 0.x (ou rapidement mises à jour avec de nouvelles versions) qui était mieux supportée, et surtout pas mal de packages en dépendaient, et ne passaient pas aux versions majeures supérieures (à cause des BC breaks).

Liens :
Explication de la v1.0.0 par rapport à la v0.10.35
Log de la v2.0.0 (mise à jour du moteur V8, recompilation de tous les addons)
Log de la v3.0.0 (refactoring complet de "Buffer.concat" + mise à jour du moteur V8)
Log de la v4.0.0 (ils ont renommé "io.js" en "Node.js" + mise à jour du moteur V8)
Log de la v5.0.0 (mise à jour du moteur V8, et refactorisation de pas mal de composants comme le buffer, le filesystem ou autre)

Et ils font les choses assez intelligemment parce qu’ils ont des tonnes de guides et d’explications sur le changement de l’API de NodeJS entre chaque version, comme ici où l’on voit les changements de la v0.10 à la v4.x.

L'équipe a mis à disposition un super wiki qui nous expose tous les BC Breaks et les mises à jour de NodeJS, et j'avoue qu'il est assez complet sur le sujet.

Sinon, vérifiez TOUJOURS vos fichiers package.json dans vos projets pour spécifier quelle version de nodejs est compatible :
{
"engines": { "node": ">=5.0.0" }
}

J'ai à cœur de le savoir mais... Est-ce que vous aussi, vous faites attentions aux mises à jour de vos propres projets ?

Conclusion : si votre projet est utilisé par d'autres personnes, ajoutez TOUJOURS un "changelog" ou un résumé de chaque nouvelle version.

Aucun commentaire:

Enregistrer un commentaire

Vous avez le droit de garder le silence.
Si vous renoncez à ce droit, tout ce que vous direz pourra être et sera utilisé contre vous.