Մայիսի 13-ին, ավելի քան մեկ տարվա մշակման հետո, թողարկվեց 7.0.0 հարթակներarası գրադարան FTXUI, նախատեսված C++-ում տեքստային ինտերֆեյսով ծրագրեր ստեղծելու համար և տարածվում է MIT լիցենզիայի ներքո։

Գրարանի հնարավորությունները՝

  • ֆունկտիոնալ ոճ, նման React JS;
  • 简单且优雅的风格(根据库的作者的说法);
  • ալեհունքի և «կ մահափարթագղեր»
  • UTF8-ի և Unicode-ի աջակցում;
  • True Color-ի աջակցում;
  • կուրսորի ոճի փոփոխության աջակցում;
  • անիմացիաների աջակցում;
  • նկարելու աջակցում;
  • ներգրավող կողմերից կախվածության բացակայություն;
  • հարթակներarasıություն (Linux/MacOS, WebAssembly, Windows)։
Որոնումներ

Փաստաթղթեր

  • Պտատրել է Doxygen-ի փաստաթղթավորման ստեղծումը։
  • Ավելացված է Doxygen-ի սեփական թեման։
  • Փաստաթղթավորումը բաժանվել է մի քանի էջերի։

Կոմպիլացիա

  • Ավելացված է tools$ amalgamate.py սկրիպտը «ամալգամացված» աղբյուրի կոդի ստեղծման համար՝ ftxui.cpp (534 Kb), ftxui.hpp (110 Kb) և ftxui_all.hpp (643 Kb):
  • Ավելացված է C++20 մոդուլների աջակցություն։
  • Ավելացված է Meson-ի աջակցություն։
  • Հեռացվեց pthread-ից կախվածությունը։
  • Ամբողջացվել է Bazel-ի աջակցությունը։
  • Այլ բարելավումներ։

Հին տարբերակների հետ համատեղելիության փոփոխություններ

  • Բարձրագառանալը:
    • Pixel -> `Cell
    • Image -> Surface
    • ScreenInteractive -> App
    • метод PixelAt -> CellAt
      Համատեղելիության ապահովման համար նախատեսված են մոլորակներ և գլխավոր ֆայլեր՝ գոյություն ունեցող կոդի աշխատանքը չխախտելու համար։
  • Օգտագործվում է std::string_view, այլ ոչ թե const std::string& այն վայրերում, որտեղ դա հնարավոր է։ Սա ապահովում է առարկայական անդամների ցանկերի լավագույն համատեղելիություն և թույլ է տալիս խուսափել անհրաժեշտ կրկնություններից։

Կոմպոնենտներ

  • Բարելավվել և արդիականացվել է ազդանշանների թափումով համակարգը POSIX sigaction օգտագործելով՝ ազդանշանների հուսալի դիմակավորման համար։ Ապահովվել է կրկնակի վերականգնման պաշտպանության ազդեցությունը հանրագումարում՝ գումարային վրա։ Ավելացված է POSIX հավելյալ ազդանշանների աջակցություն (SIGBUS, SIGSYS, որպես ձախողման ազդանշաններ, և SIGQUIT, SIGHUP, որպես և ժամանակաընթացկային ազդանշաններ) ու վերականգնվել են ասինխրոն ազդանշանների անվտանգության հարցերը։
  • Պտատրել է կուրսորի անհարմարեցումը, երբ օգտագործել է հարմարեցրած Renderer-ի մասով խճճված տարրերով։
  • Պտատրել է կուրսորի դիրքում դնելը վերափոխելիս ու հսկելու կայունությունը։
  • Պտատրել է ոչ ASCII նիշերի աջակցությունը գաղտնիակի մուտքագրման ռեժիմում։
  • Լուծել բրենդի մատավորը նկարելիս նոր աշխատանքի պատճառով App-ում։
  • Անգլո-բարձրությանը մուտքագրումը POSIX pipes կիրառելով.
    • Թույլ է տալիս FTXUI ծրագրերին տվյալները կարդալ stdin (pipe օգտագործելու դեպքում) և միաժամանակ ընդունել մուտքը ստեղնաշարից տերմինալում։
    • Օգտագործվում է սկզբնական ընտրությամբ։
    • Միանշանակ դուրս է գալիս App::HandlePipedInput(false) օգտագործելը։
    • Առկա է միայն Linux և macOS-ում։
  • Լուծվել է բազմաթիվ սխալներ։

DOM

  • text() և vtext()-ի մեջ տողի (n) բնութագրի աջակցում։
  • Հիմա dbox-ն անցնում է վերին շերտերից հատակայինները, ինչը համապատասխանում է տեսողական արտացոլմանը։
  • Ավելացված է պատուհանի սահմանների դեկորատորներ։ Սա թույլ է տալիս, օրինակ, փոխել աղյուսակի սահմանների գույնը։
  • Տրամադրված է ամբողջական թվերի գերազանցման սխալը ComputeShrinkHard-ում:
  • Ավելացվել է մասնագիտություն vbox/hbox/dbox-ում, որպեսզի Element բեռնարկղն օգտագործվի որպես մուտքային տվյալներ:
  • gridbox-ում շտկվել է երեխայական տարրերի ավելացումը:
  • Շտկվել է gauge-ի ցուցադրումը:
  • Ավելացվել են պարամետրային տարբերակներ flex ձևավորման համար _factor պարամետրաներով: Դրանք թույլ են տալիս նշել օգտվողական աստիճանների ձգման կամ սեղմման գործակիցներ:
    flex_factor(grow, shrink), flex_grow_factor(grow), flex_shrink_factor(shrink), ինչպես նաև տարբերակներ x և y առանցքներին:

Նկարագրման օպտիմիզացում:

  • Կուրսորը տողերով տեղափոխելու օպտիմիզացում Screen::ResetPosition մեթոդում (կտորի մաքրման առանց) մեկ պարամետրային CSI հրահանգների հավաքածուով կուրսորը վերև տեղափոխելու համար (x1B[<n>A), փոխարենը յուրաքանչյուր տողի համար մեկ x1B[1A ցուցադրելու: Սա նվազեցրեց մասերի թվաքանակը նկարագրման ընթացքում (օրինակ, ~197 -> 6 բայթ 50 տողի էկրանին, ~33 անգամ նվազեցում):
  • Օպտիմիզացված են Screen::ToString(), Color::Print() և string_width(), ինչի արդյունքում արագացել է:
    • Առկա ձևավորումը ~27%-ով:
    • Տեքստի ձևավորումը ~27%-ով:
    • Մոնտաժման ձևավորումը ~38%-ով:

Ընտանիք: linux.org.ru

Գնել հուսալի հյուրընկալում DDoS պաշտպանությամբ, VPS VDS սերվերներով 🔥 Գնել հուսալի հյուրընկալում DDoS պաշտպանությամբ, VPS VDS սերվերներով | ProHoster