13. mai, üle aasta kestnud arenduse järel, ilmus 7.0.0 platvormidevaheline teek FTXUI, mis on mõeldud C++ rakenduste loomiseks, millel on tekstipõhine liides ja mis on jaotatud MIT litsentsi alusel.
Raamatukogu võimalused:
- funktsionaalne stiil, sarnaselt React JS-iga;
- 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;
- joonistamise toimetamine;
- ilma kolmandate osapoolte sõltuvusteta;
- platvormideülene (Linux/MacOS, WebAssembly, Windows).
Muudatused
Dokumentatsioon
- Dokumentatsiooni genereerimine Doxygeniga on parandatud.
- Lisatud oma teema Doxygenile.
- Dokumentatsiooni jagamine mitmeks leheküljeks.
Kompileerimine
- Lisatud skript tools$ amalgamate.py ‘amalgameeritud’ lähtekoodi genereerimiseks: ftxui.cpp (534 KB), ftxui.hpp (110 KB) ja ftxui_all.hpp (643 KB).
- Lisatud C++20 moodulite tugi.
- Lisatud Mesoni tugi.
- Eemaldatud sõltuvus pthread'ist.
- Parandatud Bazeli tugi.
- Teised täiustused.
Tagasikäigu muudatused
- Nimede muutmine:
- Pixel muutus `Cell'iks
- Image muutus Surface'iks
- ScreenInteractive muutus App'iks
- meetod PixelAt muutus CellAt'iks
Tagamaks ühilduvust, on ette nähtud alias'id ja pealkirjad, et mitte rikkuda olemasolevat koodi.
- Kasutatakse std::string_view'i, kus see on võimalik, selle asemel et const std::string& kasutada. See tagab parema ühilduvuse stringi litteratega ning võimaldab vältida tarbetuid kopeerimisi.
Komponendid
- Signaali püüdmise süsteem on täiustatud ja moderniseeritud, kasutades POSIX sigaction'i signaalide usaldusväärseks peitmiseks. Tagatud on topelt terminali taastamise kaitse programmi väljumisel, kasutades aatomset jälgimist algse oleku osas. Lisatud on täiendavad POSIX signaalide (SIGBUS, SIGSYS kui rikke signaalid, ja SIGQUIT, SIGHUP kui viivitatud lõpetamise signaalid) tugi ja parandatud asünkroonsete signaalide turvaprobleemid.
- Kohandatud Rendereri kasutamisel on parandatud kursori kuvamise probleem sisemistes konteinerites.
- Parandatud kursori positsioneerimine sisestusväljadele ja kerimise stabiilsus.
- Parandatud mitte-ASCII sümbolite tugi paroolisisestusrežiimis.
- Eemaldatud kursori vilkumine App'is ümber joonistamisel.
- Sisendi töötlemine POSIX torude abil
- Lubab FTXUI rakendustel lugeda andmeid stdin'ist (toru kasutamisel) ning samal ajal vastu võtta sisendit klaviatuurilt terminalis.
- Kasutatakse vaikevalikuna.
- Seda saab välja lülitada, kasutades App::HandlePipedInput(false).
- Ainult Linuxis ja macOS'is saadaval.
- Palju vigu on parandatud.
DOM
- Toetab reavahet (n) text() ja vtext() sees.
- Nüüd edastab dbox fookuse ülemistelt kihtidelt alumistele, mis vastab visuaalsele kuvamisele.
- Lisatud tabeli piirdekaunistuste tugi. See võimaldab näiteks tabeli piiride värvi muutmist.
- Parandatud täisarvude ülevoolu viga ComputeShrinkHardis.
- Lisatud spetsialiseerimine vbox/hbox/dbox, et võimaldada Element konteineri kasutamine sisendina.
- Gridboxis on parandatud alamelementide lisamist.
- Parandatud gauge'i kuvamine.
- Lisatud parameetriga variandid flex dekoratoreid parameetriga _factor. Need võimaldavad määrata kasutaja määratud pikendamise või kokkusurumise koefitsiendid:
flex_factor(grow, shrink), flex_grow_factor(grow), flex_shrink_factor(shrink), samuti variandid x ja y telgede jaoks.
Kujutise optimeerimine.
- Kursori liikumise optimeerimine Screen::ResetPosition meetodis (ilma ekraani puhastamiseta) ühe parameetrilise CSI käsusüsteemina, et nihutada kursori üles (x1B[<n>A) asemel, et saata üks x1B[1A iga rea jaoks. See vähendas escape-märkide arvu kaadris ümberjoonistamise ajal (näiteks ~197 -> 6 bitti 50 reaga ekraani jaoks, ~33-kordne vähenemine).
- Optimeeritud on Screen::ToString(), Color::Print() ja string_width(), mis kiirus:
- Põhirenderdus ~27% kiiremini.
- Teksti renderdamine ~27% kiiremini.
- Stiilide renderdamine ~38% kiiremini.
Allikas: linux.org.ru




