Utoaji thabiti wa Mvinyo 7.0

Baada ya mwaka wa maendeleo na matoleo 30 ya majaribio, kutolewa imara kwa utekelezaji wazi wa Win32 API iliwasilishwa - Mvinyo 7.0, ambayo ilijumuisha mabadiliko zaidi ya 9100. Mafanikio makuu ya toleo jipya ni pamoja na kutafsiri moduli nyingi za Mvinyo katika umbizo la PE, usaidizi wa mada, upanuzi wa safu ya vijiti vya kufurahisha na vifaa vya kuingiza vilivyo na kiolesura cha HID, na utekelezaji wa usanifu wa WoW64 wa kuendesha programu za 32-bit katika a. Mazingira ya 64-bit.

Mvinyo imethibitisha uendeshaji kamili wa programu 5156 (mwaka mmoja uliopita 5049) kwa Windows, programu nyingine 4312 (mwaka mmoja uliopita 4227) hufanya kazi kikamilifu na mipangilio ya ziada na DLL za nje. Programu 3813 (miaka 3703 iliyopita) zina matatizo madogo ya uendeshaji ambayo hayaingiliani na matumizi ya kazi kuu za maombi.

Ubunifu muhimu katika Mvinyo 7.0:

  • Moduli katika umbizo la PE
    • Takriban DLL zote zimebadilishwa ili kutumia umbizo la faili linaloweza kutekelezeka la PE (Portable Executable, linalotumika kwenye Windows) badala ya ELF. Matumizi ya PE hutatua matatizo kwa kuunga mkono mipango mbalimbali ya ulinzi wa nakala ambayo inathibitisha utambulisho wa moduli za mfumo kwenye diski na kumbukumbu.
    • Uwezo wa kuingiliana moduli za PE na maktaba za Unix kwa kutumia simu ya kawaida ya mfumo wa NT kernel umetekelezwa, ambayo hukuruhusu kuficha ufikiaji wa msimbo wa Unix kutoka kwa vitatuzi vya Windows na kufuatilia usajili wa nyuzi.
    • DLL zilizojengwa ndani sasa zinapakiwa tu ikiwa kuna faili inayolingana ya PE kwenye diski, bila kujali ni maktaba halisi au mbegu. Mabadiliko haya huruhusu programu kuona kila wakati ufungaji sahihi kwa faili za PE. Ili kuzima tabia hii, unaweza kutumia utofauti wa mazingira wa WINEBOOTSTRAPMODE.
  • WoW64
    • Usanifu wa WoW64 (64-bit Windows-on-Windows) umetekelezwa, hukuruhusu kuendesha programu-tumizi za Windows 32 katika michakato ya 64-bit ya Unix. Usaidizi unatekelezwa kupitia uunganisho wa safu ambayo hutafsiri simu za mfumo wa 32-bit NT kuwa simu 64-bit kwa NTDLL.
    • Tabaka za WoW64 zimetayarishwa kwa maktaba nyingi za Unix na huruhusu moduli za 32-bit PE kufikia maktaba za 64-bit za Unix. Mara tu moduli zote zitakapobadilishwa kuwa umbizo la PE, itawezekana kuendesha programu za Windows 32-bit bila kusakinisha maktaba 32-bit za Unix.
  • Mandhari
    • Usaidizi wa mada umetekelezwa. Mandhari ya kubuni "Nuru", "Bluu" na "Bluu ya Kawaida" imejumuishwa, ambayo inaweza kuchaguliwa kupitia kisanidi cha WineCfg.
    • Imeongeza uwezo wa kubinafsisha mwonekano wa vidhibiti vyote vya kiolesura kupitia mandhari. Muonekano wa vipengele husasishwa kiotomatiki baada ya kubadilisha mandhari ya muundo.
    • Usaidizi wa mandhari umeongezwa kwa programu zote za Mvinyo zilizojengwa ndani. Programu zimerekebishwa kwa skrini zilizo na msongamano wa saizi ya juu (DPI ya Juu).
  • Mfumo mdogo wa michoro
    • Maktaba mpya ya Win32u imeongezwa, ambayo inajumuisha sehemu za maktaba za GDI32 na USER32 zinazohusiana na usindikaji wa michoro na usimamizi wa dirisha katika kiwango cha kernel. Katika siku zijazo, kazi itaanza kwenye kupakia vipengee vya kiendeshi kama vile winex32.drv na winemac.drv hadi Win11u.
    • Kiendeshi cha Vulkan kinaauni vipimo vya API ya michoro ya Vulkan 1.2.201.
    • Imetoa usaidizi wa kutoa vitu vya kijiometri vilivyotolewa kupitia API ya Direct2D, yenye uwezo wa kuangalia ikiwa mbofyo itagonga (hit-test).
    • Direct2D API hutoa usaidizi wa awali kwa athari za kuona zinazotumika kwa kutumia kiolesura cha ID2D1Effect.
    • Direct2D API imeongeza usaidizi kwa kiolesura cha ID2D1MultiThread, ambacho kinatumika kupanga ufikiaji wa kipekee wa rasilimali katika programu zenye nyuzi nyingi.
    • Seti ya WindowsCodecs ya maktaba hutoa usaidizi wa kusimbua picha katika umbizo la WMP (Windows Media Photo) na picha za usimbaji katika umbizo la DDS (DirectDraw Surface). Hatutumii tena picha za usimbaji katika umbizo la ICNS (kwa macOS), ambalo halitumiki kwenye Windows.
  • Direct3D
    • Injini mpya ya uwasilishaji imeboreshwa kwa kiasi kikubwa, ikitafsiri simu za Direct3D hadi API ya michoro ya Vulkan. Katika hali nyingi, kiwango cha usaidizi kwa Direct3D 10 na 11 kwenye injini inayotokana na Vulkan kimeletwa kwa usawa na injini kuu ya OpenGL. Ili kuwezesha injini ya uwasilishaji ya Vulkan, weka kibadilishaji cha usajili cha Direct3D "kionyeshi" kuwa "vulkan".
    • Vipengele vingi vya Direct3D 10 na 11 vinatekelezwa, ikiwa ni pamoja na Muktadha Ulioahirishwa, vitu vya hali vinavyofanya kazi katika muktadha wa kifaa, urekebishaji unaoendelea katika vihifadhi, kufuta maoni ya muundo wa nje ya mpangilio, kunakili data kati ya rasilimali katika miundo isiyo na chapa (DXGI_FORMAT_BC3_TYPELESS, DXGI_FORMAT_R32G32G32B32TY), nk. .
    • Usaidizi ulioongezwa kwa usanidi wa vidhibiti vingi, hukuruhusu kuchagua kifuatiliaji ili kuonyesha programu ya Direct3D katika hali ya skrini nzima.
    • API ya DXGI hutoa urekebishaji wa gamma ya skrini, ambayo inaweza kutumika na Direct3D 10 na programu 11 za msingi kubadilisha mwangaza wa skrini. Imewasha urejeshaji wa kaunta za fremu pepe (SwapChain).
    • Direct3D 12 inaongeza usaidizi kwa saini za mizizi ya toleo la 1.1.
    • Katika msimbo wa uwasilishaji kupitia API ya Vulkan, ufanisi wa uchakataji wa hoja umeboreshwa wakati mfumo unaauni kiendelezi cha kuweka upya VK_EXT_host_query_reset.
    • Imeongeza uwezo wa kutoa viunzi vya mfumo pepe (SwapChain) kupitia GDI ikiwa OpenGL au Vulkan haziwezi kutumika kuonyeshwa, kwa mfano, wakati wa kutoa kwa dirisha kutoka kwa michakato tofauti, kwa mfano, katika programu kulingana na mfumo wa CEF (Chromium Embedded Framework).
    • Unapotumia backend ya GLSL shader, kirekebishaji "sahihi" kinahakikishwa kwa maagizo ya shader.
    • API ya DirectDraw inaongeza usaidizi wa uwasilishaji wa 3D kwenye kumbukumbu ya mfumo kwa kutumia vifaa vya programu kama vile "RGB", "MMX" na "Ramp".
    • Kadi za AMD Radeon RX 3M, AMD Radeon RX 5500/6800 XT/6800 XT, AMD Van Gogh, Intel UHD Graphics 6900 na NVIDIA GT 630 zimeongezwa kwenye hifadhidata ya kadi ya michoro ya Direct1030D.
    • Kitufe cha "UseGLSL" kimeondolewa kwenye usajili wa HKEY_CURRENT_USER\Software\Wine\Direct3D, badala yake, kuanzia na Mvinyo 5.0, unahitaji kutumia "shader_backend".
    • Ili kusaidia Direct3D 12, sasa unahitaji angalau toleo la 3 la maktaba ya vkd1.2d.
  • D3DX
    • Utekelezaji wa D3DX 10 umeboresha usaidizi wa mfumo wa athari za kuona na kuongeza usaidizi kwa umbizo la picha ya Windows Media Photo (JPEG XR)
    • Vitendaji vilivyoongezwa vya kuunda unamu vilivyotolewa katika D3DX10, kama vile D3DX10CreateTextureFromMemory().
    • Violesura vya programu vya ID3DX10Sprite na ID3DX10Font vimetekelezwa kwa kiasi.
  • Sauti na video
    • Viongezi vya GStreamer vya DirectShow na mfumo wa Media Foundation vimeunganishwa katika mandhari moja ya kawaida ya WineGStreamer, ambayo inapaswa kurahisisha uundaji wa API mpya za kusimbua maudhui.
    • Kulingana na mazingira ya nyuma ya WineGStreamer, vipengee vya Windows Media vinatekelezwa kwa usomaji wa usawazishaji na wa asynchronous.
    • Utekelezaji wa mfumo wa Media Foundation umeboreshwa zaidi, usaidizi wa utendakazi wa IMFPMediaPlayer na kigawanya sampuli umeongezwa, na usaidizi kwa vihifadhi vya uwasilishaji vya EVR na SAR umeboreshwa.
    • Maktaba ya wineqtdecoder, ambayo hutoa avkodare kwa umbizo la QuickTime, imeondolewa (kodeki zote sasa zinatumia GStreamer).
  • Vifaa vya kuingiza
    • Rafu ya vifaa vya kuingiza data vinavyotumia itifaki ya HID (Human Interface Devices) imeboreshwa kwa kiasi kikubwa, ikitoa uwezo kama vile kuchanganua vifafanuzi vya HID, kuchakata ujumbe wa HID, na kutoa viendeshaji vidogo vya HID.
    • Katika sehemu za nyuma za kiendeshi cha winebus.sys, tafsiri ya maelezo ya kifaa katika ujumbe wa HID imeboreshwa.
    • Imeongeza mandharinyuma mpya ya DirectInput kwa vijiti vya kufurahisha vinavyotumia itifaki ya HID. Uwezo wa kutumia athari za maoni katika vijiti vya furaha umetekelezwa. Paneli ya udhibiti wa vijiti vya furaha iliyoboreshwa. Mwingiliano ulioboreshwa na vifaa vinavyooana vya XInput. Katika WinMM, msaada wa vijiti vya furaha umehamishwa hadi DInput, badala ya kutumia mazingira ya nyuma ya evdev kwenye Linux na IOHID kwenye macOS IOHID. Dereva wa zamani wa kijiti cha furaha winejoystick.drv ameondolewa.
    • Majaribio mapya yameongezwa kwenye moduli ya DINput, kulingana na matumizi ya vifaa pepe vya HID na haihitaji kifaa halisi.
  • Maandishi na fonti
    • Aliongeza Font Set kitu kwa DirectWrite.
    • RichEdit hutekelezea kwa usahihi kiolesura cha TextHost.
  • Kernel (Violesura vya Windows Kernel)
    • Wakati wa kuendesha faili isiyojulikana inayoweza kutekelezwa (kama vile 'wine foo.msi') katika Mvinyo, start.exe inaitwa sasa, ambayo inawaomba vidhibiti vinavyohusishwa na aina ya faili.
    • Usaidizi ulioongezwa wa mbinu za ulandanishi NtAlertThreadByThreadId na NtWaitForAlertByThreadId, sawa na futexes katika Linux.
    • Usaidizi ulioongezwa kwa vitu vya utatuzi wa NT vinavyotumika kutatua hitilafu za vitendaji vya kernel.
    • Usaidizi umeongezwa kwa vitufe vinavyobadilika vya usajili ili kuhifadhi data ya utendaji.
  • C Muda wa Kuendesha
    • Wakati wa utekelezaji wa C hutekeleza seti kamili ya vitendakazi vya hisabati, ambavyo hubebwa zaidi kutoka kwa maktaba ya Musl.
    • Mifumo yote ya CPU hutoa usaidizi sahihi kwa vitendaji vya sehemu zinazoelea.
  • Vipengele vya mitandao
    • Hali iliyoboreshwa ya uoanifu ya Internet Explorer 11 (IE11), ambayo sasa inatumiwa na chaguo-msingi kuchakata hati za HTML.
    • Maktaba ya mshtml hutumia modi ya JavaScript ya ES6 (ECMAScript 2015), ambayo hutoa usaidizi kwa vipengele kama vile let expression na kitu cha Ramani.
    • Ufungaji wa vifurushi vya MSI na nyongeza kwa injini ya Gecko kwenye saraka ya kufanya kazi ya Mvinyo sasa hufanywa inapohitajika, na sio wakati wa sasisho la Mvinyo.
    • Usaidizi ulioongezwa kwa itifaki ya DTLS.
    • Huduma ya NSI (Kiolesura cha Duka la Mtandao) imetekelezwa, kuhifadhi na kusambaza taarifa kuhusu njia na miingiliano ya mtandao kwenye kompyuta hadi kwa huduma nyinginezo.
    • Vishikizi vya WinSock API kama vile setsockopt na getsockopt vimehamishwa hadi NTDLL na kiendeshi cha afd.sys ili kuendana na usanifu wa Windows.
    • Faili za hifadhidata za mtandao wa Mvinyo mwenyewe, kama vile /etc/protocols na /etc/networks, sasa zimesakinishwa kwenye saraka ya kufanya kazi ya Mvinyo, badala ya kupata hifadhidata sawa za Unix.
  • Majukwaa mbadala
    • Usaidizi ulioongezwa kwa vifaa vya Apple kulingana na chips za M1 ARM (Apple Silicon).
    • Usaidizi wa vipengele vya BCrypt na Secur32 kwenye macOS sasa unahitaji usakinishaji wa maktaba ya GnuTLS.
    • Vitekelezo vya biti-32 vya majukwaa ya ARM sasa vimeundwa katika hali ya Thumb-2, sawa na Windows. Kipakiaji awali hutumiwa kupakia faili kama hizo.
    • Kwa majukwaa ya ARM ya 32-bit, utumiaji wa vighairi vya kutendua umetekelezwa.
    • Kwa FreeBSD, idadi ya hoja zinazotumika kwa maelezo ya mfumo wa kiwango cha chini, kama vile hali ya kumbukumbu na kiwango cha chaji ya betri, imepanuliwa.
  • Programu zilizojengwa ndani na zana za ukuzaji
    • Huduma ya reg.exe imeongeza usaidizi kwa mionekano ya usajili ya 32- na 64-bit. Usaidizi ulioongezwa wa kunakili funguo za Usajili.
    • Huduma ya WineDump imeongeza usaidizi wa kutupa metadata ya Windows na kuonyesha maelezo ya kina kuhusu maingizo ya CodeView.
    • Kitatuzi cha Mvinyo (winedbg) hutoa uwezo wa kutatua michakato ya biti-32 kutoka kwa kitatuzi cha biti-64.
    • Uwezo wa kupakia maktaba zilizojengwa ndani ya faili za PE umeongezwa kwa mkusanyaji wa IDL (widl), usaidizi wa sifa na miundo mahususi ya WinRT umetolewa, na utafutaji wa maktaba mahususi wa jukwaa umetekelezwa.
  • Mfumo wa mkusanyiko
    • Katika saraka mahususi za usanifu, maktaba sasa zimehifadhiwa kwa majina yanayoakisi usanifu na aina inayoweza kutekelezwa, kama vile 'i386-windows' kwa umbizo la PE na 'x86_64-unix' kwa maktaba zisizo sawa, kuruhusu usaidizi wa usanifu tofauti katika Divai moja. usakinishaji na kutoa mkusanyiko mtambuka wa Winelib.
    • Ili kuweka chaguo katika vichwa vya faili za PE ambavyo vinadhibiti mpito wa kutumia DLL asili, alama ya '-prefer-native option' imeongezwa kwenye winebuild (uchakataji wa DLL_WINE_PREATTACH katika DllMain umesimamishwa).
    • Usaidizi ulioongezwa kwa toleo la 4 la umbizo la data ya utatuzi wa Dwarf, ambalo sasa linatumiwa na chaguo-msingi wakati wa kuunda maktaba za Mvinyo.
    • Chaguo la ujenzi lililoongezwa '-enable-build-id' ili kuhifadhi vitambulisho vya kipekee vya muundo katika faili zinazoweza kutekelezwa.
    • Usaidizi ulioongezwa wa kutumia mkusanyaji wa Clang katika modi ya uoanifu ya MSVC.
  • Miscellanea
    • Majina ya saraka za kawaida kwenye ganda la mtumiaji (Windows Shell) hutolewa kwa mpango unaotumiwa kuanzia na Windows Vista, i.e. Badala ya 'Nyaraka Zangu', saraka ya 'Nyaraka' sasa imeundwa, na data nyingi huhifadhiwa kwenye saraka ya 'AppData'.
    • Usaidizi wa vipimo vya OpenCL 1.2 umeongezwa kwenye safu ya maktaba ya OpenCL.
    • Kiendeshi cha WinSpool kimeongeza usaidizi wa saizi tofauti za ukurasa wakati wa kuchapisha.
    • Imeongeza usaidizi wa awali kwa MSDASQL, mtoa huduma wa Microsoft OLE DB kwa viendeshi vya ODBC.
    • Injini ya Wine Mono yenye utekelezaji wa jukwaa la .NET imesasishwa ili kutolewa 7.0.0.
    • Data ya Unicode imesasishwa hadi vipimo vya Unicode 14.
    • Mti chanzo ni pamoja na maktaba za Faudio, GSM, LCMS2, LibJPEG, LibJXR, LibMPG123, LibPng, LibTiff, LibXml2, LibXslt na Zlib, ambazo zimekusanywa katika umbizo la PE na hazihitaji toleo katika umbizo la Unix. Wakati huo huo, maktaba hizi pia zinaweza kuagizwa kutoka kwa mfumo ili kutumia makusanyiko ya nje badala ya chaguzi za PE zilizojengwa.

Chanzo: opennet.ru

Kuongeza maoni