Մեկ տարվա մշակումից և 30 փորձնական տարբերակներից հետո ներկայացվեց Win32 API-ի բաց ներդրման կայուն թողարկում՝ Wine 7.0, որն իր մեջ ներառում էր ավելի քան 9100 փոփոխություն: Նոր տարբերակի հիմնական ձեռքբերումները ներառում են Wine մոդուլների մեծամասնության թարգմանությունը PE ձևաչափով, թեմաների աջակցություն, ջոյստիկների և HID ինտերֆեյսով մուտքային սարքերի փաթեթի ընդլայնում և 64-բիթանոց ծրագրեր գործարկելու համար WoW32 ճարտարապետության ներդրում: 64-բիթանոց միջավայր:
Wine-ը հաստատել է Windows-ի համար 5156 (մեկ տարի առաջ 5049) ծրագրերի ամբողջական աշխատանքը, ևս 4312 (մեկ տարի առաջ՝ 4227) ծրագրեր հիանալի աշխատում են լրացուցիչ կարգավորումներով և արտաքին DLL-ներով։ 3813 ծրագրեր (3703 տարի առաջ) ունեն աննշան գործառնական խնդիրներ, որոնք չեն խանգարում հավելվածների հիմնական գործառույթների օգտագործմանը:
Հիմնական նորամուծությունները Wine 7.0-ում.
- Մոդուլներ PE ձևաչափով
- Գրեթե բոլոր DLL-ները փոխակերպվել են՝ ELF-ի փոխարեն օգտագործելու PE (Portable Executable, օգտագործվում է Windows-ում) գործարկվող ֆայլի ձևաչափը: PE-ի օգտագործումը լուծում է պատճենների պաշտպանության տարբեր սխեմաների աջակցման հետ կապված խնդիրները, որոնք ստուգում են համակարգի մոդուլների ինքնությունը սկավառակի վրա և հիշողության մեջ:
- Գործարկվել է PE մոդուլների հետ Unix գրադարանների հետ փոխազդեցության հնարավորությունը՝ օգտագործելով ստանդարտ NT միջուկի համակարգի կանչը, որը թույլ է տալիս թաքցնել մուտքը դեպի Unix կոդ Windows կարգաբերիչներից և վերահսկել շղթայի գրանցումը:
- Ներկառուցված DLL-ներն այժմ բեռնվում են միայն այն դեպքում, եթե սկավառակի վրա կա համապատասխան PE ֆայլ՝ անկախ նրանից՝ դա իրական գրադարան է, թե անավարտ: Այս փոփոխությունը թույլ է տալիս հավելվածին միշտ տեսնել PE ֆայլերի ճիշտ կապը: Այս վարքագիծն անջատելու համար կարող եք օգտագործել WINEBOOTSTRAPMODE միջավայրի փոփոխականը:
- WoW64
- Իրականացվել է WoW64 ճարտարապետությունը (64-բիթանոց Windows-on-Windows), որը թույլ է տալիս գործարկել 32-բիթանոց Windows հավելվածները 64-բիթանոց Unix գործընթացներում: Աջակցությունն իրականացվում է շերտի միացման միջոցով, որը 32-բիթանոց NT համակարգի զանգերը վերածում է 64-բիթանոց զանգերի դեպի NTDLL:
- WoW64 շերտերը պատրաստված են Unix գրադարանների մեծ մասի համար և թույլ են տալիս 32-բիթանոց PE մոդուլներին մուտք գործել 64-բիթանոց Unix գրադարաններ: Երբ բոլոր մոդուլները փոխարկվեն PE ձևաչափի, հնարավոր կլինի գործարկել 32-բիթանոց Windows հավելվածները՝ առանց 32-բիթանոց Unix գրադարաններ տեղադրելու:
- Թեմաներ
- Թեմայի աջակցությունն իրականացվել է: Ներառված են «Light», «Blue» և «Classic Blue» դիզայնի թեմաները, որոնք կարելի է ընտրել WineCfg կոնֆիգուրատորի միջոցով:
- Ավելացվեց բոլոր ինտերֆեյսի վերահսկման արտաքին տեսքը թեմաների միջոցով հարմարեցնելու հնարավորությունը: Տարրերի տեսքը ավտոմատ կերպով թարմացվում է դիզայնի թեման փոխելուց հետո:
- Թեմայի աջակցությունն ավելացվել է բոլոր ներկառուցված Wine հավելվածներին: Հավելվածները հարմարեցվել են բարձր պիքսելային խտությամբ (High DPI) էկրաններին:
- Գրաֆիկական ենթահամակարգ
- Ավելացվել է նոր Win32u գրադարան, որը ներառում է GDI32 և USER32 գրադարանների մասեր՝ կապված գրաֆիկական մշակման և միջուկի մակարդակով պատուհանների կառավարման հետ։ Ապագայում աշխատանքը կսկսվի վարորդի բաղադրիչները, ինչպիսիք են winex32.drv և winemac.drv-ը Win11u տեղափոխելը:
- Vulkan-ի դրայվերն աջակցում է Vulkan գրաֆիկական API-ի 1.2.201 ճշգրտմանը:
- Տրամադրել է աջակցություն Direct2D API-ի միջոցով բացված երկրաչափական օբյեկտների դուրսբերման համար՝ ստուգելու ունակությամբ, թե արդյոք սեղմումը հարվածում է (հիթ-թեստ):
- Direct2D API-ն նախնական աջակցություն է տրամադրում ID2D1Effect միջերեսի օգտագործմամբ կիրառվող տեսողական էֆեկտներին:
- Direct2D API-ն ավելացրել է ID2D1MultiThread ինտերֆեյսի աջակցությունը, որն օգտագործվում է ռեսուրսների բացառիկ հասանելիությունը բազմաշերտ հավելվածներում կազմակերպելու համար:
- WindowsCodecs գրադարանների հավաքածուն ապահովում է WMP (Windows Media Photo) ձևաչափով պատկերների վերծանման և DDS (DirectDraw Surface) ձևաչափով պատկերների կոդավորման աջակցություն: Մենք այլևս չենք աջակցում պատկերների կոդավորումը ICNS ձևաչափով (macOS-ի համար), որը չի աջակցվում Windows-ում:
- Direct3D- ը
- Նոր մատուցման շարժիչը զգալիորեն բարելավվել է՝ Direct3D զանգերը թարգմանելով Vulkan գրաֆիկական API-ին: Շատ իրավիճակներում Direct3D 10-ի և 11-ի աջակցության մակարդակը Vulkan-ի վրա հիմնված շարժիչում հավասարվել է հին OpenGL-ի վրա հիմնված շարժիչին: Vulkan-ի մատուցման շարժիչը միացնելու համար Direct3D ռեգիստրի փոփոխական «renderer» դրեք «vulkan»:
- Direct3D 10-ի և 11-ի բազմաթիվ առանձնահատկություններ ներդրված են, այդ թվում՝ Հետաձգված համատեքստերը, սարքի համատեքստում գործող վիճակի օբյեկտները, բուֆերներում մշտական տեղաշարժերը, անկանոն տեքստուրային դիտումների մաքրումը, տվյալների պատճենումը ռեսուրսների միջև անտիպ ձևաչափերով (DXGI_FORMAT_BC3_TYPELESS, DXGI32_FORMAT) և այլն: .
- Ավելացվել է բազմամոնիտորի կոնֆիգուրացիաների աջակցություն, որը թույլ է տալիս ընտրել մոնիտոր՝ Direct3D հավելվածն ամբողջ էկրանով ցուցադրելու համար:
- DXGI API-ն ապահովում է էկրանի գամմայի ուղղում, որը կարող է օգտագործվել Direct3D 10 և 11 հիմնված հավելվածների կողմից՝ էկրանի պայծառությունը փոխելու համար: Միացված է վիրտուալ շրջանակային բուֆերների հաշվիչների որբերումը (SwapChain):
- Direct3D 12-ն ավելացնում է աջակցություն 1.1 տարբերակի արմատային ստորագրությունների համար:
- Vulkan API-ի միջոցով մատուցման կոդի մեջ հարցումների մշակման արդյունավետությունը բարելավվել է, երբ համակարգն աջակցում է VK_EXT_host_query_reset ընդլայնումը:
- Ավելացվել է GDI-ի միջոցով վիրտուալ շրջանակների բուֆերներ (SwapChain) դուրս բերելու հնարավորություն, եթե OpenGL-ը կամ Vulkan-ը չեն կարող օգտագործվել ցուցադրման համար, օրինակ՝ տարբեր գործընթացներից պատուհան դուրս բերելու ժամանակ, օրինակ՝ CEF (Chromium Embedded Framework) շրջանակի վրա հիմնված ծրագրերում:
- GLSL shader backend-ն օգտագործելիս «ճշգրիտ» մոդիֆիկատորն ապահովված է ստվերային հրահանգների համար:
- DirectDraw API-ն ավելացնում է համակարգային հիշողության մեջ 3D ցուցադրման աջակցություն՝ օգտագործելով ծրագրային սարքեր, ինչպիսիք են «RGB», «MMX» և «Ramp»:
- Direct3D գրաֆիկական քարտերի տվյալների բազայում ավելացվել են AMD Radeon RX 5500M, AMD Radeon RX 6800/6800 XT/6900 XT, AMD Van Gogh, Intel UHD Graphics 630 և NVIDIA GT 1030 քարտերը:
- «UseGLSL» ստեղնը հեռացվել է HKEY_CURRENT_USER\Software\Wine\Direct3D ռեեստրից, որի փոխարեն, սկսած Wine 5.0-ից, պետք է օգտագործել «shader_backend»:
- Direct3D 12-ին աջակցելու համար այժմ ձեզ անհրաժեշտ է vkd3d գրադարանի առնվազն 1.2 տարբերակը:
- D3DX
- D3DX 10-ի ներդրումը բարելավել է տեսողական էֆեկտների շրջանակի աջակցությունը և ավելացրել է Windows Media Photo պատկերի ձևաչափի (JPEG XR) աջակցությունը:
- Ավելացվել են D3DX10-ում տրամադրված հյուսվածքների ստեղծման գործառույթներ, ինչպիսիք են D3DX10CreateTextureFromMemory():
- ID3DX10Sprite և ID3DX10Font ծրագրային ինտերֆեյսները մասամբ ներդրվել են:
- Ձայն և տեսանյութ
- GStreamer հավելումները DirectShow-ի և Media Foundation շրջանակի համար համակցված են մեկ ընդհանուր WineGStreamer backend-ի մեջ, որը պետք է պարզեցնի բովանդակության վերծանման նոր API-ների մշակումը:
- WineGStreamer backend-ի հիման վրա Windows Media օբյեկտները ներդրվում են համաժամանակյա և ասինխրոն ընթերցման համար:
- Մեդիա հիմնադրամի շրջանակի իրականացումն ավելի է կատարելագործվել, ավելացվել է IMFPMediaPlayer-ի ֆունկցիոնալության և նմուշի բաշխիչի աջակցությունը, ինչպես նաև բարելավվել է EVR և SAR մատուցման բուֆերների աջակցությունը:
- Wineqtdecoder գրադարանը, որն ապահովում է QuickTime ձևաչափի ապակոդավորիչ, հեռացվել է (բոլոր կոդեկներն այժմ օգտագործում են GStreamer):
- Մուտքագրեք սարքերը
- HID (Human Interface Devices) արձանագրությունն աջակցող մուտքային սարքերի կույտը զգալիորեն բարելավվել է՝ ապահովելով հնարավորություններ, ինչպիսիք են HID նկարագրիչների վերլուծությունը, HID հաղորդագրությունների մշակումը և մինի-HID դրայվերների տրամադրումը:
- Winebus.sys-ի վարորդի հետնամասերում բարելավվել է սարքի նկարագրությունների թարգմանությունը HID հաղորդագրությունների:
- Ավելացվեց նոր DirectInput հետնամաս՝ HID արձանագրությունն աջակցող joysticks-ի համար: Ջոյստիկներում հետադարձ կապի էֆեկտներ օգտագործելու հնարավորությունը ներդրվել է: Բարելավված joystick կառավարման վահանակ: Օպտիմիզացված փոխազդեցություն XInput համատեղելի սարքերի հետ: WinMM-ում joystick-ի աջակցությունը տեղափոխվել է DInput՝ Linux-ում evdev backend-ը և macOS IOHID-ում IOHID-ն օգտագործելու փոխարեն: Ջոյստիկի հին վարորդը winejoystick.drv հեռացվել է:
- DInput մոդուլում ավելացվել են նոր թեստեր, որոնք հիմնված են վիրտուալ HID սարքերի օգտագործման վրա և ֆիզիկական սարք չեն պահանջում:
- Տեքստ և տառատեսակներ
- DirectWrite-ին ավելացվել է Font Set օբյեկտ:
- RichEdit-ը ճիշտ է իրականացնում TextHost ինտերֆեյսը:
- միջուկ (Windows միջուկի միջերես)
- Wine-ում չճանաչված գործարկվող ֆայլ (օրինակ՝ «wine foo.msi») գործարկելիս այժմ կոչվում է start.exe, որը կանչում է ֆայլի տեսակի հետ կապված մշակողներին:
- Ավելացվել է NtAlertThreadByThreadId-ի և NtWaitForAlertByThreadId-ի համաժամացման մեխանիզմների աջակցությունը, որոնք նման են Linux-ի ֆուտեքսներին:
- Ավելացված է աջակցություն NT կարգաբերման օբյեկտների համար, որոնք օգտագործվում են միջուկի գործառույթները վրիպազերծելու համար:
- Ավելացվել է ռեեստրի դինամիկ բանալիների աջակցություն՝ կատարողականի տվյալները պահպանելու համար:
- C Գործողության ժամանակը
- C-ի գործարկման ժամանակն իրականացնում է մաթեմատիկական ֆունկցիաների ամբողջական փաթեթ, որոնք հիմնականում փոխանցվում են Musl գրադարանից:
- CPU-ի բոլոր հարթակները ճիշտ աջակցություն են տրամադրում լողացող կետի գործառույթներին:
- Ingանցային հատկություններ
- Համատեղելիության բարելավված ռեժիմ Internet Explorer 11-ի համար (IE11), որն այժմ օգտագործվում է լռելյայն HTML փաստաթղթերի մշակման համար:
- mshtml գրադարանն իրականացնում է ES6 JavaScript ռեժիմը (ECMAScript 2015), որն ապահովում է այնպիսի գործառույթների աջակցություն, ինչպիսիք են let արտահայտությունը և Map օբյեկտը:
- MSI փաթեթների տեղադրումը Gecko շարժիչի հավելումներով Wine աշխատանքային գրացուցակում այժմ կատարվում է անհրաժեշտության դեպքում, այլ ոչ թե Wine թարմացման ժամանակ:
- Ավելացվել է DTLS արձանագրության աջակցություն:
- Ներդրվել է NSI (Network Store Interface) ծառայությունը, որը պահպանում և փոխանցում է համակարգչի երթուղման և ցանցային ինտերֆեյսների մասին տեղեկատվություն այլ ծառայություններ:
- WinSock API մշակողները, ինչպիսիք են setsockopt-ը և getsockopt-ը, տեղափոխվել են NTDLL և afd.sys դրայվեր՝ Windows-ի ճարտարապետությանը համապատասխանելու համար:
- Wine-ի սեփական ցանցային տվյալների բազայի ֆայլերը, ինչպիսիք են /etc/protocols-ը և /etc/networks-ը, այժմ տեղադրվում են Wine աշխատանքային գրացուցակում՝ Unix-ի նմանատիպ տվյալների բազա մուտք գործելու փոխարեն:
- Այլընտրանքային հարթակներ
- Ավելացվել է Apple-ի սարքավորումների աջակցություն՝ հիմնված M1 ARM չիպերի վրա (Apple Silicon):
- MacOS-ում BCrypt և Secur32 գործառույթների աջակցությունն այժմ պահանջում է GnuTLS գրադարանի տեղադրում:
- ARM պլատֆորմների համար 32-բիթանոց գործարկվող սարքերն այժմ կառուցված են Thumb-2 ռեժիմում՝ Windows-ի նման: Նման ֆայլերը բեռնելու համար օգտագործվում է նախաբեռնիչ:
- 32-բիթանոց ARM պլատֆորմների համար իրականացվել է բացառությունների լուծարման աջակցություն:
- FreeBSD-ի համար ընդլայնվել է ցածր մակարդակի համակարգի տեղեկատվության համար աջակցվող հարցումների քանակը, ինչպիսիք են հիշողության կարգավիճակը և մարտկոցի լիցքավորման մակարդակը:
- Ներկառուցված հավելվածներ և մշակման գործիքներ
- reg.exe կոմունալն ավելացրել է ռեեստրի 32 և 64 բիթանոց դիտումների աջակցություն: Ավելացվեց ռեեստրի բանալիների պատճենման աջակցություն:
- WineDump կոմունալ ծրագիրը ավելացրել է Windows-ի մետատվյալների հեռացման և CodeView գրառումների մասին մանրամասն տեղեկություններ ցուցադրելու աջակցություն:
- Wine Debugger-ը (winedbg) ապահովում է 32-բիթանոց վրիպազերծիչից 64-բիթանոց գործընթացները վրիպազերծելու հնարավորություն:
- IDL կոմպիլյատորին (widl) ավելացվել է PE ֆայլերում ներկառուցված գրադարաններ բեռնելու հնարավորությունը, տրամադրվել է WinRT-ի հատուկ ատրիբուտների և կառուցվածքների աջակցություն, և իրականացվել է գրադարանի հատուկ հարթակի որոնում:
- Հավաքման համակարգ
- Ճարտարապետության հատուկ դիրեկտորիաներում գրադարաններն այժմ պահվում են անուններով, որոնք արտացոլում են ճարտարապետությունը և գործարկվող տիպը, օրինակ՝ «i386-windows» PE ձևաչափի համար և «x86_64-unix»՝ unix գրադարանների համար, ինչը թույլ է տալիս աջակցություն տարբեր ճարտարապետությունների մեկ Wine-ում: տեղադրում և ապահովում Winelib-ի խաչաձև կոմպիլյացիան:
- PE ֆայլերի վերնագրերում ընտրանք սահմանելու համար, որը վերահսկում է անցումը դեպի բնիկ DLL-ներ օգտագործելու, «--նախընտրել-հայրենի տարբերակ» դրոշը ավելացվել է winebuild-ին (DLL_WINE_PREATTACH մշակումը DllMain-ում դադարեցվել է):
- Ավելացվեց Dwarf կարգաբերման տվյալների ձևաչափի 4-րդ տարբերակի աջակցությունը, որն այժմ օգտագործվում է լռելյայնորեն Wine գրադարաններ կառուցելիս:
- Ավելացվեց «—enable-build-id» կառուցման տարբերակը՝ գործարկվող ֆայլերում եզակի կառուցվածքի նույնացուցիչները պահելու համար:
- Ավելացվեց Clang կոմպիլյատորի MSVC համատեղելիության ռեժիմում օգտագործելու աջակցություն:
- Ժողովածու
- Օգտագործողի կեղևում (Windows Shell) բնորոշ դիրեկտորիաների անունները տրվում են Windows Vista-ից սկսած օգտագործվող սխեմային, այսինքն. «Իմ փաստաթղթերի» փոխարեն այժմ ստեղծվում է «Փաստաթղթեր» գրացուցակը, և տվյալների մեծ մասը պահվում է «AppData» գրացուցակում:
- OpenCL 1.2 ճշգրտման աջակցությունն ավելացվել է OpenCL գրադարանի շերտին:
- WinSpool-ի վարորդը տպելիս աջակցություն է ավելացրել տարբեր էջի չափերի համար:
- Ավելացվել է նախնական աջակցություն MSDASQL-ին, Microsoft OLE DB մատակարարին ODBC վարորդների համար:
- Wine Mono շարժիչը .NET հարթակի ներդրմամբ թարմացվել է՝ թողարկելու 7.0.0:
- Unicode-ի տվյալները թարմացվել են՝ ըստ Unicode 14-ի:
- Աղբյուրի ծառը ներառում է Faudio, GSM, LCMS2, LibJPEG, LibJXR, LibMPG123, LibPng, LibTiff, LibXml2, LibXslt և Zlib գրադարանները, որոնք կազմված են PE ձևաչափով և Unix ձևաչափով տարբերակ չեն պահանջում։ Միևնույն ժամանակ, այս գրադարանները կարող են նաև ներմուծվել համակարգից՝ ներկառուցված PE տարբերակների փոխարեն արտաքին հավաքներ օգտագործելու համար:
Source: opennet.ru