13. mai, pärast üle aasta kestnud arendust, ilmus 7.0.0 platvormidevaheline teek. FTXUI, mis on mõeldud C++ rakenduste loomiseks tekstipõhise liidese jaoks ja mida levitatakse MIT litsentsi alusel.
Teegi võimalused:
- funktsionaalne stiil, sarnane React JS-le;
- lihtne ja elegantne stiil (autori arvates);
- klaviatuuri ja hiire sündmuste töötlemine;
- UTF8 ja Unicode tugi;
- True Color tugi;
- kursori stiili muutmise tugi;
- animatsioonide tugi;
- jätkamise tugi;
- kolmandate osapoolte sõltumatuse puudumine;
- platvormidevaheline (Linux/MacOS, WebAssembly, Windows).
Muutused
Dokumentatsioon
- Dokumentatsiooni genereerimine Doxygeniga on parandatud.
- Doxygenile on lisatud oma teema.
- Dokumentatsioon on jagatud mitmeks leheks.
Kompileerimine
- Lisatud skript tools$ amalgamate.py «amalgameeritud» lähtekoodi genereerimiseks: ftxui.cpp (534 KB), ftxui.hpp (110 KB) ja ftxui_all.hpp (643 KB).
- C++20 moodulite tugi on lisatud.
- Mesoni tugi on lisatud.
- pthread sõltuvus on eemaldatud.
- Bazel toe on parandatud.
- Teised täiustused.
Muudatuste ühilduvus varasemate versioonidega
- Ümbernimetamised:
- Pixel muutus `Cell
- Image muutus Surface
- ScreenInteractive muutus App
- meetod PixelAt muutus CellAt
Ühilduvuse tagamiseks on ette nähtud aliasid ja pealkirjad, et olemasolevat koodi katki ei läheks.
- Kasutatakse std::string_view'i const std::string& asemel, kus see on võimalik. See tagab parema ühilduvuse stringliteraalidega ja aitab vältida tarbetuid koopiaid.
Komponendid
- Signaalide ülekande süsteemi on parandatud ja täiustatud, kasutades POSIX sigactionit usaldusväärseks signaalide maskeerimiseks. Tagatud on kaitse kahekordse terminali taastamise eest programmi väljumisel, kasutades originaalseisundi aatomilist jälgimist. Toetatakse lisaks POSIX signaale (SIGBUS, SIGSYS, kui rikke signaale, ja SIGQUIT, SIGHUP, kui viivitusega lõpetamise signaale) ning on lahendatud asünrooniliste signaalide turvaprobleemid.
- Kohandatud Rendereri kasutamisel sisemise konteinerite puhul on parandatud kursorite kuvamise probleem.
- Sisendväljade kursorite paigutus ja kerimise stabiilsus on parandatud.
- Parandatud on mitte-ASCII märkide toimetamine parooli sisestamise režiimis.
- Kursorite vilkumine on kõrvaldatud App'i taasjoonistamisel.
- Sisendi töötlemine POSIX torude abil.
- See võimaldab FTXUI rakendustel lugeda andmeid stdin'ist (toru kasutamise korral) ning samal ajal võtta sisendit klaviatuurilt terminalis.
- Kasutatakse vaikimisi.
- Võib välja lülitada App::HandlePipedInput(false) abil.
- Asjakohane ainult Linuxis ja macOS-is.
- Palju vigu on parandatud.
DOM
- Toetab reavahetust (n) text() ja vtext() sees.
- Nüüd edastab dbox fookuse ülemistelt kihtidelt alumistele, mis vastab visuaalsele kuvamisele.
- Lisatud on tabeli piiride dekoratsioonide tugi. See võimaldab näiteks muuta tabeli piiride värvi.
- Parandatud täisarvu ületäitumise viga ComputeShrinkHard-is.
- Lisatud spetsialiseerumine vbox/hbox/dbox, et võimaldada Element konteineri kasutamist sisendina.
- gridbox-s on parandatud alamestelementide lisamine.
- Parandatud gauge'i kuvamine.
- Lisatud parameetrilised variandid flex dekoratsioonidele parameetriga _factor. Need võimaldavad määrata kasutaja venitus- või kokkutõmbamistegureid:
flex_factor(grow, shrink), flex_grow_factor(grow), flex_shrink_factor(shrink), samuti variandid x ja y telgede jaoks.
Joonistamise optimeerimine.
- Kursori liikumise optimeerimine ridade vahel meetodis Screen::ResetPosition (ilma ekraani tühjendamiseta) CSI parameetriseeritud käsukomplekti jaoks kursorile üles liikumiseks (x1B[<n>A) asemel, et väljastada üks x1B[1A igale reale. See vähendas vajalike turvasonde sümbolite arvu kaadris taaskuvatamisel (nt ~197 -> 6 baiti 50 reaga ekraani jaoks, ~33-kordne vähendamine).
- Optimeeritud on Screen::ToString(), Color::Print() ja string_width(), mis kiirendas:
- Põhirenderdamine ~27%.
- Teksti renderdamine ~27%.
- Stiilide renderdamine ~38%.
Allikas: linux.org.ru




