Wine 9.0 穩定發布

經過一年的開發和 26 個實驗版本,Win32 API 的開放實現的穩定版本 - Wine 9.0 誕生了,其中包含了 7000 多個變更。新版本的主要成就包括實現了在64位元環境中運行32位元程式的WoW64架構、支援Wayland的驅動程式整合、對ARM64架構的支援、DirectMusic API的實作以及對智慧卡的支援。

Wine 已確認5336 個(一年前5266、兩年前5156、三年前5049)程式可以在Windows 上正常運行,另外4397 個(一年前4370、兩年前4312、三年前4227)程式可以與Windows 完美運作。附加設定和外部 DLL。 3943個程式(一年前3888個、兩年前3813個、三年前3703個)在運作上存在小問題,但不影響應用程式主要功能的使用。

Wine 9.0 的主要創新:

  • 新增了驅動 winewayland.drv,可讓您在基於 Wayland 協議的環境中使用 Wine,而無需使用 XWayland 和 X11 組件。該開發旨在提供一個純粹的 Wayland 環境,支援運行不需要安裝 X11 相關軟體包的 Windows 應用程序,從而透過消除不必要的層來實現更高的遊戲性能和響應能力。使用 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(可移植可執行)可執行檔格式的工作完成。
  • WoW64 層(64 位元 Windows-on-Windows)的開發仍在繼續,該層允許在 32 位元 Unix 系統上運行 64 位元 Windows 應用程式。所有存取 Unix 函式庫的模組都使用 WoW64 系統呼叫 thunk,以允許 32 位元 PE 格式的模組存取 64 位元 Unix 函式庫。

    改進了新的 WoW64 啟動模式,該模式在 32 位元進程中運行 64 位元程式碼(在舊的 WoW64 模式中,32 位元應用程式在 32 位元 Unix 進程中運行)。新增了在 macOS 平台上使用新的 WoW64 模式的支援。由於新的 WoW64 模式有一些缺點,例如缺乏對 16 位元模式的支援以及由於缺乏對 ARB_buffer_storage 擴展的支援而降低了 OpenGL 效能,因此預設尚未啟用它,需要使用選項「-enable-」進行建置配置腳本中的archs=i386,x86_64” “。

  • 新增了在 ARM64 架構系統上執行現有 Windows 執行檔的功能。已實現為 ARM64EC ABI(相容 ARM64 模擬)建置 Wine 並支援載入 ARM64EC 模組,透過提供使用 x64_86 執行各個模組的能力,可簡化最初為 x64_64 架構編寫的應用程式到 ARM86 系統的移植使用模擬器在ARM64 環境中編寫程式碼。新增了對 ARM64X PE 檔案格式的支持,允許在 x64/Arm64EC 和 ARM64 進程中載入單一可執行檔。用於模擬 32 位元 x86 系統的介面已經實現,但帶有模擬器的庫尚未包含在主 Wine 套件中(您可以使用外部 FEX 模擬器在 ARM86 環境中運行 x64 程式碼)。
  • 圖形子系統
    • PostScript 驅動程式經過重新設計,可支援儲存列印作業資料的 Windows 格式的假脫機檔案。不包括從 Unix 環境直接呼叫驅動程式。
    • WinRT 主題中新增了深色模式支援。 WineCfg 中新增了一個設定以啟用深色介面設計。
    • Vulkan 圖形 API 的驅動程式增加了對 Vulkan 1.3.272 規範的支援(Wine 8.0 支援 1.3.237)。
    • GdiPlus 庫的功能已經過最佳化,可以提高圖形效能。
  • Direct3D
    • 當沒有正在處理的渲染命令時,多執行緒命令流的解析被暫停,這允許在執行不佔用整個命令流頻寬的程式時將能耗降低到單執行緒處理的水平。
    • Direct3D 10 包括對附加效果的支援。
    • 使用 Vulkan 圖形 API 對 WineD3D 程式碼和後端進行效能最佳化。
    • 基於 Vulkan API 的渲染程式碼現在會檢查裝置支援哪些功能,並告訴應用程式可用的 Direct3D 功能等級。
    • D3DXFillTextureTX 和 D3DXFillCubeTextureTX 函數已實作。
    • 經典的 OpenGL ARB 著色器後端增加了對使用 ARB_fragment_program_shadow 擴充定義陰影的支援。
    • D3DXLoadMeshHierarchyFromX 和類似函數新增了使用 ID3DXLoadUserData 介面載入使用者資料的支援。
  • 聲音和視頻
    • DirectMusic API 的初步實作已被提出。新增了對 SoundFont 格式的集合、樂器和聲音樣本的支援。增加了對多普勒效應的支持。已實施測試以驗證操作 dmime 音序器和 dmsynth MIDI 合成器時的正確實作。
    • FluidSynth 函式庫內建於 DirectMusic API 中以供使用。
    • 支援載入 DLS1 和 DLS2 格式以及 Linux 中使用的 SF2 格式的聲音字型(SoundFont - 用於播放 MIDI 檔案的基於樣本的合成格式)。
    • 新增了使用 dmsynth 函式庫、使用 FluidSynth 軟體合成器和 DirectSound API 進行音訊輸出來播放 MIDI 內容的功能。
    • 新增了 Indeo IV50 視訊編解碼器格式的視訊解碼器。
  • DirectShow的
    • 帶有 WMV(Windows Media Video)格式解碼器的 DMO(DirectX Media Object)元件已實現。
    • 新增了音訊擷取過濾器(DirectShow Audio Capture Filter)。
    • 除了音訊串流之外,MPEG-1 Stream Splitter (DirectShow MPEG-1 Stream Splitter) 現在還支援視訊串流和服務串流。
    • 已實現用於解碼 MPEG-1 格式視訊的過濾器(DirectShow MPEG-1 視訊解碼器)。
  • 輸入設備
    • DirectInput 支援動作映射,讓您可以將遊戲控制器上的按鈕綁定到遊戲中的特定動作。
  • 桌面集成
    • 綁定已匯出到主用戶環境,允許在Wine 下運行的應用程式在開啟URL 時被呼叫為協定處理程序(例如,在開啟「spotify:user:spotify:playlist:848218482355482821」等連結時啟動Spotify.exe )。
    • 實現了 EDID(擴展顯示識別數據)數據的提取,其中包含有關所連接顯示器的參數信息,例如設備的名稱和型號。
    • 可以使用「開始」功能表中的「退出桌面」按鈕關閉以全螢幕模式部署的桌面視窗。
  • 國際化
    • 擴展了對 IME(輸入法編輯器)的支援。已完成工作以確保與本機 Windows IME 實現的兼容性並改進與 Linux IME 的集成
    • 已提供從 Unicode CLDR(Unicode 通用區域設定資料儲存庫)版本 44 資料庫產生 locale.nls 格式的區域設定資料庫。支援其他區域設定 bew-ID、blo-BJ、csw-CA、ie-EE、mic-CA , prg-PL 已新增、skr-PK、tyv-RU、vmw-MZ、xnr-IN 和za-CN。
    • 該介面已翻譯成格魯吉亞語。提供 16 種語言的完整翻譯和 31 種語言的部分翻譯。
    • Unicode 字元表已更新至標準版本 15.1.0。時區資料庫已更新。
  • 核心(Windows 核心介面)
    • 發布的預設 Windows 版本是 Windows 10。
    • 對於PE格式的可執行文件,實現了對位址空間隨機化(ASLR)的支持,但將程式碼載入到記憶體中的位址尚未完全隨機化。
    • 已經實現了對弱碎片堆(LFH,低碎片堆)的支持,這提高了記憶體分配操作的效能。
    • 虛擬記憶體分配機制中添加了對記憶體預留(佔位符)的支持,允許應用程式預留虛擬記憶體的特定區域以供將來使用。
    • 可執行檔和函式庫的 64 位元載入器(載入器和預載器)以 PIE(位置無關執行檔)格式編譯,以釋放部分 32 位元位址空間。
    • 為 NT 系統呼叫和用戶回調呼叫提供了正確的堆疊展開。
  • 聯網功能
    • 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 偵錯器 (winedbg) 使用 Zydis 函式庫來反組譯 X86 機器指令。
    • WineCfg 介面中新增了在 64 位元平台上公開舊版 Windows(XP 之前)的功能,這可讓您使用 WoW64 模式執行舊版應用程式。
    • 所有內建圖形應用程式現在都在單獨的對話方塊中顯示錯誤訊息,而不是在控制台中顯示它們。
    • systeminfo 程式提供來自 WMI(Windows Management Instrumentation)資料庫的資訊的顯示。
    • 新增了 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、LibTiff 1.1.38、LibXml1.3 8.1.0 新版本。 .NET 平台實現的 Wine Mono 引擎已更新至版本 XNUMX。
    • 驅動程式 winewayland.drv 使用 Wayland 用戶端程式庫作為外部依賴項,以及 xkbcommon 和 xkbregistry 函式庫。
    • 為了支援智慧卡,使用外部庫 PCSClite(在 macOS 中為 PCSC)。
    • 現在,在非 i386 平台上建立 PE 檔案需要支援「.seh」指令的交叉編譯器來處理異常。

來源: opennet.ru

添加評論