Po letu razvoja in 26 poskusnih različicah je bila predstavljena stabilna izdaja odprte implementacije Win32 API - Wine 9.0, ki je vključevala več kot 7000 sprememb. Ključni dosežki v novi različici vključujejo implementacijo arhitekture WoW64 za izvajanje 32-bitnih programov v 64-bitnem okolju, integracijo gonilnikov za podporo Waylandu, podporo za arhitekturo ARM64, implementacijo DirectMusic API in podporo za pametne kartice.
Potrjeno je bilo, da programi 5336 (pred enim letom 5266, pred dvema letoma 5156, pred tremi leti 5049) pravilno delujejo v programu Wine. WindowsNadaljnjih 4397 programov (4370 pred enim letom, 4312 pred dvema letoma, 4227 pred tremi leti) deluje brezhibno z dodatnimi nastavitvami in zunanjimi DLL-ji. 3943 programov (3888 pred enim letom, 3813 pred dvema letoma, 3703 pred tremi leti) ima manjše težave, ki ne vplivajo na osnovno funkcionalnost aplikacij.
Ključne novosti v Wine 9.0:
- Dodan je bil gonilnik winewayland.drv, ki omogoča uporabo programa Wine v okoljih, ki temeljijo na Waylandu, brez uporabe komponent XWayland ali X11. Namen tega razvoja je zagotoviti čisto okolje Wayland s podporo za zagon. Windows- aplikacije, ki ne zahtevajo nameščanja paketov, povezanih z X11, kar omogoča večjo zmogljivost in odzivnost v igrah z odpravo nepotrebnih plasti. Uporaba čistega okolja Wayland za Wine odpravlja tudi varnostne težave, ki so značilne za X11 (na primer, nezaupanja vredne igre X11 lahko vohunijo za drugimi aplikacijami, ker protokol X11 omogoča dostop do vseh vhodnih dogodkov in izvajanje zamenjave pritiskov tipk).
Gonilnik je označen kot poskusni in v razvoju, a kljub temu že podpira številne funkcije, kot so upravljanje oken, delo z več monitorji, podpora za skaliranje izpisa na zaslonih z visoko gostoto slikovnih pik (visok DPI), delo z relativne koordinate pri sledenju gibanja miške in podpora za grafični API Vulkan. Privzeto gonilnik ni aktiven in če ga želite omogočiti, dodajte »wayland« parametru registra »HKCU\Software\Wine\Drivers« in se prepričajte, da spremenljivka okolja DISPLAY ni nastavljena: wine reg.exe add HKCU\ \Programska oprema\\Wine\\Drivers /v Graphics /d x11,wayland
- Vsi moduli so bili pretvorjeni v sistemski klicni vmesnik NT, namesto da bi izvajali neposredne klice med slojema PE in Unix, kar označuje zaključek večletnega dela za pretvorbo vseh DLL-jev v uporabo formata izvršljive datoteke PE (Portable Executable).
- Razvoj sloja WoW64 (64-bitni) se je nadaljeval Windows-na-Windows), ki omogoča zagon 32-bitnih Windows- aplikacije na 64-bitnih sistemih Unix. Vsi moduli, ki dostopajo do knjižnic Unix, uporabljajo prevajalnike sistemskih klicev WoW64 (thunks), ki omogočajo 32-bitnim modulom v formatu PE dostop do 64-bitnih knjižnic Unix.
Izboljšan je bil nov način zagona WoW64, ki omogoča izvajanje 32-bitne kode znotraj 64-bitnega procesa (v starem načinu WoW64 so se 32-bitne aplikacije izvajale v 32-bitnih Unix procesih). Dodana je bila podpora za uporabo novega načina WoW64 na platformi. macOSKer ima novi način WoW64 nekaj manjših napak, kot sta pomanjkanje podpore za 16-bitne sisteme in zmanjšana zmogljivost OpenGL zaradi pomanjkanja podpore za razširitev ARB_buffer_storage, še ni privzeto omogočen in zahteva gradnjo z možnostjo "--enable-archs=i386,x86_64" v skripti za konfiguracijo.
- Dodana je možnost izvajanja obstoječih izvedljivih datotek Windows V sistemih z arhitekturo ARM64. Wine je zdaj mogoče zgraditi za ABI ARM64EC (združljiv z emulacijo ARM64), naložiti pa je mogoče tudi module ARM64EC. Ti moduli se uporabljajo za poenostavitev prenosa aplikacij, prvotno napisanih za arhitekturo x86_64, na sisteme ARM64, saj omogočajo izvajanje posameznih modulov kode x86_64 v okolju ARM64 z uporabo emulatorja. Dodana je bila podpora za format datoteke ARM64X PE, ki omogoča nalaganje ene same izvedljive datoteke v procesih x64/Arm64EC in ARM64. Implementiran je bil vmesnik za emulacijo 32-bitnih sistemov x86, vendar knjižnica emulatorja še ni vključena v glavno distribucijo Wine (zunanji emulator FEX se lahko uporablja za zagon kode x86 v okolju ARM64).
- Grafični podsistem
- Gonilnik PostScript je bil preoblikovan za podporo datotekam za tiskanje v formatu Windows, ki shranjujejo podatke o tiskalnih opravilih. Neposredni klici gonilnika iz okolja Unix so izključeni.
- Temam WinRT je bila dodana podpora za temni način. V WineCfg je bila dodana nastavitev za omogočanje temnega oblikovanja vmesnika.
- Gonilnik za grafični API Vulkan je dodal podporo za specifikacijo Vulkan 1.3.272 (8.0 je bila podprta v Wine 1.3.237).
- Funkcije knjižnice GdiPlus so bile optimizirane, kar omogoča večjo grafično zmogljivost.
- Direct3D
- Razčlenjevanje večnitnega ukaznega toka je začasno ustavljeno, ko se ne obdelujejo ukazi za upodabljanje, kar omogoča zmanjšanje porabe energije na raven enonitnega procesiranja pri izvajanju programov, ki ne zasedajo celotne pasovne širine ukaznega toka.
- Direct3D 10 vključuje podporo za dodatne učinke.
- Izvedel je optimizacijo zmogljivosti kode in zaledja WineD3D z uporabo grafičnega API-ja Vulkan.
- Koda za upodabljanje, ki temelji na API-ju Vulkan, zdaj preverja, katere zmogljivosti podpira naprava, in sporoča aplikaciji, katera raven funkcionalnosti Direct3D je na voljo.
- Implementirani sta bili funkciji D3DXFillTextureTX in D3DXFillCubeTextureTX.
- Klasično zaledje senčil OpenGL ARB ima dodano podporo za definiranje senc z uporabo razširitve ARB_fragment_program_shadow.
- D3DXLoadMeshHierarchyFromX in podobne funkcije imajo dodano podporo za nalaganje uporabniških podatkov z uporabo vmesnika ID3DXLoadUserData.
- Zvok in video
- Predlagana je bila začetna izvedba API-ja DirectMusic. Dodana podpora za zbirke, instrumente in zvočne vzorce v formatu SoundFont. Dodana podpora za Dopplerjev učinek. Izvedeni so bili testi za preverjanje pravilne izvedbe pri delovanju sekvencerja dmime in sintetizatorja MIDI dmsynth.
- Knjižnica FluidSynth je za uporabo vgrajena v API DirectMusic.
- Izvedena podpora za nalaganje zvočnih pisav (SoundFont - formati za sintezo na osnovi vzorcev, ki se uporabljajo za predvajanje MIDI datotek) v formatih DLS1 in DLS2, kot tudi v formatu SF2, ki se uporablja v Linux.
- Dodana možnost predvajanja vsebine MIDI s knjižnico dmsynth z uporabo programskega sintetizatorja FluidSynth in API-ja DirectSound za zvočni izhod.
- Dodan dekoder za video v formatu video kodeka Indeo IV50.
- Directshow
- Implementirana je bila komponenta DMO (DirectX Media Object) z dekoderjem formata WMV (Windows Medijski video).
- Dodan filter za zajem zvoka (DirectShow Audio Capture Filter).
- Poleg zvočnih tokov razdelilnik tokov MPEG‑1 (DirectShow MPEG‑1 Stream Splitter) zdaj podpira video tokove in storitvene tokove.
- Implementiran je filter za dekodiranje videa v formatu MPEG‑1 (DirectShow MPEG‑1 Video Decoder).
- Vhodne naprave
- DirectInput podpira preslikavo dejanj, ki vam omogoča, da gumbe na igralnem krmilniku povežete z določenimi dejanji v igrah.
- Integracija namizja
- Povezave so bile izvožene v glavno uporabniško okolje, kar omogoča klice aplikacij, ki se izvajajo pod Wineom, kot upravljavce protokolov pri odpiranju URL-ja (na primer zagon spotify.exe pri odpiranju povezav, kot je »spotify:user:spotify:playlist:848218482355482821«).
- Implementirano ekstrakcijo podatkov EDID (Extended Display Identification Data) z informacijami o parametrih priključenega monitorja, kot sta ime in model naprave.
- Okno namizja, ki je nameščeno v celozaslonskem načinu, lahko zaprete z gumbom »Izhod iz namizja« v meniju »Start«.
- Internacionalizacija
- Podpora za urejevalnike vnosnih metod (IME) je bila razširjena. Opravljeno je bilo delo za zagotovitev združljivosti z izvornim jezikom. Windows Implementacije IME in izboljšana integracija z Linux JAZ MENE
- Zagotovljena je bila izdelava področnih baz podatkov v formatu locale.nls iz baze podatkov Unicode CLDR (Unicode Common Locale Data Repository) različice 44 za dodatne področne nastavitve bew-ID, blo-BJ, csw-CA, ie-EE, mic-CA. , dodani so prg-PL, skr-PK, tyv-RU, vmw-MZ, xnr-IN in za-CN.
- Vmesnik je bil preveden v gruzinščino. Zagotovljeni so popolni prevodi za 16 jezikov in delni prevodi za 31 jezikov.
- Tabele znakov Unicode so posodobljene na standardno različico 15.1.0. Baza časovnih pasov je posodobljena.
- Jedro (vmesniki jedra Windows)
- Kot izdana različica Windows privzeto določeno Windows 10.
- Za izvedljive datoteke v formatu PE je implementirana podpora za randomizacijo naslovnega prostora (ASLR), vendar naslovi za nalaganje kode v pomnilnik še niso popolnoma randomizirani.
- Implementirana je bila podpora za šibko fragmentirano kopico (LFH, Low Fragmentation Heap), ki je povečala zmogljivost operacij dodeljevanja pomnilnika.
- Podpora za rezervacijo pomnilnika (placeholder) je bila dodana mehanizmu za dodeljevanje navideznega pomnilnika, kar aplikaciji omogoča, da rezervira določeno področje navideznega pomnilnika za prihodnjo uporabo.
- 64-bitni nalagalniki (nalagalnik in prednalagalnik) izvršljivih datotek in knjižnic so prevedeni v formatu PIE (od položaja neodvisne izvedljive datoteke), da se sprosti del 32-bitnega naslovnega prostora.
- Za sistemske klice NT in uporabniške povratne klice je na voljo pravilno odvijanje sklada.
- Omrežne funkcije
- Mehanizem MSHTML podpira mehanizem zbiranja smeti "Cycle Collection".
- MSHTML je dodal podporo za sinhrono obdelavo zahtev XMLHttpRequest.
- jscript.dll dodaja podporo za objekt WeakMap za delo z zbirko parov ključ/vrednost, v kateri je ključ predmet, ki mu je lahko pripeta poljubna vrednost. Implementirane metode WeakMap.get(), WeakMap.delete(), WeakMap.clear() in WeakMap.has().
- Motor brskalnika Gecko je posodobljen na različico 2.47.4.
- Implementirana je podpora za obvestila o spremembah stanja omrežnega vmesnika.
- Kriptografija in varnost
- Podpora za pametne kartice je bila dodana v knjižnico Winscard.dll, implementirano prek sistemske knjižnice PCSClite.
- BCrypt je dodal podporo za protokol izmenjave ključev Diffie-Hellman.
- Implementiran je bil paket Negotiate, ki zagotavlja plast za uporabo vmesnika SSPI (Security Support Provider Interface) za dostop do ponudnikov SSP (Security Support Provider).
- Vgrajenные приложения
- Wine Debugger (winedbg) uporablja knjižnico Zydis za razstavljanje strojnih navodil X86.
- Vmesnik WineCfg je bil posodobljen za podporo starejšim različicam na 64-bitnih platformah. Windows (pred XP), ki omogoča zagon starejših aplikacij v načinu WoW64.
- Vse vgrajene grafične aplikacije zdaj prikazujejo informacije o napakah v ločenem pogovornem oknu, namesto da bi jih prikazali v konzoli.
- Program systeminfo omogoča prikaz informacij iz baze podatkov WMI (Windows Upravljalna instrumentacija).
- Dodana aplikacija klist za prikaz vstopnic Kerberos.
- Aplikacija taskkill izvaja možnost prisilne prekinitve podrejenih procesov.
- Pripomočku za zagon je dodana možnost »/stroj« za izbiro arhitekture, ki se uporablja pri izvajanju hibridnih izvedljivih datotek, ki podpirajo x86 in ARM.
- Implementirana je večina funkcionalnosti programa seznam opravil.
- Dodana je osnovna izvedba aplikacije findstr.
- Razvojna orodja
- Pripomoček WineDump ima možnost prikaza vsebine datotek registra. Windows (format REGF), kot tudi prikaz podatkov za vse arhitekture (x86/ARM64), ki jih podpirajo hibridne datoteke PE.
- Prevajalnik IDL je dodal podporo za atribute "composable", "default_overload", "deprecated" in "protected".
- Odstranjen libwine.so, ki je bil opuščen v Wine 6.0 in se že dolgo ne uporablja več v Wineu. Programi v formatu ELF, zgrajeni v starejših različicah Wine (5.0 in starejših) z libwine.so, zahtevajo vnovično izgradnjo za delovanje v Wine 9.0.
- Vgrajene knjižnice in zunanje odvisnosti
- V paket so integrirane knjižnice FluidSynth 2.3.3, Musl 1.2.3 (samo matematične funkcije) in Zydis 4.0.0.
- Komponente 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 in Zlib 1.3 so posodobljene na nove različice. Motor Wine Mono z implementacijo platforme .NET je bil posodobljen na izdajo 8.1.0.
- Gonilnik winewayland.drv uporablja odjemalsko knjižnico Wayland kot zunanje odvisnosti, pa tudi knjižnici xkbcommon in xkbregistry.
- Za podporo pametnih kartic se uporablja zunanja knjižnica PCSClite (v macOS — PCSC).
- Gradnja datotek PE na platformah, ki niso i386, zdaj zahteva navzkrižni prevajalnik s podporo za direktive ".seh" za obravnavanje izjem.
Vir: opennet.ru
