Versions

Historique des versions

Verso suit strictement le versionnage sémantique. Une version mineure ne change jamais le rendu d’un template existant ; quand nous en avons eu besoin, nous avons attendu une version majeure et l’avons annoncée six mois à l’avance.

3.2.1
14 février 2026
Actuelle

Corrigé

  • renderToStream() pouvait émettre le script d’assemblage avant le bloc différé quand deux blocs se résolvaient dans le même tick. Signalé par @hal-moravec avec une reproduction minimale, ce qui a réduit le correctif à deux lignes.
  • Le filtre date renvoyait Invalid Date au lieu d’une chaîne vide pour une entrée null en mode non strict.
  • Les sourcemaps pointaient une ligne trop haut pour les templates dont la première ligne était un commentaire.

Modifié

  • Les erreurs de compilation affichent maintenant deux lignes de contexte au lieu d’une. Aucun changement d’API.
3.2.0
9 janvier 2026

Ajouté

  • Partials en streaming. {{#defer}} peut désormais figurer dans un partial inclus, et plus seulement au premier niveau du template d’entrée. C’était la fonctionnalité la plus demandée de 2025, et il a fallu trois tentatives.
  • RenderOptions.onError — remplace un bloc en échec par une chaîne de secours au lieu de détruire le flux.
  • verso explain --tree affiche l’arbre des nœuds.

Corrigé

  • La résolution des partials suit désormais les liens symboliques de la même façon sous Linux et macOS.
  • Le filtre unique conservait la dernière occurrence au lieu de la première.
3.1.0
22 septembre 2025

Ajouté

  • Opérateur in dans les conditions : {{#if role in allowedRoles}}.
  • --sourcemap pour verso build.
  • Version navigateur publiée sous verso/browser, 7,4 ko compressée.

Performances

  • Repliement des valeurs d’attributs statiques. Les templates surtout composés de balisage se compilent 30 à 40 % plus petits.
  • L’échappement se fait désormais en un seul parcours des caractères ; le rendu d’un tableau de 2 000 lignes est passé de 3,1 à 1,9 ms.
3.0.0
6 mai 2025
Incompatible
Changements incompatibles

La seule version incompatible de l’histoire du projet. Annoncée en novembre 2024 et publiée six mois plus tard, avec un codemod dans @verso/migrate.

Modifié

  • Les tableaux vides sont désormais faux. {{#if items}} ne prend plus la branche vraie pour []. C’était la principale source de rapports de bug sur toute la 2.x.
  • L’échappement tient compte du contexte. Les valeurs des attributs href, src et style sont échappées pour ces contextes. Les templates qui échappaient deux fois à la main afficheront des entités littérales — le codemod les repère.
  • compile() est synchrone ; la forme asynchrone est passée à compileFile().
  • Node.js 18 est le minimum. Node 16 est arrivé en fin de vie en septembre 2023.

Supprimé

  • {{#with}}, déprécié depuis la 2.6. Utilisez {{> partial with value}}.
  • Recherche implicite de verso.config.js. Passez --config explicitement.
2.9.4
11 mars 2026
Maintenance

Corrigé

  • Rétroportage du correctif de streaming de la 3.2.1.

La branche 2.x reçoit des correctifs de sécurité et de justesse jusqu’au 30 juin 2027. Aucune nouvelle fonctionnalité ne sera rétroportée.

2.6.0
18 octobre 2024
Remplacée

Ajouté

  • Mises en page : {{#extends}}, {{#slot}} et {{#fill}}.
  • Commande verso check.

Déprécié

  • {{#with}} — supprimé en 3.0.
1.0.0
3 juin 2021
Historique

Première version publique. Extraite d’une chaîne de génération de site statique où elle tenait en un seul fichier de 300 lignes depuis environ huit mois. Interpolation, #if, #each, partials et six filtres.

Règles

Comment nous versionnons

Les versions correctives corrigent des bugs et ne changent jamais la sortie d’un template déjà correct. Les versions mineures ajoutent de la syntaxe ou de l’API ; les templates existants produisent un rendu identique. Les versions majeures peuvent changer le rendu, et nous l’avons fait une fois.

Chaque branche reçoit des correctifs de sécurité pendant au moins dix-huit mois après la sortie de la majeure suivante. Les dates sont publiées ici dès l’annonce d’une majeure, pas à la fin du support.

Les dépréciations déclenchent un avertissement à la compilation pendant un cycle mineur complet avant suppression, et l’avertissement indique le remplacement et la version qui le retirera.

Signaler un problème de sécurité →