Wine 5.0 穩定發布

經過一年的開發和28個實驗版本 提出了 Win32 API 的開放實作的穩定版本 - 葡萄酒5.0,其中包括 7400 多項變更。 新版本的主要成就包括以 PE 格式提供內建 Wine 模組、支援多顯示器配置、XAudio2 音訊 API 的新實作以及對 Vulkan 1.1 圖形 API 的支援。

葡萄酒中 確認的 完全運行 4869 個(一年前 4737 個)Windows 程序,另外 4136 個(一年前 4045 個)程序可以與其他設定和外部 DLL 完美配合。 3635 個程式有輕微效能問題,但不會影響基本應用程式功能的使用。

鑰匙 創新 葡萄酒5.0:

  • PE格式的模組
    • 有了 MinGW 編譯器,大多數 Wine 模組現在都以 PE(可移植可執行文件,在 Windows 上使用)可執行文件格式而不是 ELF 建置。 PE的使用解決了支援各種複製保護方案的問題,這些解決方案驗證磁碟和記憶體中系統模組的身份;
    • PE 可執行檔現在被複製到 ~/.wine ($WINEPREFIX) 目錄,而不是使用虛擬 DLL 文件,使這些內容更類似於真實的 Windows 安裝,但代價是消耗額外的磁碟空間;
    • 轉換為PE格式的模組可以使用標準 字符 具有 Unicode 的 C 函數和常數(例如,L"abc");
    • Wine C 執行階段新增了與 MinGW 內建二進位檔案連結的支持,在建置 DLL 時預設使用 MinGW 執行階段;
  • 圖形子系統
    • 新增了對使用多個顯示器和圖形適配器的支持,包括動態變更設定的能力;
    • Vulkan圖形API的驅動程式已更新,以符合Vulkan 1.1.126規範;
    • WindowsCodecs 函式庫提供了轉換其他光柵格式的能力,包括帶有索引調色板的格式;
  • Direct3D
    • 執行全螢幕Direct3D應用程式時,螢幕保護程式呼叫被阻止;
    • DXGI(DirectX 圖形基礎設施)增加了在視窗最小化時通知應用程式的支持,這使得應用程式可以在最小化視窗時降低資源密集型操作的效能;
    • 對於使用 DXGI 的應用程序,現在可以使用 Alt+Enter 組合在全螢幕和視窗模式之間切換;
    • Direct3D 12 實現的功能得到了擴展,例如,現在支援在全螢幕和視窗模式之間切換、更改螢幕模式、縮放輸出以及管理渲染緩衝區替換間隔(交換間隔);
    • 改進了對各種邊界情況的處理,例如使用超出範圍的輸入值進行透明度和深度測試、使用反射紋理和緩衝區進行渲染以及使用不正確的 DirectDraw 對象 限幅器、為不正確的視窗建立Direct3設備、使用最小參數值等於最大值的可見區域等。
    • Direct3D 8 和 9 提供更準確的追蹤”骯髒的» 載入紋理的區域;
    • 載入使用 S3TC 方法壓縮的 3D 紋理時所需的位址空間大小已減少(不是完全加載,而是分塊載入紋理)。
    • 介面實現 ID3D11多線程 保護多執行緒應用程式中的關鍵部分;
    • 對舊版 DirectDraw 應用程式進行了與光照計算相關的各種改進和修復;
    • 實作了額外的呼叫來獲取 API 中有關著色器的信息 著色器反射;
    • wined3d 現在支持 碎塊 基於CPU處理壓縮資源;
    • Direct3D 識別的顯示卡資料庫已擴充;
    • 新增了新的登錄項目HKEY_CURRENT_USER\Software\Wine\Direct3D:「shader_backend」(用於使用著色器的後端:「glsl」用於GLSL,「arb」用於ARB 頂點/片段,「none」用於停用著色器支援)、「strict_shader_math」( 0x1 - 啟用,0x0 - 停用 Direct3D 著色器轉換)。 已棄用「UseGLSL」鍵(應使用「shader_backend」);
  • D3DX
    • 已實現對3D紋理壓縮機制S3TC(S3紋理壓縮)的支援;
    • 添加了紋理填充和不可映射表面等操作的正確實現;
    • 對創建框架進行了各種改進和修復 視覺效果;
  • 核心(Windows 核心介面)
    • Kernel32 中使用的大部分函數已移至
      KernelBase,跟隨Windows架構的變化;

    • 能夠在用於載入的目錄中混合 32 位元和 64 位元 DLL。 確保忽略與當前位元深度不匹配的庫(32/64),如果沿著路徑進一步,可以找到適合當前位元深度的庫;
    • 對於設備驅動程序,內核物件的模擬已得到改進;
    • 實現了在核心層級工作的同步對象,例如自旋鎖、快速互斥體和附加到資源的變數;
    • 確保應用程式正確了解電池狀態;
  • 使用者介面和桌面集成
    • 現在使用標題列而不是 Windows 3.1 樣式圖示顯示最小化視窗;
    • 新增了新的按鈕樣式 拆分按鈕 (帶有操作下拉清單的按鈕)和 命令連結 (對話框中的連結用於進入下一階段);
    • 已為“Downloads”和“Templates”資料夾建立了符號鏈接,指向 Unix 系統上的相應目錄;
  • 輸入設備
    • 啟動時,安裝並載入必要的即插即用裝置驅動程式;
    • 改進了對遊戲控制器的支持,包括迷你操縱桿(帽子開關)、方向盤、油門和煞車踏板。
    • 對 2.2 版本之前的 Linux 核心中使用的舊 Linux 操縱桿 API 的支援已停止;
  • 。NET
    • Mono 引擎已更新至 4.9.4 版,現在包含 Windows Presentation Foundation (WPF) 框架的部分內容;
    • 新增了在一個公共目錄中安裝 Mono 和 Gecko 附加元件的功能,將檔案放置在 /usr/share/wine 層次結構中,而不是將它們複製到新的前綴;
  • 聯網功能
    • MSHTML 庫中使用的 Wine Gecko 瀏覽器引擎已更新至版本 2.47.1。 已實現對新 HTML API 的支援;
    • MSHTML 現在支援 SVG 元素;
    • 新增了許多新的 VBScript 函數(例如,錯誤和異常處理程序、Hour、Day、Month、String、LBound、RegExp.Replace、РScriptTypeInfo_* 和 ScriptTypeComp_Bind* 函數等);
    • 提供 VBScript 和 JScript 中程式碼狀態的儲存(腳本持久性);
    • 為使用 HTTP 協定傳送和接收請求的用戶端和伺服器應用程式新增了 HTTP 服務 (WinHTTP) 和關聯 API (HTTPAPI) 的初始實作;
    • 實現了透過 DHCP 取得 HTTP 代理設定的功能;
    • 新增了對透過 Microsoft Passport 服務重新導向身份驗證請求的支援;
  • 密碼學
    • 使用 GnuTLS 時實現了對橢圓曲線加密金鑰 (ECC) 的支援;
    • 新增了從 PFX 格式的檔案匯入金鑰和憑證的功能;
    • 增加了對基於PBKDF2密碼的密鑰產生方案的支援;
  • 文字和字體
    • DirectWrite API 實作新增了對 OpenType 相關功能的支持 字形定位,預設為拉丁風格啟用,包括字距調整;
    • 透過在使用前檢查各種資料表的正確性,提高處理字體資料的安全性;
    • DirectWrite介面已與最新SDK接軌;
  • 聲音和視頻
    • 已提出聲音 API 的新實現 X音訊2,建立在專案的基礎上 音頻。 在Wine中使用FAudio可以讓您在遊戲中獲得更高的音質並使用音量混合和高級音效等功能;
    • Media Foundation框架的實作中新增了大量新的調用,包括對內建和自訂非同步佇列、Source Reader API、Media Session等的支援。
    • 視訊擷取過濾器已切換為使用v4l2 API而不是v4l1 API,這擴大了支援的相機範圍;
    • 內建的 AVI、MPEG-I 和 WAVE 解碼器已被刪除,取而代之的是系統 GStreamer 或 QuickTime;
    • 新增了 VMR7 配置 API 的子集;
    • 增加了對聲音驅動程式各個頻道音量調整的支援;
  • 國際化
    • Unicode 表格更新至版本 12.1.0;
    • 實現了對 Unicode 規範化的支援;
    • 提供根據目前語言環境自動安裝地理區域(HKEY_CURRENT_USER\Control Panel\International\Geo);
  • 遠程過程呼叫/通信
    • 為 typelib 添加了對複雜結構和數組的支援;
    • 新增了Windows Script運行時庫的初始實作;
    • 新增了 ADO(Microsoft ActiveX 資料物件)庫的初始實作;
  • 安裝人員
    • MSI 安裝程式已實現對補丁(補丁檔案)交付的支援;
    • WUSA(Windows 更新獨立安裝程式)實用程式現在能夠安裝 .MSU ​​格式的更新;
  • ARM平台
    • 對於 ARM64 架構,ntdll.dll 中新增了對堆疊展開的支援。 新增了對連接外部 libunwind 庫的支援;
    • 對於ARM64架構,已經為物件介面實現了對無縫代理的支援;
  • 開發工具/Winelib
    • 新增了使用 Visual Studio 中的偵錯器遠端偵錯 Wine 中運行的應用程式的功能;
    • DBGENG(調試引擎)庫已部分實現;
    • 為Windows編譯的二進位檔案不再依賴libwine,允許它們在Windows上運行而無需額外的依賴;
    • 在資源編譯器和 IDL 編譯器中新增了「--sysroot」選項以確定頭檔的路徑;
    • 向 winegcc 新增了 '—target'、'—wine-objdir' 選項
      '—winebuild' 和 '-fuse-ld',簡化了交叉編譯環境的設定;

  • 嵌入式應用
    • 實作了 CHCP 實用程式來配置控制台編碼;
    • 用於操作 MSI 格式資料庫的 MSIDB 實用程式已實作;
  • 優化性能
    • 各種計時功能已遷移為使用高效能係統計時器功能,減少了許多遊戲渲染循環的開銷;
    • 新增了在 FS 中使用 Ext4 的功能 政權 工作時不區分大小寫;
    • 優化了在 LBS_NODATA 模式下操作的清單顯示對話方塊中處理大量元素的效能;
    • 為 Linux 添加了 SRW 鎖(Slim Reader/Writer)的更快實現,翻譯為 Futex;
  • 外部依賴
    • 為了組裝PE格式的模組,使用了MinGW-w64交叉編譯器;
    • 實作XAudio2需要FAudio函式庫;
    • 追蹤 BSD 系統上的檔案更改
      使用 Inotify 函式庫;

    • ARM64平台上處理異常需要Unwind函式庫;
    • 現在需要 Video4Linux1 函式庫,而不是 Video4Linux2。

來源: opennet.ru

添加評論