13. maj, efter mere end et år med udvikling, blev 7.0.0 versionen af den tværgående biblioteksudgivelse lanceret. FTXUI, der er designet til at oprette C++ applikationer med tekstbaseret interface og distribueres under MIT-licensen.
Bibliotekets funktioner:
- funktionel stil, ligesom React JS;
- en simpel og elegant stil (efter forfatterens mening);
- håndtering af tastatur- og musbegivenheder;
- støtte for UTF8 og Unicode;
- støtte for True Color;
- støtte for at ændre cursorens stil;
- støtte for animationer;
- støtte for tegning;
- ingen tredjeparts afhængigheder;
- tværplatform (Linux/MacOS, WebAssembly, Windows).
Ændringer
Dokumentation
- Dokumentationsgenereringen med Doxygen er blevet rettet.
- En tilpasset tema til Doxygen er blevet tilføjet.
- Dokumentationen er blevet opdelt i flere sider.
Kompilering
- Der er tilføjet et script, tools$ amalgamate.py, til at generere den «amalgamerede» kildekode: ftxui.cpp (534 KB), ftxui.hpp (110 KB) og ftxui_all.hpp (643 KB).
- Der er tilføjet støtte til C++20-moduler.
- Støtte til Meson er blevet tilføjet.
- Afhængigheden af pthread er fjernet.
- Støtten til Bazel er blevet rettet.
- Andre forbedringer.
Ændringer i kompatibilitet med tidligere versioner
- Omdøbninger:
- Pixel til `Cell
- Image til Surface
- ScreenInteractive til App
- metode PixelAt til CellAt
For at sikre kompatibilitet er der indført aliaser og headers for ikke at bryde eksisterende kode.
- Brug af std::string_view i stedet for const std::string& hvor det er muligt. Dette sikrer bedre kompatibilitet med strenglitteraler og undgår unødvendige kopier.
Komponenter
- Systemet til signalinterception er blevet forbedret og moderniseret med POSIX sigaction for pålidelig signalmaskering. Der er sikret beskyttelse mod dobbelt terminalgendannelse ved programafslutning ved hjælp af atomisk sporing af den oprindelige tilstand. Der er tilføjet support til flere POSIX-signaler (SIGBUS, SIGSYS som crash-signaler, og SIGQUIT, SIGHUP som signalsignal for udskudt afslutning) og sikkerhedsproblemer ved asynkrone signaler er blevet rettet.
- Problemet med cursorvisning ved brug af tilpasset Renderer i indlejrede containere er blevet rettet.
- Retningen af cursoren i inputfelter og stabiliteten i scrolling er blevet rettet.
- Støtten til ikke-ASCII-tegn i inputtilstand til password er blevet rettet.
- Blinket cursor ved gentegning i App er blevet fjernet.
- Håndtering af input ved hjælp af POSIX pipes
- Giver FTXUI-applikationer mulighed for at læse data fra stdin (ved brug af pipe) og samtidig modtage input fra tastaturet i terminalen.
- Bruges som standard.
- Kan deaktiveres ved at bruge App::HandlePipedInput(false).
- Kun tilgængeligt i Linux og macOS.
- Mange fejl er blevet rettet.
DOM
- Støtte til linjeskift (n) inden for text() og vtext().
- Nu overfører dbox fokus fra de øverste lag til de nederste, hvilket svarer til den visuelle repræsentation.
- Der er tilføjet støtte til kantdekoratører til tabeller. Dette gør det muligt for eksempel at ændre farven på tabelens grænser.
- Fejlrettelse af heltals-overløb i ComputeShrinkHard.
- Specialisering tilføjet i vbox/hbox/dbox for at muliggøre brugen af Element-containeren som input.
- Gridbox har fået rettet tilføjelsen af underliggende elementer.
- Fejlrettelse af gauge-visningen.
- Parametriserede varianter af flex-dekoratorer med parameteren _factor er blevet tilføjet. De muliggør angivelse af brugerdefinerede voks- og skrumpningsfaktorer:
flex_factor(grow, shrink), flex_grow_factor(grow), flex_shrink_factor(shrink), samt varianter for x- og y-akser.
Optimeringer af rendering
- Optimering af cursorbevægelser i Screen::ResetPosition-metoden (uden at rydde skærmen) til et parameteriseret sæt af CSI-kommandoer til at flytte cursoren op (x1B[A) i stedet for at udskrive ét x1B[1A for hver linje. Dette reducerede antallet af escape-tegn pr. frame under genrendering (f.eks. ~197 -> 6 bytes for en skærm med 50 linjer, ~33-foldig reduktion).
- Optimeret Screen::ToString(), Color::Print() og string_width(), hvilket har øget hastigheden for:
- Basisrendering med ~27%.
- Tekstrendering med ~27%.
- Stilrendering med ~38%.
Kilde: linux.org.ru




