Po septynių mėnesių kūrimo buvo paskelbtas kelių platformų įrankių rinkinys, skirtas grafinei vartotojo sąsajai sukurti - GTK 4.14.0. GTK 4 kuriamas kaip naujo kūrimo proceso dalis, kuria programų kūrėjams bandoma kelerius metus suteikti stabilią ir palaikomą API, kurią būtų galima naudoti be baimės, kad dėl API pakeitimų kitame GTK teks kas šešis mėnesius perrašyti programas. šaka.
Ateityje planuojama suformuoti eksperimentinę šaką 4.90, kuri kurs funkcionalumą būsimam GTK5 leidimui. GTK5 atšaka apims pakeitimus, kurie pažeidžia suderinamumą API lygiu, pavyzdžiui, susijusių su kai kurių valdiklių, pvz., senojo failų pasirinkimo dialogo, panaikinimu. Taip pat svarstoma galimybė nutraukti X5 protokolo palaikymą GTK11 šakoje ir palikti galimybę dirbti tik naudojant Wayland protokolą.
Tarp žymiausių GTK 4.14 patobulinimų yra šie:
- Jame yra nauji suvienodinti atvaizdavimo varikliai „ngl“ ir „vulkan“, naudojantys OpenGL (GL 3.3+ ir GLES 3.0+) ir „Vulkan“ grafikos API. Abu varikliai yra pagrįsti Vulkan API, tačiau „ngl“ variklis turi atskirą „OpenGL“ abstrakcijos sluoksnį, kuris veikia „Vulkan“ viršuje, atsižvelgiant į „OpenGL“ ir „Vulkan“ skirtumus. Šis metodas leido naudoti bendrą infrastruktūrą abiejuose varikliuose, kad būtų galima apdoroti scenos diagramą, transformacijas, talpyklos tekstūras ir glifus. Suvienodinimas taip pat žymiai supaprastino abiejų variklių kodų bazės priežiūrą ir jų atnaujinimą bei sinchronizavimą.
Skirtingai nuo senojo gl variklio, kuris naudojo atskirą paprastą atspalvį kiekvienam atvaizdavimo mazgo tipui ir periodiškai iš naujo rūšiuodavo duomenis neekrano atvaizdavimo metu, naujieji varikliai vietoj atvaizdavimo už ekrano naudoja sudėtingą atspalvį (ubershader), kuris interpretuoja duomenis iš buferio. . Tarp išskirtinių naujųjų variklių savybių minimas kontūrų išlyginimas (leidžia išsaugoti smulkias detales ir pasiekti sklandesnius kontūrus), savavališkų gradientų formavimas (galima naudoti bet kokį spalvų skaičių ir anti-aliasing) ir trupmeninį mastelio keitimą.
- Naujasis „ngl“ atvaizdavimo variklis įjungtas pagal numatytuosius nustatymus, o Vulkan grafikos API palaikymas taip pat įjungtas pagal numatytuosius nustatymus. Kuriant pagal numatytąją konfigūraciją, dabar reikalingas Vulkan 1.3 palaikymas.
- GSK biblioteka (GTK scenos rinkinys), suteikianti galimybę pateikti grafines scenas per OpenGL ir Vulkan, padarė reikšmingų patobulinimų, susijusių su šriftų atvaizdavimu, užuominomis ir ne sveikųjų skaičių mastelio reikšmių naudojimu rodant tekstą. Kai užsimenama (išlyginant glifo kontūrą rastruojant, kad būtų padidintas aiškumas mažos raiškos ekranuose), įgyvendinamas glifų subpikselių padėties nustatymas. Šrifto atvaizdavimo kokybė pagerėjo esant ne sveikųjų skaičių skalės reikšmėms (pavyzdžiui, 125%). Įdiegtas elementų iškeldinimas iš glifų ir tekstūrų talpyklų. Patobulintas glifų talpyklos efektyvumas.
- Pereinant nuo Kairo bibliotekos naudojimo GPU atvaizdavimui, buvo pridėtas „Paths“ palaikymas, skirtas piešti figūras ir sritis naudojant linijų seką arba kubines ir kvadratines Bezier kreives. Norint piešti su takais, yra GskPath objektas, apibrėžiantis linijų arba kreivių parametrus, taip pat GskPathBuilder objektai kreivėms kurti, GskPathPoint taškui apibrėžti figūroje ir GskPathMeasure matavimams, pvz., kelio ilgiui.

- GDK biblioteka, kuri suteikia sluoksnį tarp GTK ir grafikos posistemio, išplėtė DMA-BUF mechanizmo palaikymą, kuris leidžia naudoti branduolio lygio buferius, adresuotus naudojant deskriptorių, o tai leidžia, o ne kopijuoti pikselių duomenis, perkelti juos tarp branduolio posistemių per deskriptorių. GTK kontekste DMA-BUF gali būti naudojamas siekiant sumažinti pikselių duomenų kopijavimą komponavimo metu ir dirbant su vaizdo įrašu (pavyzdžiui, vaizdo įrašą galima įrašyti aparatūros dekoderiu dmabuf, tada prijungti prie Wayland paviršiaus ir perduoti į UI komponavimo tvarkyklė ir išvesties komponavimas į ekraną be nereikalingų duomenų kopijavimo operacijų).
Buvo pridėtas GtkGraphicsOffload valdiklis, skirtas tiesiogiai siųsti turinį, pvz., vaizdo įrašą, į sudėtinę tvarkyklę (aplenkiant GSK atvaizdavimą), o GdkDmabufTextureBuilder klasė buvo pridėta, kad būtų galima sukurti GdkTexture objektus iš dmabuf, kad būtų sukurtas turinys, skirtas tiesioginiam perkėlimui. Pipewire, video4linux arba gstreamer gali būti naudojami kaip dmabuf šaltinis. Palaikomi dmabuf NV16, NV61, NV24, NV42 ir YUV formatai.
- Pridėta GtkPrintDialog klasė, skirta generuoti spausdinimo dialogus ir siūlyti asinchroninę API, skirtą naudoti vietoj GtkPrintOperation.
- „GtkEmojiChooser“ valdiklis atnaujino jaustukų duomenis ir pridėjo galimybę ieškoti skirtingomis kalbomis, atsižvelgiant į skirtingas lokales.
- „GtkEntry“ valdiklis pagerino vartotojo atliktų pakeitimų stebėjimą (siekiant įgyvendinti anuliavimo operaciją).
- „GtkFileChooser“ valdiklyje paspartintas failų pasirinkimo dialogo lango atidarymas.
- „GtkShortcutsWindow“ klasė, kurioje rodomi sparčiųjų klavišų ir ekrano gestų patarimai, pritaikyta mažiems ekranams.
- Patikrinimo režimas (GTK inspektorius) pateikia informaciją apie OpenGL, požeminius paviršius ir FPS.
- Prie gtk4-rendernode-tool įrankio pridėta komanda "palyginti".
- Darbui su keliais buvo pasiūlyta nauja priemonė gtk4-path-tool.
- Automatinio įrašymo palaikymas buvo pridėtas prie gtk4-node-editor paslaugų programos.
- Ištaisyta gedimas, įvykęs naudojant Wayland ne GNOME Shell aplinkoje.
- Pridėtos naujos funkcijos žmonėms su negalia, susijusios su sudėtingo formatuoto teksto rodymu, WebKitGTK veikimu ir pranešimų rodymu. Pagerintas ARIA specifikacijų palaikymas. Pridėta GtkAccessibleText sąsaja, skirta trečiųjų šalių teksto valdikliuose naudoti pritaikymo neįgaliesiems funkcijas. GtkText sąsaja papildė AT-SPI protokolo palaikymą sąveikaujant su ekrano skaitytuvais.
- Pridėta galimybė atvaizduoti naudojant GPU, naudojant WGL API platformoje. Windows.
- Sumažėjo atminties sąnaudos įkeliant CSS pagrįstas temas.
Šaltinis: opennet.ru

