Մեկ տարվա մշակումից և 26 փորձնական տարբերակներից հետո ներկայացվեց Win32 API-ի բաց ներդրման կայուն թողարկում՝ Wine 9.0, որն իր մեջ ներառում էր ավելի քան 7000 փոփոխություն: Նոր տարբերակի հիմնական ձեռքբերումները ներառում են WoW64 ճարտարապետության ներդրումը 32-բիթանոց միջավայրում 64-բիթանոց ծրագրերի գործարկման համար, վարորդների ինտեգրում Wayland-ին աջակցելու համար, ARM64 ճարտարապետության աջակցություն, DirectMusic API-ի ներդրում և խելացի քարտերի աջակցություն:
Հաստատվել է, որ Wine-ում 5336 (5266 մեկ տարի առաջ, 5156 երկու տարի առաջ, 5049 երեք տարի առաջ) ծրագրերի ճիշտ աշխատանքն է հաստատվել։ WindowsԵվս 4397 ծրագիր (4370 մեկ տարի առաջ, 4312 երկու տարի առաջ, 4227 երեք տարի առաջ) լավ են աշխատում լրացուցիչ կարգավորումներով և արտաքին DLL ֆայլերով: 3943 ծրագիր (3888 մեկ տարի առաջ, 3813 երկու տարի առաջ, 3703 երեք տարի առաջ) ունեն աննշան խնդիրներ, որոնք չեն խանգարում ծրագրերի հիմնական ֆունկցիոնալությանը:
Հիմնական նորամուծությունները Wine 9.0-ում.
- Ավելացվել է winewayland.drv դրայվերը, որը թույլ է տալիս Wine-ին օգտագործել Wayland-ի վրա հիմնված միջավայրերում՝ առանց XWayland կամ X11 բաղադրիչների օգտագործման: Այս մշակումը նպատակ ունի ապահովել մաքուր Wayland միջավայր՝ գործարկման աջակցությամբ: Windows- ծրագրեր, որոնք չեն պահանջում X11-ին առնչվող փաթեթների տեղադրում, ինչը թույլ է տալիս խաղերում ապահովել ավելի բարձր արդյունավետություն և արձագանքման արագություն՝ վերացնելով ավելորդ շերտերը: Wine-ի համար մաքուր Wayland միջավայրի օգտագործումը նաև վերացնում է X11-ին բնորոշ անվտանգության խնդիրները (օրինակ՝ անվստահելի X11 խաղերը կարող են լրտեսել այլ ծրագրերին, քանի որ X11 արձանագրությունը թույլ է տալիս մուտք գործել բոլոր մուտքային իրադարձություններին և կատարել ստեղնաշարի փոխարինում):
Դրայվերը նշված է որպես փորձարարական և մշակման փուլում, բայց այնուամենայնիվ, այն արդեն իսկ աջակցում է բազմաթիվ գործառույթների, ինչպիսիք են պատուհանների կառավարումը, բազմաթիվ մոնիտորների հետ աշխատանքը, բարձր DPI էկրանների վրա ելքային մասշտաբավորման աջակցությունը, մկնիկի շարժումը հետևելիս հարաբերական կոորդինատների հետ աշխատանքը և Vulkan գրաֆիկական API-ի աջակցությունը: Ըստ լռելյայնի, դրայվերը ակտիվ չէ, և այն միացնելու համար դուք պետք է ավելացնեք «wayland» պարամետրը «HKCU\Software\Wine\Drivers» գրանցամատյանի պարամետրին և համոզվեք, որ DISPLAY միջավայրի փոփոխականը սահմանված չէ. wine reg.exe add HKCU\\Software\\Wine\\Drivers /v Graphics /d x11,wayland
- Բոլոր մոդուլները վերածվել են NT համակարգային կանչերի ինտերֆեյսի՝ PE և Unix շերտերի միջև ուղիղ զանգեր կատարելու փոխարեն, ինչը նշանավորում է բոլոր DLL գրադարանները PE (Portable Executable) կատարվող ֆայլի ձևաչափն օգտագործելու համար երկար տարիների աշխատանքի ավարտը։
- WoW64 շերտի (64-բիթ) մշակումը շարունակվեց Windows-վրա-Windows), որը թույլ է տալիս գործարկել 32-բիթանոց Windows- 64-բիթանոց Unix համակարգերի վրա կիրառություններ: Unix գրադարաններին մուտք գործող բոլոր մոդուլները օգտագործում են WoW64 համակարգային կանչերի թարգմանիչներ (շնորհակալություն), որոնք թույլ են տալիս PE ձևաչափով 32-բիթանոց մոդուլներին մուտք գործել 64-բիթանոց Unix գրադարաններ:
Նոր WoW64 գործարկման ռեժիմը բարելավվել է՝ թույլ տալով 32-բիթային կոդը գործարկել 64-բիթային պրոցեսում (հին WoW64 ռեժիմում 32-բիթային ծրագրերը գործարկվում էին 32-բիթային Unix պրոցեսներում): Ավելացվել է նոր WoW64 ռեժիմի օգտագործման աջակցությունը հարթակում: macOSՔանի որ նոր WoW64 ռեժիմն ունի որոշ աննշան սխալներ, ինչպիսիք են 16-բիթային աջակցության բացակայությունը և OpenGL-ի աշխատանքի նվազումը՝ ARB_buffer_storage ընդլայնման աջակցության բացակայության պատճառով, այն դեռևս միացված չէ լռելյայնորեն և պահանջում է կառուցել կարգավորման սկրիպտում «--enable-archs=i386,x86_64» տարբերակով։
- Ավելացվել է առկա կատարվող ֆայլերը կատարելու հնարավորությունը Windows ARM64 ճարտարապետությամբ համակարգերի վրա։ Wine-ը այժմ կարող է կառուցվել ARM64EC (ARM64 Emulation Compatible) ABI-ի համար, և կարող են բեռնվել ARM64EC մոդուլներ։ Այս մոդուլները օգտագործվում են x86_64 ճարտարապետության համար սկզբնապես գրված ծրագրերի ARM64 համակարգեր տեղափոխումը պարզեցնելու համար՝ հնարավորություն տալով կատարել առանձին x86_64 կոդի մոդուլներ ARM64 միջավայրում՝ օգտագործելով էմուլյատոր։ Ավելացվել է ARM64X PE ֆայլի ձևաչափի աջակցություն, որը թույլ է տալիս բեռնել մեկ կատարվող ֆայլ և՛ x64/Arm64EC, և՛ ARM64 գործընթացներում։ 32-բիթ x86 համակարգերի էմուլյացիայի համար ինտերֆեյս է ներդրվել, բայց էմուլյատորի գրադարանը դեռևս ներառված չէ Wine-ի հիմնական բաշխման մեջ (արտաքին FEX էմուլյատորը կարող է օգտագործվել x86 կոդը ARM64 միջավայրում գործարկելու համար)։
- Գրաֆիկական ենթահամակարգ
- PostScript դրայվերը վերաձևավորվել է՝ spool ֆայլերը ձևաչափով աջակցելու համար։ Windows, որոնք պահպանում են տպագրության աշխատանքների մասին տվյալներ: Unix միջավայրից դրայվերին ուղիղ զանգերը բացառվում են:
- Մութ ռեժիմի աջակցությունն ավելացվել է WinRT թեմաներին: WineCfg-ին ավելացվել է կարգավորում՝ մուգ ինտերֆեյսի դիզայնը միացնելու համար:
- Vulkan գրաֆիկական API-ի դրայվերն ավելացրել է աջակցություն Vulkan 1.3.272 ճշգրտման համար (8.0-ն աջակցվում էր Wine 1.3.237-ում):
- GdiPlus գրադարանի գործառույթները օպտիմիզացվել են՝ թույլ տալով բարձրացնել գրաֆիկայի կատարողականությունը:
- Direct3D- ը
- Բազմաթելային հրամանների հոսքի վերլուծությունը կասեցվում է, երբ վերամշակման ենթակա հրամաններ չկան, ինչը թույլ է տալիս նվազեցնել էներգիայի սպառումը մինչև մեկ շղթայական մշակման մակարդակ, երբ այն ծրագրերը, որոնք չեն զբաղեցնում հրամանի հոսքի ողջ թողունակությունը:
- Direct3D 10-ը ներառում է լրացուցիչ էֆեկտների աջակցություն:
- Կատարել է կատարողականի օպտիմիզացում WineD3D կոդի և հետին մասի համար՝ օգտագործելով Vulkan գրաֆիկական API:
- Vulkan API-ի վրա հիմնված վերարտադրման կոդը այժմ ստուգում է, թե ինչ հնարավորություններ է աջակցում սարքը և դիմումին հայտնում, թե Direct3D ֆունկցիոնալության ինչ մակարդակ կա:
- Իրականացվել են D3DXFillTextureTX և D3DXFillCubeTextureTX գործառույթները:
- Դասական OpenGL ARB shader backend-ն ավելացրել է ստվերներ սահմանելու աջակցություն՝ օգտագործելով ARB_fragment_program_shadow ընդլայնումը:
- D3DXLoadMeshHierarchyFromX-ը և նմանատիպ գործառույթներն ավելացրել են աջակցություն ID3DXLoadUserData ինտերֆեյսի միջոցով օգտագործողի տվյալները բեռնելու համար:
- Ձայն և տեսանյութ
- Առաջարկվել է DirectMusic API-ի նախնական ներդրում: Ավելացվեց հավաքածուների, գործիքների և ձայնային նմուշների աջակցություն SoundFont ձևաչափով: Ավելացվել է դոպլեր էֆեկտի աջակցություն: Փորձարկումներ են իրականացվել՝ ստուգելու ճիշտ իրականացումը dmime sequencer-ը և dmsynth MIDI սինթեզատորը աշխատելիս:
- FluidSynth գրադարանը ներկառուցված է DirectMusic API-ի մեջ օգտագործման համար։
- Իրականացվել է ձայնային տառատեսակների բեռնման աջակցություն (SoundFont - MIDI ֆայլեր նվագարկելու համար օգտագործվող նմուշային սինթեզի ձևաչափեր) DLS1 և DLS2 ձևաչափերում, ինչպես նաև օգտագործվող SF2 ձևաչափում։ Linux.
- Ավելացվել է MIDI բովանդակություն նվագարկելու հնարավորություն՝ օգտագործելով dmsynth գրադարանը, FluidSynth ծրագրային սինթեզատորը և DirectSound API-ը՝ աուդիո ելքի համար։
- Ավելացվել է Indeo IV50 տեսակոդեկի ձևաչափով տեսանյութի համար նախատեսված ապակոդավորիչ։
- Ուղղորդված ցուցադրություն
- Իրականացվել է DMO (DirectX Media Object) բաղադրիչը WMV ձևաչափի դեկոդերով (Windows Մեդիա տեսանյութ):
- Ավելացվեց աուդիո գրավման զտիչ (DirectShow Audio Capture Filter):
- Աուդիո հոսքերից բացի, DirectShow MPEG-1 հոսքի բաժանիչը այժմ աջակցում է տեսանյութերի և ծառայությունների հոսքերի:
- Տեղադրվել է MPEG-1 ձևաչափով տեսանյութի վերծանման զտիչ (DirectShow MPEG-1 Video Decoder):
- Մուտքագրեք սարքերը
- DirectInput-ը աջակցում է գործողությունների քարտեզագրմանը, որը թույլ է տալիս խաղային կառավարիչի կոճակները կապել խաղերում որոշակի գործողությունների հետ։
- Սեղանի ինտեգրում
- Կապերը արտահանվել են հիմնական օգտատերերի միջավայր, ինչը թույլ է տալիս Wine-ի տակ աշխատող հավելվածներին զանգահարել որպես պրոտոկոլների մշակիչներ URL բացելիս (օրինակ՝ գործարկել spotify.exe-ը, երբ բացում է հղումներ, ինչպիսիք են «spotify:user:spotify:playlist:848218482355482821»):
- Իրականացրել է EDID (Extended Display Identification Data) տվյալների արդյունահանում միացված մոնիտորի պարամետրերի մասին տեղեկություններով, ինչպիսիք են սարքի անվանումը և մոդելը:
- Հնարավոր է փակել աշխատասեղանի պատուհանը, որը տեղակայված է լիաէկրան ռեժիմում՝ օգտագործելով «Սկսել» ցանկի «Ելք աշխատասեղան» կոճակը:
- Միջազգայնացում
- IME-ների (մուտքագրման մեթոդների խմբագրիչներ) աջակցությունը ընդլայնվել է: Աշխատանքներ են տարվել բնօրինակի հետ համատեղելիությունն ապահովելու համար: Windows IME իրականացումներ և բարելավված ինտեգրացիա Linux ԵՍ ԻՆՁ
- Տեղական տվյալների բազաների ստեղծումը locale.nls ձևաչափով Unicode CLDR (Unicode Common Locale Data Repository) տարբերակի 44-րդ տվյալների բազայից տրամադրվել է լրացուցիչ տեղայնացումներ bew-ID, blo-BJ, csw-CA, ie-EE, mic-CA: , prg-PL-ն ավելացվել է , skr-PK, tyv-RU, vmw-MZ, xnr-IN և za-CN:
- Ինտերֆեյսը թարգմանվել է վրացերեն: Ամբողջական թարգմանությունները տրամադրվում են 16 լեզուների համար, իսկ մասնակի թարգմանությունները՝ 31 լեզուների համար։
- Յունիկոդի նիշերի աղյուսակները թարմացվել են 15.1.0 ստանդարտ տարբերակով: Ժամային գոտու տվյալների բազան թարմացվել է:
- Միջուկ (միջուկի ինտերֆեյսներ Windows)
- Ինչպես թողարկված տարբերակը Windows սահմանված է լռելյայնորեն Windows 10.
- PE ձևաչափով գործարկվող ֆայլերի համար իրականացվում է հասցեների տարածքի պատահականացման (ASLR) աջակցություն, սակայն հիշողության մեջ ծածկագիրը բեռնելու հասցեները դեռ ամբողջությամբ պատահականացված չեն:
- Իրականացվել է թույլ մասնատված կույտի (LFH, Low Fragmentation Heap) աջակցություն, ինչը մեծացրել է հիշողության բաշխման գործողությունների կատարումը:
- Վիրտուալ հիշողության բաշխման մեխանիզմին ավելացվել է հիշողության ամրագրման աջակցություն (տեղապահ)՝ թույլ տալով հավելվածին վերապահել վիրտուալ հիշողության որոշակի տարածք հետագա օգտագործման համար:
- Գործարկվող ֆայլերի և գրադարանների 64-բիթանոց բեռնիչները (բեռնիչ և նախաբեռնիչ) կազմվում են PIE (Position-Independent Executables) ձևաչափով՝ 32-բիթանոց հասցեների տարածքի մի մասն ազատելու համար:
- NT համակարգային զանգերի և օգտատիրոջ հետկանչերի համար այժմ ապահովված է ճիշտ կույտի բացում։
- Ingանցային հատկություններ
- MSHTML շարժիչն աջակցում է «Cycle Collection» աղբահանության մեխանիզմին:
- MSHTML-ն ավելացրել է աջակցություն XMLHttpRequest հարցումների համաժամանակյա մշակման համար:
- jscript.dll-ն ավելացնում է WeakMap օբյեկտի աջակցությունը, որպեսզի աշխատի բանալի/արժեք զույգերի հավաքածուի հետ, որտեղ բանալին օբյեկտ է, որը կարող է կամայական արժեք ունենալ: Իրականացրել է WeakMap.get(), WeakMap.delete(), WeakMap.clear() և WeakMap.has() մեթոդները:
- Gecko դիտարկիչի շարժիչը թարմացվել է մինչև 2.47.4 տարբերակը։
- Իրականացվել է ցանցային ինտերֆեյսի վիճակի փոփոխությունների մասին ծանուցումների աջակցություն:
- Գաղտնագրություն և անվտանգություն
- Սմարթ քարտերի աջակցությունն ավելացվել է Winscard.dll գրադարանին, որն իրականացվել է PCSClite համակարգի գրադարանի միջոցով:
- BCrypt-ն աջակցություն է ավելացրել Diffie-Hellman բանալիների փոխանակման արձանագրությանը:
- Negotiate փաթեթը ներդրվել է, որը տրամադրում է անվտանգության աջակցության մատակարարի ինտերֆեյսի (SSPI) օգտագործման շերտ՝ անվտանգության աջակցության մատակարարներին (SSP) մուտք գործելու համար։
- Ներկառուցված հավելվածներ
- Wine Debugger-ը (winedbg) օգտագործում է Zydis գրադարանը՝ X86 մեքենայի հրահանգները ապամոնտաժելու համար:
- WineCfg ինտերֆեյսը թարմացվել է՝ 64-բիթանոց հարթակների վրա հին տարբերակները աջակցելու համար։ Windows (XP-ից առաջ), որը թույլ է տալիս գործարկել հնացած ծրագրերը՝ օգտագործելով WoW64 ռեժիմը։
- Բոլոր ներկառուցված գրաֆիկական հավելվածներն այժմ ցուցադրում են սխալի մասին տեղեկությունները առանձին երկխոսության մեջ՝ դրանք վահանակում ցուցադրելու փոխարեն:
- Systeminfo ծրագիրը հնարավորություն է տալիս ցուցադրել WMI տվյալների բազայից ստացված տեղեկատվությունը (Windows Կառավարման գործիքավորում):
- Ավելացվեց klist հավելված՝ Kerberos-ի տոմսերը ցուցադրելու համար:
- Taskkill հավելվածն իրականացնում է երեխայի գործընթացները բռնի կերպով դադարեցնելու հնարավորությունը:
- Սկսնակների ծրագիրը այժմ ունի «/machine» տարբերակ՝ x86 և ARM աջակցող հիբրիդային կատարվող ֆայլեր գործարկելիս օգտագործվող ճարտարապետությունը ընտրելու համար։
- Առաջադրանքների ցանկի ծրագրի ֆունկցիոնալության մեծ մասն արդեն ներդրված է։
- Ավելացրել է findstr հավելվածի հիմնական իրականացումը:
- Զարգացման գործիքներ
- WineDump ծրագիրը հնարավորություն ունի ցուցադրելու գրանցամատյանի ֆայլերի պարունակությունը։ Windows (REGF ձևաչափ), ինչպես նաև հիբրիդային PE ֆայլերում աջակցվող բոլոր ճարտարապետությունների (x86/ARM64) տվյալների ցուցադրում:
- IDL կոմպիլյատորն այժմ աջակցում է «composable», «default_overload», «deprecated» և «protected» ատրիբուտները։
- Հեռացվել է libwine.so գրադարանը, որը հնացել էր Wine 6.0-ում և այլևս չի օգտագործվում Wine-ում: Wine-ի հին տարբերակներում (5.0 և ավելի բարձր) libwine.so-ով կառուցված ELF ծրագրերը պահանջում են վերակառուցում՝ Wine 9.0-ում աշխատելու համար:
- Ներկառուցված գրադարաններ և արտաքին կախվածություններ
- Փաթեթում ինտեգրված են FluidSynth 2.3.3, Musl 1.2.3 (միայն մաթեմատիկական ֆունկցիաներ) և Zydis 4.0.0 գրադարանները։
- Հետևյալ բաղադրիչները թարմացվել են նոր տարբերակներով՝ Vkd3d 1.10, Faudio 23.12, OpenLDAP 2.5.16, LCMS2 2.15, LibMPG123 1.32.2, LibPng 1.6.40, LibTiff 4.6.0, LibXml2 2.11.5, LibXslt 1.1.38 և Zlib 1.3: Wine Mono շարժիչը՝ .NET հարթակի իրականացմամբ, թարմացվել է մինչև 8.1.0 թողարկումը:
- Վարորդը winewayland.drv օգտագործում է Wayland հաճախորդի գրադարանը որպես արտաքին կախվածություն, ինչպես նաև xkbcommon և xkbregistry գրադարանները:
- Խելացի քարտերը աջակցելու համար օգտագործվում է արտաքին PCSClite գրադարանը (մեջ macOS — PCSC):
- Ոչ i386 հարթակներում PE ֆայլեր ստեղծելու համար այժմ պահանջվում է խաչաձև կոմպիլյատոր՝ «.seh» հրահանգների աջակցությամբ՝ բացառությունները կարգավորելու համար:
Source: opennet.ru
