13 maj, efter mer Àn ett Ärs utveckling, slÀpptes version 7.0.0 av det plattformsoberoende biblioteket FTXUI, designat för att skapa C++-applikationer med textgrÀnssnitt och distribueras under MIT-licensen.
Möjligheter i biblioteket:
- funktionell stil, liknande React JS;
- enkel och elegant stil (enligt bibliotekets författare);
- hantering av tangentbords- och muskommandon;
- stöd för UTF8 och Unicode;
- stöd för True Color;
- stöd för att Àndra muspekarlayout;
- stöd för animationer;
- stöd för ritning;
- inga externa beroenden;
- plattformsoberoende (Linux/MacOS, WebAssembly, Windows).
Ăndringar
Dokumentation
- Dokumentationsgenereringen med Doxygen har ÄtgÀrdats.
- Egen tema har lagts till för Doxygen.
- Dokumentationen har delats upp pÄ flera sidor.
Kompilering
- Ett skript tools$ amalgamate.py har lagts till för att generera "amalgamerad" kÀllkod: ftxui.cpp (534 kB), ftxui.hpp (110 kB) och ftxui_all.hpp (643 kB).
- Stöd för C++20-moduler har lagts till.
- Stöd för Meson har lagts till.
- Beroendet av pthread har tagits bort.
- Stödet för Bazel har ÄtgÀrdats.
- Andra förbÀttringar.
KompatibilitetsförÀndringar med tidigare versioner
- Omdöpningar:
- Pixel till `Cell
- Image till Surface
- ScreenInteractive till App
- metoden PixelAt till CellAt
För att sÀkerstÀlla kompatibilitet finns det alias och rubriker för att inte störa existerande kod.
- AnvÀndning av std::string_view istÀllet för const std::string& dÀr det Àr möjligt. Detta ger bÀttre kompatibilitet med strÀngliteraler och undviker onödiga kopior.
Komponenter
- Systemet för signalinfÄngning har förbÀttrats och moderniserats med anvÀndning av POSIX sigaction för pÄlitlig maskering av signaler. Skydd mot dubbelt ÄterstÀllande av terminalen vid programavslut har sÀkerstÀllts genom atomÀr spÄrning av det ursprungliga tillstÄndet. Stöd för ytterligare POSIX-signaler har lagts till (SIGBUS, SIGSYS som fel signa och SIGQUIT, SIGHUP som signaler för fördröjd avslutning) och sÀkerhetsproblem med asynkrona signaler har ÄtgÀrdats.
- Problemet med muspekarsynlighet vid anvÀndning av anpassad Renderer i inbÀddade containrar har ÄtgÀrdats.
- Muspekarpositioneringen i inmatningsfÀlt och stabiliteten vid rullning har ÄtgÀrdats.
- Stödet för icke-ASCII-tecken i lösenordslÀget har ÄtgÀrdats.
- Flimret av muspekaren vid omritning i App har ÄtgÀrdats.
- Inmatningshantering med POSIX pipes
- Möjliggör för FTXUI-appar att lÀsa data frÄn stdin (vid anvÀndning av pipe) och samtidigt ta emot inmatning frÄn tangentbordet i terminalen.
- AnvÀnds som standard.
- Kan stÀngas av med App::HandlePipedInput(false).
- Finns endast pÄ Linux och macOS.
- MÄnga fel har rÀttats.
DOM
- Stöd för radbrytning (n) inom text() och vtext().
- Nu överför dbox fokus frÄn övre skikt till nedre, vilket motsvarar den visuella presentationen.
- Stöd för dekorerande grÀnser av tabeller har lagts till. Detta gör att man till exempel kan Àndra fÀrgen pÄ tabellens grÀnser.
- Fel pÄ heltalsöverflöd i ComputeShrinkHard har ÄtgÀrdats.
- Specialisering har lagts till i vbox/hbox/dbox för att möjliggöra anvÀndning av Element-container som indata.
- Fel vid tillÀgg av barn i gridbox har ÄtgÀrdats.
- Visningen av gauge har ÄtgÀrdats.
- Parametriserade varianter av flex-dekorerare med parametern _factor har lagts till. De gör att man kan ange anpassade tillvÀxt- eller krympningsfaktorer:
flex_factor(grow, shrink), flex_grow_factor(grow), flex_shrink_factor(shrink), samt varianter för x- och y-axlar.
Renderingoptimeringar.
- Optimering av markörens rörelse över rader i Screen::ResetPosition-metoden (utan att rensa skÀrmen) till ett parametriserat kommando CSI för att flytta markören uppÄt (x1B[<n>A) istÀllet för att skriva ut ett x1B[1A för varje rad. Detta minskade antalet escape-tecken per bild under omritning (t.ex. ~197 -> 6 byte för en skÀrm med 50 rader, ~33-faldig minskning).
- Screen::ToString(), Color::Print() och string_width() har optimerats, vilket snabbar upp:
- GrundlÀggande rendering med ~27%.
- Text-rendering med ~27%.
- Stil-rendering med ~38%.
KĂ€lla: linux.org.ru




