11 Punkte von GN⁺ 2025-09-17 | Noch keine Kommentare. | Auf WhatsApp teilen
  • Das Terminal-Aufnahmewerkzeug asciinema CLI 3.0 wurde vollständig in Rust neu geschrieben; hinzu kommen ein Upgrade des Dateiformats und Live-Streaming für Terminal-Sitzungen
  • Durch die Umstellung auf Rust gibt es statische Binärdateien, schnelle Startzeiten und mit der AVT-Integration eine einfachere Umsetzung von Nebenläufigkeit und Systemaufrufen sowie eine Grundlage für neue Funktionen
  • Das neue Format asciicast v3 führt intervall-/delta-basierte Zeitangaben für Ereignisse, eine strukturierte Metadatenhierarchie unter term, ein "x"-Beendigungsereignis und #-Zeilenkommentare ein, was Bearbeitbarkeit und Ausdruckskraft verbessert
  • Live-Terminal-Streaming wird in zwei Modi angeboten: mit lokal integriertem Server und mit entferntem Relay (selbst gehostet/offizieller Server); je nach Netzwerksituation sorgt adaptives Buffering für ein flüssiges Seherlebnis
  • Die Grundphilosophie wurde wieder auf Local-first ausgerichtet: rec verlangt nun zwingend einen Dateinamen, Uploads sind getrennt (upload <Datei>), und eine Eingabeaufforderung zur Serverauswahl verbessert Self-Hosting-Freundlichkeit und den Schutz vor unbeabsichtigtem Datenabfluss

Release 3.0: in Rust neu geschriebene asciinema CLI und die wichtigsten Verbesserungen

  • asciinema CLI 3.0 wurde offiziell veröffentlicht
  • In dieser Version wurde die gesamte Codebasis in Rust neu geschrieben und zugleich das Format der Aufzeichnungsdateien aktualisiert
  • Außerdem wurden verschiedene Funktionen ergänzt oder verbessert, darunter Live-Streaming von Terminal-Sitzungen

Rust-Neuschreibung und allgemeine Verbesserungen

  • Die CLI wurde komplett in Rust neu geschrieben, um Developer Experience und Wartbarkeit zu verbessern; durch die Auslieferung als statische Binärdatei wird der Installationsweg vereinfacht, die Startgeschwindigkeit erhöht und die Erweiterbarkeit verbessert
    • Laut den Erfahrungen des Autors fiel die Wahl auf Rust, weil Systemaufrufe und Nebenläufigkeit damit einfacher zu handhaben sind als in Python; außerdem wurde das asciinema virtual terminal (AVT) in die CLI integriert, wodurch neue Funktionen implementierbar wurden
  • Insgesamt schafft das in den Bereichen Performance, Distribution und Architektur eine Grundlage für künftige Funktionserweiterungen

Dateiformat asciicast v3

  • Das Dateiformat entwickelt sich zu asciicast v3 weiter und behebt mehrere Schwächen, die in v2 sichtbar wurden
  • Die absoluten Zeitstempel aus v2 wurden durch intervall-/delta-basierte Zeitangaben ersetzt, wodurch beim Einfügen oder Löschen von Ereignissen das Problem der globalen Nachjustierung nachfolgender Zeitstempel entfällt
  • Der Header wurde umstrukturiert, sodass terminalbezogene Metadaten unter dem Schlüssel term gruppiert werden; außerdem wird ein "x"-Ereignis zum Speichern des Beendigungsstatus einer Sitzung unterstützt
  • Zeilenkommentare (#) innerhalb der Datei sind nun erlaubt, was Lesbarkeit und Wartbarkeit verbessert
  • Ein Beispiel-Snippet zeigt die Struktur und den Aufbau des Ereignisstroms anschaulich
  • Das neue Format wird bereits von asciinema server und asciinema player unterstützt

Live-Terminal-Streaming

  • Lokaler Modus: Ein integrierter HTTP-Server stellt einen Stream bereit, der im selben Netzwerk angesehen werden kann; dabei werden Daten ausschließlich an die Browser der Zuschauer übertragen – ein Privacy-first-Modus
    • Die CLI enthält den aktuellen asciinema player als Bundle, sodass die Wiedergabe sofort möglich ist; unter Umständen müssen Firewall-Ports geöffnet werden
  • Remote-Modus: Ein asciinema server (offiziell oder selbst gehostet) dient als Relay, um den Stream über eine teilbare URL bereitzustellen
    • Beide Modi können gleichzeitig verwendet werden, sodass sich die Verteilung je nach Situation flexibel gestalten lässt
  • Der Player nutzt adaptives Buffering auf Basis einer Echtzeitmessung der Netzwerklatenz, um geringe Verzögerung und Schutz vor Buffer-Underruns auszubalancieren
  • Der Server unterstützt automatische Aufzeichnung von Streams; auf dem derzeitigen Betriebsserver von asciinema.org ist die Aufzeichnung deaktiviert und es gilt die Richtlinie maximal ein gleichzeitiger Stream
    • Beim Self-Hosting ist die Aufzeichnung standardmäßig aktiviert, und es gibt keine Begrenzung für gleichzeitige Streams

Rückkehr zu Local-first

  • Früher war bei asciinema rec ein Upload-Verhalten in den Standardablauf eingebaut, was das Risiko einer unbewussten Veröffentlichung oder eines Informationsabflusses mit sich brachte
    • Mit 2.4 wurde zur Vorbereitung bereits eine Auswahlabfrage vor dem Upload eingeführt; in 3.0 wurden nun Dateiname als Pflichtangabe, die Entfernung der Upload-Funktion aus rec und die Trennung in den expliziten Befehl upload <Datei> umgesetzt
  • Die Grundphilosophie wurde klar als Local-first definiert, sodass Nutzer Veröffentlichung und Weitergabe bewusst entscheiden; der Ablauf wurde entsprechend neu gestaltet
    • Eine rein lokale Nutzung wird vollständig unterstützt, und veröffentlicht wird nur noch bei ausdrücklichem Bedarf

Verbesserte Self-Hosting-Freundlichkeit

  • Bei der ersten Nutzung von upload, stream oder auth erscheint eine Eingabeaufforderung zur Auswahl der Server-URL; standardmäßig wird asciinema.org vorgeschlagen, die Wahl einer Instanz nach Nutzerabsicht aber gespeichert
    • Bereits zuvor war dies über Konfigurationsdateien oder Umgebungsvariablen möglich, doch in interaktiven Umgebungen (neue VM, Dev-Container usw.) wird die Einrichtung dadurch einfacher
  • Das verbessert nicht nur die Nutzbarkeit beim Self-Hosting, sondern dient auch als zusätzliche Sicherheitsmaßnahme gegen unerwünschte Uploads an externe Ziele

Verfügbarkeit und Nutzung

  • Bis die Paket-Repositories der einzelnen Distributionen aktualisiert sind, kann es einige Zeit dauern
  • In der Zwischenzeit können vorkompilierte Binärdateien für GNU/Linux und macOS aus den GitHub-Releases heruntergeladen oder das Projekt aus dem Quellcode gebaut werden
  • Release Notes und die detaillierte Änderungshistorie sind in den Release Notes und im Dokument CHANGELOG auf GitHub einsehbar

Noch keine Kommentare.

Noch keine Kommentare.