Wine 7.0 穩定發布

經過一年的開發和 30 個實驗版本,Win32 API 的開放實現的穩定版本出現了 - Wine 7.0,其中包含了 9100 多個變更。 新版本的主要成就包括將大多數 Wine 模組轉換為 PE 格式、支援主題、擴展具有 HID 介面的操縱桿和輸入設備堆疊,以及實現在 Windows 中運行 64 位元程式的 WoW32 架構。64 位元環境。

Wine 已確認 5156 個(一年前 5049 個)程式可以在 Windows 上完整運行,另外 4312 個(一年前 4227 個)程式可以與其他設定和外部 DLL 完美配合。 3813 個程式(3703 年前)有輕微運行問題,但不影響應用程式主要功能的使用。

Wine 7.0 的主要創新:

  • PE格式的模組
    • 幾乎所有 DLL 都已轉換為使用 PE(可移植可執行文件,在 Windows 上使用)可執行文件格式,而不是 ELF。 PE 的使用解決了支援各種複製保護方案的問題,這些方案驗證磁碟和記憶體中的系統模組的身份。
    • 使用標準 NT 核心系統呼叫將 PE 模組與 Unix 庫互動的能力已經實現,這允許您隱藏 Windows 偵錯器對 Unix 程式碼的存取並監視執行緒註冊。
    • 現在,只有當磁碟上存在對應的 PE 檔案時才會載入內建 DLL,無論它是真正的程式庫還是存根。 此更改允許應用程式始終看到與 PE 檔案的正確綁定。 若要停用此行為,您可以使用 WINEBOOTSTRAPMODE 環境變數。
  • 魔獸64
    • WoW64架構(64位元Windows-on-Windows)已經實現,可讓您在32位元Unix流程中執行64位元Windows應用程式。 支援是透過連接一個層來實現的,該層將 32 位元 NT 系統呼叫轉換為對 NTDLL 的 64 位元呼叫。
    • WoW64層是為大多數Unix函式庫準備的,並允許32位元PE模組存取64位元Unix函式庫。 一旦所有模組都轉換為 PE 格式,就可以運行 32 位元 Windows 應用程序,而無需安裝 32 位元 Unix 庫。
  • 主題
    • 主題支援已實現。 包括「淺色」、「藍色」和「經典藍色」的設計主題,可以透過 WineCfg 配置器進行選擇。
    • 新增了透過主題自訂所有介面控制項的外觀的功能。 更改設計主題後,元素的外觀會自動更新。
    • 所有內建 Wine 應用程式均已新增主題支援。 應用程式已適應高像素密度(高 DPI)的螢幕。
  • 圖形子系統
    • 新增了新的Win32u庫,其中包括與核心級圖形處理和視窗管理相關的GDI32和USER32庫的部分內容。 將來,我們將開始將 winex32.drv 和 winemac.drv 等驅動程式元件移植到 Win11u。
    • Vulkan 驅動程式支援 Vulkan 圖形 API 規格 1.2.201。
    • 支援透過 Direct2D API 輸出陰影幾何對象,並能夠檢查單擊是否命中(命中測試)。
    • Direct2D API 為使用 ID2D1Effect 介面應用的視覺效果提供了初步支援。
    • Direct2D API 增加了對 ID2D1MultiThread 介面的支持,該介面用於組織對多執行緒應用程式中的資源的獨佔存取。
    • WindowsCodecs 庫集支援解碼 WMP (Windows Media Photo) 格式的映像檔和編碼 DDS (DirectDraw Surface) 格式的映像檔。 我們不再支援以 ICNS 格式(適用於 macOS)對影像進行編碼,Windows 上也不支援這種格式。
  • Direct3D
    • 新的渲染引擎得到了顯著改進,將 Direct3D 呼叫轉換為 Vulkan 圖形 API。 在大多數情況下,基於 Vulkan 的引擎對 Direct3D 10 和 11 的支援等級已與舊的基於 OpenGL 的引擎持平。 若要啟用 Vulkan 渲染引擎,請將 Direct3D 登錄變數「renderer」設定為「vulkan」。
    • 實現了Direct3D 10 和11 的許多功能,包括延遲上下文、在裝置上下文中操作的狀態物件、緩衝區中的持久偏移、清除無序紋理視圖、以無類型格式(DXGI_FORMAT_BC3_TYPELESS、DXGI_FORMAT_R32G32B32A32_TYPELESS)在資源之間複製資料等。
    • 新增了對多顯示器配置的支持,可讓您選擇顯示器以全螢幕模式顯示 Direct3D 應用程式。
    • DXGI API 提供螢幕伽瑪校正,基於 Direct3D 10 和 11 的應用程式可以使用該校正來變更螢幕亮度。 啟用虛擬幀緩衝區計數器 (SwapChain) 的檢索。
    • Direct3D 12 新增了對 1.1 版根簽章的支援。
    • 在透過Vulkan API的渲染程式碼中,當系統支援VK_EXT_host_query_reset擴充時,查詢處理的效率就提高了。
    • 新增瞭如果 OpenGL 或 Vulkan 無法用於顯示,例如在基於 CEF(Chromium Embedded Framework)框架的程式中從不同進程輸出到視窗時,透過 GDI 輸出虛擬幀緩衝區(SwapChain)的功能。
    • 使用 GLSL 著色器後端時,可確保著色器指令的「精確」修飾符。
    • DirectDraw API 使用「RGB」、「MMX」和「Ramp」等軟體裝置新增了對系統記憶體中 3D 渲染的支援。
    • AMD Radeon RX 3M、AMD Radeon RX 5500/6800 XT/6800 XT、AMD Van Gogh、Intel UHD Graphics 6900 和 NVIDIA GT 630 卡已加入 Direct1030D 顯示卡資料庫。
    • 「UseGLSL」鍵已從 HKEY_CURRENT_USER\Software\Wine\Direct3D 註冊表中刪除,從 Wine 5.0 開始,您需要使用「shader_backend」。
    • 為了支援 Direct3D 12,您現在至少需要 3 版的 vkd1.2d 函式庫。
  • D3DX
    • D3DX 10 實現改進了對視覺效果框架的支持,並添加了對 Windows Media Photo 影像格式 (JPEG XR) 的支持
    • 新增了D3DX10中提供的紋理建立函數,例如D3DX10CreateTextureFromMemory()。
    • ID3DX10Sprite 和 ID3DX10Font 軟體介面已部分實作。
  • 聲音和視頻
    • DirectShow 的 GStreamer 附加元件和 Media Foundation 框架合併到一個通用的 WineGStreamer 後端中,這應該會簡化新內容解碼 API 的開發。
    • 基於WineGStreamer後端,實作了Windows Media物件的同步與非同步讀取。
    • 媒體基礎框架的實現得到了進一步細化,增加了對 IMFPMediaPlayer 功能和樣本分配器的支持,並改進了對 EVR 和 SAR 渲染緩衝區的支援。
    • 提供 QuickTime 格式解碼器的 wineqtdecoder 庫已被刪除(所有編解碼器現在都使用 GStreamer)。
  • 輸入設備
    • 支援 HID(人機介面設備)協定的輸入設備堆疊得到了顯著改進,提供了解析 HID 描述符、處理 HID 訊息和提供 mini-HID 驅動程式等功能。
    • 在 winebus.sys 驅動程式的後端,設備描述到 HID 訊息的轉換得到了改進。
    • 為支援 HID 協定的操縱桿新增了新的 DirectInput 後端。 在操縱桿中使用回饋效果的功能已經實現。 改進的操縱桿控制面板。 優化與 XInput 相容裝置的互動。 在 WinMM 中,操縱桿支援已移至 DInput,而不是在 Linux 上使用 evdev 後端,在 macOS IOHID 上使用 IOHID。 舊的操縱桿驅動程式 winejoystick.drv 已被刪除。
    • 基於虛擬 HID 設備的使用且不需要實體設備,DInput 模組中新增了新的測試。
  • 文字和字體
    • 將字體集物件新增至 DirectWrite。
    • RichEdit 正確實作了 TextHost 介面。
  • 核心(Windows 核心介面)
    • 當在 Wine 中執行未識別的可執行檔(例如「wine foo.msi」)時,現在會呼叫 start.exe,它會呼叫與該檔案類型關聯的處理程序。
    • 新增了對同步機制 NtAlertThreadByThreadId 和 NtWaitForAlertByThreadId 的支持,類似於 Linux 中的 futexes。
    • 新增了對用於調試內核函數的 NT 偵錯物件的支援。
    • 新增了對動態註冊表項的支援以保存效能資料。
  • C運行時
    • C 運行時實作了一整套數學函數,這些函數主要是從 Musl 函式庫繼承而來的。
    • 所有 CPU 平台都提供對浮點函數的正確支援。
  • 聯網功能
    • 改進了 Internet Explorer 11 (IE11) 的相容性模式,現在預設使用該模式來處理 HTML 文件。
    • mshtml 函式庫實作了 ES6 JavaScript 模式 (ECMAScript 2015),該模式提供對 let 表達式和 Map 物件等功能的支援。
    • 現在,必要時(而不是在 Wine 更新期間)可以將帶有 Gecko 引擎附加內容的 MSI 軟體套件安裝到 Wine 工作目錄中。
    • 新增了對 DTLS 協定的支援。
    • 已實現NSI(網路儲存介面)服務,儲存並傳輸電腦上的路由和網路介面資訊給其他服務。
    • WinSock API 處理程序(例如setsockopt 和getsockopt)已移至NTDLL 和afd.sys 驅動程式以符合Windows 體系結構。
    • Wine自己的網路資料庫文件,例如/etc/protocols和/etc/networks,現在安裝在Wine工作目錄中,而不是存取類似的Unix資料庫。
  • 替代平台
    • 增加了對基於 M1 ARM 晶片(Apple Silicon)的 Apple 裝置的支援。
    • 現在,在 macOS 上支援 BCrypt 和 Secur32 功能需要安裝 GnuTLS 庫。
    • ARM 平台的 32 位元可執行檔現在以 Thumb-2 模式構建,類似於 Windows。 預加載器用於載入此類文件。
    • 對於 32 位元 ARM 平台,已實現對展開異常的支援。
    • 對於 FreeBSD,支援查詢低階系統資訊(例如記憶體狀態和電池電量等級)的數量已擴展。
  • 內建應用程式和開發工具
    • reg.exe 公用程式新增了對 32 位元和 64 位元登錄視圖的支援。 新增了對複製註冊表項的支援。
    • WineDump 實用程式新增了對轉儲 Windows 元資料和顯示有關 CodeView 條目的詳細資訊的支援。
    • Wine 偵錯器 (winedbg) 提供了從 32 位元偵錯工具偵錯 64 位元進程的能力。
    • IDL 編譯器 (widl) 中新增了載入 PE 檔案中內建程式庫的功能,提供了對 WinRT 特定屬性和構造的支持,並實現了特定於平台的庫搜尋。
  • 組裝系統
    • 在特定於架構的目錄中,庫現在以反映架構和可執行類型的名稱保存,例如 PE 格式的“i386-windows”和 unix 庫的“x86_64-unix”,從而允許在單個 Wine 中支援不同的架構安裝並提供Winelib的交叉編譯。
    • 為了在 PE 檔案頭中設定一個選項來控製到使用本機 DLL 的轉換,'--prefer-native option' 標誌已新增至 winebuild(DllMain 中的 DLL_WINE_PREATTACH 處理已停止)。
    • 新增了對 Dwarf 偵錯資料格式第 4 版的支持,現在在建置 Wine 庫時預設使用該格式。
    • 新增了建置選項“—enable-build-id”以在可執行檔中保存唯一的建置識別碼。
    • 新增了在 MSVC 相容模式下使用 Clang 編譯器的支援。
  • 雜記
    • 使用者 shell (Windows Shell) 中典型目錄的名稱是根據從 Windows Vista 開始使用的方案指定的,即現在創建了“Documents”目錄,而不是“我的文檔”,並且大部分資料都保存到“AppData”目錄中。
    • OpenCL 庫層新增了對 OpenCL 1.2 規範的支援。
    • WinSpool 驅動程式新增了列印時對不同頁面尺寸的支援。
    • 新增了對 MSDASQL(用於 ODBC 驅動程式的 Microsoft OLE DB 提供者)的初始支援。
    • .NET 平台實現的 Wine Mono 引擎已更新至版本 7.0.0。
    • Unicode 資料已更新為 Unicode 14 規範。
    • 原始碼樹包括 Faudio、GSM、LCMS2、LibJPEG、LibJXR、LibMPG123、LibPng、LibTiff、LibXml2、LibXslt 和 Zlib 函式庫,這些函式庫以 PE 格式編譯,不需要 Unix 格式的版本。 同時,這些庫也可以從系統匯入,以使用外部組件而不是內建的PE選項。

來源: opennet.ru

添加評論