Releases

Wijzigingen

Verso volgt semantische versienummering strikt. Een minor release verandert nooit de gerenderde uitvoer van een bestaand template; toen dat een keer nodig was, wachtten we op een major en kondigden we het zes maanden vooraf aan.

3.2.1
14 februari 2026
Actueel

Opgelost

  • renderToStream() kon het samenvoegscript vóór het uitgestelde blok uitsturen als twee blokken in dezelfde tick klaar waren. Gemeld door @hal-moravec met een minimale reproductie, waardoor de fix twee regels lang werd.
  • Het filter date gaf in niet-strikte modus Invalid Date terug in plaats van een lege string bij null.
  • Sourcemaps wezen één regel te hoog bij templates waarvan de eerste regel commentaar was.

Gewijzigd

  • Compileerfouten tonen nu twee regels context in plaats van één. Geen API-wijziging.
3.2.0
9 januari 2026

Toegevoegd

  • Streaming partials. {{#defer}} mag nu ook in een ingevoegd partial staan, niet alleen op het hoogste niveau van het hoofdtemplate. Dit was de meest gevraagde functie van 2025 en kostte drie pogingen.
  • RenderOptions.onError — vervang een falend blok door een reservestring in plaats van de stream te vernietigen.
  • verso explain --tree toont de knooppuntenboom.

Opgelost

  • Het oplossen van partials volgt symlinks nu consequent op Linux en macOS.
  • Het filter unique bewaarde het laatste voorkomen in plaats van het eerste.
3.1.0
22 september 2025

Toegevoegd

  • Operator in in voorwaarden: {{#if role in allowedRoles}}.
  • --sourcemap voor verso build.
  • Browserbuild gepubliceerd als verso/browser, 7,4 kB met gzip.

Prestaties

  • Constant folding van statische attribuutwaarden. Templates die vooral uit markup bestaan, compileren 30–40% kleiner.
  • Escaping gebruikt nu één doorloop over de tekens; een tabel van 2 000 rijen renderen ging van 3,1 naar 1,9 ms.
3.0.0
6 mei 2025
Brekend
Brekende wijzigingen

De enige brekende release in de geschiedenis van het project. Aangekondigd in november 2024 en zes maanden later uitgebracht, met een codemod in @verso/migrate.

Gewijzigd

  • Lege arrays zijn nu falsy. {{#if items}} neemt bij [] niet langer de ware tak. Dit was de grootste afzonderlijke bron van bugmeldingen in 2.x.
  • Escaping houdt rekening met de context. Waarden in de attributen href, src en style worden voor die contexten geëscapet. Templates die handmatig dubbel escapeten, tonen nu letterlijke entiteiten — de codemod vindt ze.
  • compile() is synchroon; de asynchrone vorm is verhuisd naar compileFile().
  • Node.js 18 is het minimum. Node 16 bereikte in september 2023 het einde van zijn levensduur.

Verwijderd

  • {{#with}}, uitgefaseerd sinds 2.6. Gebruik {{> partial with value}}.
  • Impliciet zoeken naar verso.config.js. Geef --config expliciet op.
2.9.4
11 maart 2026
Onderhoud

Opgelost

  • Backport van de streamingfix uit 3.2.1.

De 2.x-lijn krijgt beveiligings- en correctheidsfixes tot 30 juni 2027. Nieuwe functies worden niet teruggeport.

2.6.0
18 oktober 2024
Vervangen

Toegevoegd

  • Layouts: {{#extends}}, {{#slot}} en {{#fill}}.
  • Commando verso check.

Uitgefaseerd

  • {{#with}} — verwijderd in 3.0.
1.0.0
3 juni 2021
Historisch

Eerste publieke release. Losgemaakt uit een pipeline voor statische sites, waarin het ongeveer acht maanden één bestand van 300 regels was. Interpolatie, #if, #each, partials en zes filters.

Beleid

Hoe we versienummeren

Patch-releases repareren bugs en veranderen nooit de uitvoer van een template dat al correct was. Minor-releases voegen syntaxis of API toe; bestaande templates blijven identiek renderen. Major-releases mogen de gerenderde uitvoer veranderen, en dat hebben we één keer gedaan.

Elke releaselijn krijgt minstens achttien maanden na de volgende major nog beveiligingsfixes. De data worden hier gepubliceerd wanneer een major wordt aangekondigd, niet pas als de ondersteuning stopt.

Uitfaseringen geven een volledige minorcyclus lang een waarschuwing tijdens het compileren voordat ze verdwijnen, en de waarschuwing noemt de vervanging en de versie waarin het wordt geschrapt.

Een beveiligingsprobleem melden →