FTXUI 7.0.0









Am 13. Mai, nach mehr als einem Jahr Entwicklung, wurde die Version 7.0.0 der plattformĂŒbergreifenden Bibliothek veröffentlicht. FTXUI, die zur Erstellung von C++-Anwendungen mit textbasiertem Interface gedacht ist und unter der MIT-Lizenz verbreitet wird.

Funktionen der Bibliothek:

  • funktionaler Stil, Ă€hnlich wie React JS;
  • einfacher und eleganter Stil (laut dem Autor der Bibliothek);
  • Bearbeitung von Tastatur- und 'Maus'-Ereignissen;
  • UnterstĂŒtzung von UTF8 und Unicode;
  • UnterstĂŒtzung von True Color;
  • UnterstĂŒtzung fĂŒr CursorstilĂ€nderungen;
  • UnterstĂŒtzung von Animationen;
  • UnterstĂŒtzung von Grafikoperationen;
  • keine externen AbhĂ€ngigkeiten;
  • PlattformĂŒbergreifende KompatibilitĂ€t (Linux/MacOS, WebAssembly, Windows).
Änderungen

Dokumentation

  • Die Dokumentationserstellung mit Doxygen wurde verbessert.
  • Ein eigenes Thema fĂŒr Doxygen wurde hinzugefĂŒgt.
  • Die Dokumentation wurde in mehrere Seiten aufgeteilt.

Kompilierung

  • Ein Skript tools$ amalgamate.py zur Generierung des 'amalgamierten' Quellcodes wurde hinzugefĂŒgt: ftxui.cpp (534 KB), ftxui.hpp (110 KB) und ftxui_all.hpp (643 KB).
  • UnterstĂŒtzung fĂŒr C++20-Module hinzugefĂŒgt.
  • UnterstĂŒtzung fĂŒr Meson hinzugefĂŒgt.
  • Die AbhĂ€ngigkeit von pthread wurde entfernt.
  • Die UnterstĂŒtzung fĂŒr Bazel wurde verbessert.
  • Weitere Verbesserungen.

Änderungen zur KompatibilitĂ€t mit vorherigen Versionen

  • Umbenennungen:
    • Pixel in `Cell
    • Image in Surface
    • ScreenInteractive in App
    • methode PixelAt in CellAt
      Um die KompatibilitÀt zu gewÀhrleisten, wurden Aliasnamen und Header bereitgestellt, um bestehende Codes zu keinem Zeitpunkt zu beeintrÀchtigen.
  • Verwendung von std::string_view anstelle von const std::string& wo immer möglich. Dies sorgt fĂŒr eine bessere KompatibilitĂ€t mit String-Literalen und vermeidet unnötige Kopien.

Komponenten

  • Das System zur Signalerfassung wurde verbessert und modernisiert, indem POSIX sigaction fĂŒr eine zuverlĂ€ssige Signalmaskierung verwendet wird. Der Schutz gegen doppelte Terminalwiederherstellung beim Beenden des Programms wurde durch atomar verfolgte ursprĂŒngliche ZustĂ€nde sichergestellt. UnterstĂŒtzung fĂŒr zusĂ€tzliche POSIX-Signale (SIGBUS, SIGSYS als Fehler-Signale und SIGQUIT, SIGHUP als Signale fĂŒr verzögertes Beenden) wurde hinzugefĂŒgt, und es wurden Sicherheitsprobleme im Zusammenhang mit asynchronen Signalen behoben.
  • Ein Problem mit der Cursoranzeige bei der Verwendung des anpassbaren Renderers in verschachtelten Containern wurde behoben.
  • Das Cursor-Positioning in Eingabefeldern und die ScrollstabilitĂ€t wurden korrigiert.
  • Die UnterstĂŒtzung fĂŒr nicht-ASCII-Zeichen im Passwort-Eingabemodus wurde behoben.
  • Das Flimmern des Cursors bei der Neuzeichnung in der App wurde behoben.
  • Eingabeverarbeitung unter Verwendung von POSIX-Pipes.
    • Ermöglicht FTXUI-Anwendungen, Daten aus stdin (bei Verwendung von Pipes) zu lesen und gleichzeitig Eingaben von der Tastatur im Terminal zu akzeptieren.
    • Wird standardmĂ€ĂŸig verwendet.
    • Kann durch die Verwendung von App::HandlePipedInput(false) deaktiviert werden.
    • Nur unter Linux und macOS verfĂŒgbar.
  • Viele Fehler wurden behoben.

DOM

  • UnterstĂŒtzung fĂŒr Zeilenumbruch (n) innerhalb von text() und vtext().
  • Jetzt ĂŒbertrĂ€gt dbox den Fokus von den oberen Schichten auf die unteren, was der visuellen Darstellung entspricht.
  • UnterstĂŒtzung fĂŒr Tabellenrand-Dekoratoren hinzugefĂŒgt. Dies ermöglicht zum Beispiel, die Farbe der TabellenrĂ€nder zu Ă€ndern.
  • Fehler bei der GanzzahlĂŒberlauf in ComputeShrinkHard behoben.
  • Spezialisierung in vbox/hbox/dbox hinzugefĂŒgt, um einen Elementcontainer als Eingabe verwenden zu können.
  • HinzugefĂŒgt, um Kinder in gridbox korrekt hinzuzufĂŒgen.
  • Darstellung des gauge korrigiert.
  • Parametrisierte Varianten von flex-Dekoratoren mit dem Parameter _factor hinzugefĂŒgt. Diese ermöglichen die Angabe benutzerdefinierter Dehnungs- oder Schrumpfungsfaktoren:
    flex_factor(grow, shrink), flex_grow_factor(grow), flex_shrink_factor(shrink) sowie Varianten fĂŒr die Achsen x und y.

Optimierungen der Darstellung

  • Optimierung der Cursorbewegung in der Methode Screen::ResetPosition (ohne Bildschirmreinigung) in ein parametrisiertes CSI-Befehlsset zur Cursorbewegung nach oben (x1B[A) anstelle von x1B[1A fĂŒr jede Zeile. Dies reduzierte die Anzahl der Escape-Zeichen pro Frame wĂ€hrend der Neuzeichnung (z. B. von ~197 auf 6 Bytes fĂŒr einen Bildschirm mit 50 Zeilen, eine Reduzierung um etwa das 33-Fache).
  • Optimierungen an Screen::ToString(), Color::Print() und string_width(), die folgendes beschleunigten:
    • Basis-Rendering um ~27%.
    • Text-Rendering um ~27%.
    • Stil-Rendering um ~38%.

Quelle: linux.org.ru

ZuverlĂ€ssiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen đŸ”„ ZuverlĂ€ssiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster