Releases

Änderungen

Verso folgt der semantischen Versionierung strikt. Ein Minor-Release ändert nie die gerenderte Ausgabe eines bestehenden Templates; als wir das einmal mussten, haben wir auf ein Major-Release gewartet und es sechs Monate vorher angekündigt.

3.2.1
14. Februar 2026
Aktuell

Behoben

  • renderToStream() konnte das Zusammenfüge-Skript vor dem verzögerten Block ausgeben, wenn zwei Blöcke im selben Tick fertig wurden. Gemeldet von @hal-moravec mit einer minimalen Reproduktion, wodurch der Fix zwei Zeilen lang wurde.
  • Der Filter date lieferte im nicht strikten Modus bei null Invalid Date statt eines leeren Strings.
  • Sourcemaps zeigten eine Zeile zu hoch, wenn die erste Zeile eines Templates ein Kommentar war.

Geändert

  • Kompilierfehler zeigen jetzt zwei Zeilen Kontext statt einer. Keine API-Änderung.
3.2.0
9. Januar 2026

Neu

  • Streaming-Partials. {{#defer}} darf jetzt auch in einem eingebundenen Partial stehen, nicht nur auf der obersten Ebene des Einstiegs-Templates. Das war die meistgewünschte Funktion 2025 und brauchte drei Anläufe.
  • RenderOptions.onError — ersetzt einen fehlschlagenden Block durch einen Ersatz-String, statt den Stream zu zerstören.
  • verso explain --tree gibt den Knotenbaum aus.

Behoben

  • Die Auflösung von Partials folgt Symlinks jetzt unter Linux und macOS einheitlich.
  • Der Filter unique behielt das letzte statt des ersten Vorkommens.
3.1.0
22. September 2025

Neu

  • Operator in in Bedingungen: {{#if role in allowedRoles}}.
  • --sourcemap für verso build.
  • Browser-Build als verso/browser veröffentlicht, 7,4 kB mit gzip.

Performance

  • Konstantenfaltung statischer Attributwerte. Templates, die überwiegend aus Markup bestehen, werden 30–40 % kleiner kompiliert.
  • Escaping nutzt jetzt einen einzigen Zeichendurchlauf; eine Tabelle mit 2 000 Zeilen rendert in 1,9 statt 3,1 ms.
3.0.0
6. Mai 2025
Inkompatibel
Inkompatible Änderungen

Das einzige inkompatible Release in der Geschichte des Projekts. Angekündigt im November 2024 und sechs Monate später ausgeliefert, mit einem Codemod in @verso/migrate.

Geändert

  • Leere Arrays sind jetzt falsy. {{#if items}} nimmt bei [] nicht mehr den wahren Zweig. Das war die größte einzelne Quelle von Fehlerberichten in 2.x.
  • Escaping berücksichtigt den Kontext. Werte in den Attributen href, src und style werden für diese Kontexte escaped. Templates, die manuell doppelt escaped haben, zeigen jetzt literale Entities — der Codemod findet sie.
  • compile() ist synchron; die asynchrone Variante ist nach compileFile() umgezogen.
  • Mindestens Node.js 18. Node 16 hat im September 2023 das Ende seiner Lebensdauer erreicht.

Entfernt

  • {{#with}}, abgekündigt seit 2.6. Verwenden Sie {{> partial with value}}.
  • Implizite Suche nach verso.config.js. Geben Sie --config ausdrücklich an.
2.9.4
11. März 2026
Wartung

Behoben

  • Backport des Streaming-Fixes aus 3.2.1.

Die 2.x-Linie bekommt Sicherheits- und Korrektheitsfixes bis 30. Juni 2027. Neue Funktionen werden nicht zurückportiert.

2.6.0
18. Oktober 2024
Abgelöst

Neu

  • Layouts: {{#extends}}, {{#slot}} und {{#fill}}.
  • Befehl verso check.

Abgekündigt

  • {{#with}} — in 3.0 entfernt.
1.0.0
3. Juni 2021
Historisch

Erstes öffentliches Release. Herausgelöst aus einer Static-Site-Pipeline, in der es etwa acht Monate lang eine einzelne 300-Zeilen-Datei war. Interpolation, #if, #each, Partials und sechs Filter.

Regeln

Wie wir versionieren

Patch-Releases beheben Fehler und ändern nie die Ausgabe eines Templates, das bereits korrekt war. Minor-Releases ergänzen Syntax oder API; bestehende Templates rendern weiterhin identisch. Major-Releases dürfen die gerenderte Ausgabe ändern, und das haben wir einmal getan.

Jede Release-Linie bekommt mindestens achtzehn Monate nach dem nächsten Major-Release Sicherheitsfixes. Die Daten werden hier veröffentlicht, wenn ein Major angekündigt wird, nicht erst, wenn der Support endet.

Abkündigungen warnen beim Kompilieren einen vollen Minor-Zyklus lang vor der Entfernung, und die Warnung nennt den Ersatz und die Version, in der die Funktion wegfällt.

Sicherheitsproblem melden →