Stabil utgivelse av Wine 7.0

Etter et år med utvikling og 30 eksperimentelle versjoner ble en stabil utgivelse av den åpne implementeringen av Win32 API presentert - Wine 7.0, som inneholdt mer enn 9100 endringer. Nøkkelprestasjonene til den nye versjonen inkluderer oversettelse av de fleste vinmoduler til PE-format, støtte for temaer, utvidelse av stabelen for styrespaker og inngangsenheter med et HID-grensesnitt, og implementering av WoW64-arkitekturen for å kjøre 32-biters programmer i en 64-biters miljø.

Wine har bekreftet full drift av 5156 (for et år siden 5049) programmer for Windows, ytterligere 4312 (for et år siden 4227) programmer fungerer perfekt med tilleggsinnstillinger og eksterne DLL-er. 3813 3703 programmer (for XNUMX XNUMX år siden) har mindre driftsproblemer som ikke forstyrrer bruken av hovedfunksjonene til applikasjonene.

Viktige innovasjoner i Wine 7.0:

  • Moduler i PE-format
    • Nesten alle DLL-er har blitt konvertert til å bruke PE (Portable Executable, brukt på Windows) kjørbare filformat i stedet for ELF. Bruken av PE løser problemer med å støtte ulike kopibeskyttelsesordninger som bekrefter identiteten til systemmoduler på disk og i minne.
    • Muligheten til å samhandle PE-moduler med Unix-biblioteker ved å bruke standard NT-kjernesystemkallet er implementert, som lar deg skjule tilgang til Unix-kode fra Windows-feilsøkere og overvåke trådregistrering.
    • Innebygde DLL-er lastes nå bare hvis det er en tilsvarende PE-fil på disken, uavhengig av om det er et ekte bibliotek eller en stubb. Denne endringen lar applikasjonen alltid se riktig binding til PE-filer. For å deaktivere denne virkemåten, kan du bruke miljøvariabelen WINEBOOTSTRAPMODE.
  • WoW64
    • WoW64-arkitekturen (64-biters Windows-på-Windows) er implementert, slik at du kan kjøre 32-biters Windows-applikasjoner i 64-bits Unix-prosesser. Støtte implementeres gjennom tilkobling av et lag som oversetter 32-biters NT-systemanrop til 64-biters anrop til NTDLL.
    • WoW64-lag er forberedt for de fleste Unix-biblioteker og lar 32-bits PE-moduler få tilgang til 64-bits Unix-biblioteker. Når alle moduler er konvertert til PE-format, vil det være mulig å kjøre 32-bits Windows-applikasjoner uten å installere 32-bits Unix-biblioteker.
  • Temaer
    • Temastøtte er implementert. Designtemaene "Light", "Blue" og "Classic Blue" er inkludert, som kan velges gjennom WineCfg-konfiguratoren.
    • Lagt til muligheten til å tilpasse utseendet til alle grensesnittkontroller gjennom temaer. Utseendet til elementer oppdateres automatisk etter endring av designtemaet.
    • Temastøtte er lagt til alle innebygde Wine-applikasjoner. Applikasjoner er tilpasset skjermer med høy pikseltetthet (High DPI).
  • Grafisk delsystem
    • Et nytt Win32u-bibliotek er lagt til, som inkluderer deler av GDI32- og USER32-bibliotekene relatert til grafikkbehandling og vindusbehandling på kjernenivå. I fremtiden vil arbeidet begynne med å portere driverkomponenter som winex32.drv og winemac.drv til Win11u.
    • Vulkan-driveren støtter Vulkan graphics API-spesifikasjon 1.2.201.
    • Gir støtte for utmating av skraverte geometriske objekter via Direct2D API, med mulighet for å sjekke om et klikk treffer (treff-test).
    • Direct2D API gir innledende støtte for visuelle effekter brukt ved hjelp av ID2D1Effect-grensesnittet.
    • Direct2D API har lagt til støtte for ID2D1MultiThread-grensesnittet, som brukes til å organisere eksklusiv tilgang til ressurser i flertrådede applikasjoner.
    • WindowsCodecs-bibliotekene gir støtte for dekoding av bilder i WMP-format (Windows Media Photo) og koding av bilder i DDS-format (DirectDraw Surface). Vi støtter ikke lenger koding av bilder i ICNS-formatet (for macOS), som ikke støttes på Windows.
  • Direct3D
    • Den nye gjengivelsesmotoren har blitt betydelig forbedret, og oversetter Direct3D-kall til Vulkan grafikk API. I de fleste situasjoner har støttenivået for Direct3D 10 og 11 i den Vulkan-baserte motoren blitt brakt til paritet med den eldre OpenGL-baserte motoren. For å aktivere Vulkan-gjengivelsesmotoren, sett Direct3D-registervariabelen "renderer" til "vulkan".
    • Mange funksjoner i Direct3D 10 og 11 er implementert, inkludert Deferred Contexts, tilstandsobjekter som opererer i enhetskonteksten, vedvarende forskyvninger i buffere, sletting av teksturvisninger som ikke er i orden, kopiering av data mellom ressurser i typeløse formater (DXGI_FORMAT_BC3_TYPELESS, DXGI_FORMAT_R32G32_32TYPELESSA32_XNUMXBTY), etc. .
    • Lagt til støtte for flerskjermskonfigurasjoner, slik at du kan velge en skjerm for å vise en Direct3D-applikasjon i fullskjermmodus.
    • DXGI API gir skjermgammakorreksjon, som kan brukes av Direct3D 10 og 11-baserte applikasjoner for å endre skjermens lysstyrke. Aktivert henting av virtuelle rammebuffertellere (SwapChain).
    • Direct3D 12 legger til støtte for versjon 1.1 rotsignaturer.
    • I gjengivelseskoden via Vulkan API er effektiviteten av spørringsbehandlingen forbedret når systemet støtter utvidelsen VK_EXT_host_query_reset.
    • Lagt til muligheten til å sende ut virtuelle rammebuffere (SwapChain) via GDI hvis OpenGL eller Vulkan ikke kan brukes til visning, for eksempel ved utdata til et vindu fra forskjellige prosesser, for eksempel i programmer basert på CEF (Chromium Embedded Framework) rammeverket.
    • Når du bruker GLSL shader backend, er den "nøyaktige" modifikatoren sikret for shader-instruksjoner.
    • DirectDraw API legger til støtte for 3D-gjengivelse i systemminnet ved bruk av programvareenheter som "RGB", "MMX" og "Ramp".
    • AMD Radeon RX 3M, AMD Radeon RX 5500/6800 XT/6800 XT, AMD Van Gogh, Intel UHD Graphics 6900 og NVIDIA GT 630-kort er lagt til Direct1030D-grafikkortdatabasen.
    • "UseGLSL"-nøkkelen er fjernet fra HKEY_CURRENT_USER\Software\Wine\Direct3D-registeret, i stedet for, fra og med Wine 5.0, må du bruke "shader_backend".
    • For å støtte Direct3D 12 trenger du nå minst versjon 3 av vkd1.2d-biblioteket.
  • D3DX
    • D3DX 10-implementeringen har forbedret støtte for rammeverket for visuelle effekter og lagt til støtte for Windows Media Photo-bildeformatet (JPEG XR)
    • Lagt til teksturopprettingsfunksjoner i D3DX10, for eksempel D3DX10CreateTextureFromMemory().
    • Programvaregrensesnittene ID3DX10Sprite og ID3DX10Font er delvis implementert.
  • Lyd og video
    • GStreamer-tillegg for DirectShow og Media Foundation-rammeverket er kombinert til én felles WineGStreamer-backend, noe som skal forenkle utviklingen av nye innholdsdekodings-APIer.
    • Basert på WineGStreamer-backend, er Windows Media-objekter implementert for synkron og asynkron lesing.
    • Implementeringen av Media Foundation-rammeverket har blitt ytterligere foredlet, støtte for IMFPMediaPlayer-funksjonaliteten og prøvetildelingen er lagt til, og støtte for EVR- og SAR-gjengivelsesbuffere er forbedret.
    • Wineqtdecoder-biblioteket, som gir en dekoder for QuickTime-formatet, er fjernet (alle kodeker bruker nå GStreamer).
  • Inngangsenheter
    • Stakken for inngangsenheter som støtter HID (Human Interface Devices)-protokollen har blitt betydelig forbedret, og gir muligheter som å analysere HID-beskrivelser, behandle HID-meldinger og levere mini-HID-drivere.
    • I backends av winebus.sys-driveren er oversettelsen av enhetsbeskrivelser til HID-meldinger forbedret.
    • Lagt til en ny DirectInput-backend for styrespaker som støtter HID-protokollen. Muligheten til å bruke tilbakemeldingseffekter i styrespaker er implementert. Forbedret joystick kontrollpanel. Optimalisert interaksjon med XInput-kompatible enheter. I WinMM har joystick-støtte blitt flyttet til DInput, i stedet for å bruke evdev-backend på Linux og IOHID på macOS IOHID. Den gamle styrespakdriveren winejoystick.drv er fjernet.
    • Nye tester er lagt til DInput-modulen, basert på bruk av virtuelle HID-enheter og ikke krever en fysisk enhet.
  • Tekst og fonter
    • La til Font Set-objekt til DirectWrite.
    • RichEdit implementerer TextHost-grensesnittet på riktig måte.
  • Kjerne (Windows-kjernegrensesnitt)
    • Når du kjører en uidentifisert kjørbar fil (som 'wine foo.msi') i Wine, kalles nå start.exe, som påkaller behandlere knyttet til filtypen.
    • Lagt til støtte for synkroniseringsmekanismene NtAlertThreadByThreadId og NtWaitForAlertByThreadId, lik futexes i Linux.
    • Lagt til støtte for NT-feilsøkingsobjekter som brukes til å feilsøke kjernefunksjoner.
    • Lagt til støtte for dynamiske registernøkler for å lagre ytelsesdata.
  • C Kjøretid
    • C runtime implementerer et komplett sett med matematiske funksjoner, som hovedsakelig overføres fra Musl-biblioteket.
    • Alle CPU-plattformer gir korrekt støtte for flyttallfunksjoner.
  • Nettverksfunksjoner
    • Forbedret kompatibilitetsmodus for Internet Explorer 11 (IE11), som nå brukes som standard for å behandle HTML-dokumenter.
    • mshtml-biblioteket implementerer ES6 JavaScript-modus (ECMAScript 2015), som gir støtte for funksjoner som let-uttrykket og Map-objektet.
    • Installasjon av MSI-pakker med tillegg til Gecko-motoren i Wine-arbeidskatalogen gjøres nå når det er nødvendig, og ikke under en Wine-oppdatering.
    • Lagt til støtte for DTLS-protokoll.
    • NSI-tjenesten (Network Store Interface) er implementert, som lagrer og overfører informasjon om ruting og nettverksgrensesnitt på datamaskinen til andre tjenester.
    • WinSock API-behandlere som setsockopt og getsockopt har blitt flyttet til NTDLL og afd.sys-driveren for å samsvare med Windows-arkitekturen.
    • Wines egne nettverksdatabasefiler, som /etc/protocols og /etc/networks, er nå installert i Wine-arbeidskatalogen, i stedet for å få tilgang til lignende Unix-databaser.
  • Alternative plattformer
    • Lagt til støtte for Apple-utstyr basert på M1 ARM-brikker (Apple Silicon).
    • Støtte for BCrypt- og Secur32-funksjoner på macOS krever nå installasjon av GnuTLS-biblioteket.
    • 32-biters kjørbare filer for ARM-plattformer er nå bygget i Thumb-2-modus, lik Windows. En forhåndslaster brukes til å laste inn slike filer.
    • For 32-biters ARM-plattformer er støtte for avvikling av unntak implementert.
    • For FreeBSD er antallet støttede spørringer for systeminformasjon på lavt nivå, som minnestatus og batteriladenivå, utvidet.
  • Innebygde applikasjoner og utviklingsverktøy
    • Reg.exe-verktøyet har lagt til støtte for 32- og 64-biters registervisninger. Lagt til støtte for kopiering av registernøkler.
    • WineDump-verktøyet har lagt til støtte for dumping av Windows-metadata og visning av detaljert informasjon om CodeView-oppføringer.
    • Wine Debugger (winedbg) gir muligheten til å feilsøke 32-bits prosesser fra en 64-bits debugger.
    • Muligheten til å laste inn biblioteker innebygd i PE-filer er lagt til IDL-kompilatoren (widl), støtte for WinRT-spesifikke attributter og konstruksjoner er gitt, og et plattformspesifikt biblioteksøk er implementert.
  • Monteringssystem
    • I arkitekturspesifikke kataloger lagres nå biblioteker med navn som gjenspeiler arkitekturen og typen kjørbar fil, for eksempel 'i386-windows' for PE-formatet og 'x86_64-unix' for unix-biblioteker, noe som tillater støtte for forskjellige arkitekturer i en enkel vininstallasjon og gi krysskompilering av Winelib.
    • For å sette et alternativ i overskriftene til PE-filer som kontrollerer overgangen til å bruke native DLL-er, har '--prefer-native option'-flagget blitt lagt til winebuild (DLL_WINE_PREATTACH-behandling i DllMain har blitt stoppet).
    • Lagt til støtte for versjon 4 av Dwarf debug-dataformatet, som nå brukes som standard når man bygger vinbiblioteker.
    • Lagt til byggealternativ '—enable-build-id' for å lagre unike byggidentifikatorer i kjørbare filer.
    • Lagt til støtte for bruk av Clang-kompilatoren i MSVC-kompatibilitetsmodus.
  • Miscellanea
    • Navnene på typiske kataloger i brukerskallet (Windows Shell) er gitt til skjemaet som brukes fra Windows Vista, dvs. I stedet for "Mine dokumenter", opprettes det nå en "Dokumenter"-katalog, og de fleste dataene lagres i "AppData"-katalogen.
    • Støtte for OpenCL 1.2-spesifikasjonen er lagt til OpenCL-bibliotekslaget.
    • WinSpool-driveren har lagt til støtte for forskjellige sidestørrelser ved utskrift.
    • Lagt til innledende støtte for MSDASQL, Microsoft OLE DB-leverandøren for ODBC-drivere.
    • Wine Mono-motoren med .NET-plattformimplementering har blitt oppdatert til utgivelse 7.0.0.
    • Unicode-data er oppdatert til Unicode 14-spesifikasjonen.
    • Kildetreet inkluderer bibliotekene Faudio, GSM, LCMS2, LibJPEG, LibJXR, LibMPG123, LibPng, LibTiff, LibXml2, LibXslt og Zlib, som er kompilert i PE-format og ikke krever en versjon i Unix-format. Samtidig kan disse bibliotekene også importeres fra systemet for å bruke eksterne sammenstillinger i stedet for innebygde PE-alternativer.

Kilde: opennet.ru

Legg til en kommentar