經過一年的開發和 28 個實驗版本 Win32 API 開源實作的穩定版本 — ,其中包括 7400 多處修改。新版本的主要成就包括提供 PE 格式的內建 Wine 模組、支援多顯示器配置、新實作 XAudio2 聲音 API 以及支援 Vulkan 1.1 圖形 API。
在葡萄酒中 4869 個項目(一年前為 4737 個)已全面完成 Windows另有 4136 個程式(一年前為 4045 個)在添加額外設定和外部 DLL 後運行完美。 3635 個程式存在一些小問題,但不影響應用程式的基本功能。
鑰匙 葡萄酒 5.0:
- PE格式的模組
- 借助 MinGW 編譯器,大多數 Wine 模組現在都建置在 PE(可移植可執行檔)中。 Windows使用 PE 而不是 ELF。使用 PE 解決了支援各種複製保護方案的問題,這些方案可以驗證磁碟和記憶體中系統模組的身份;
- 現在,PE 執行檔會被複製到 ~/.wine ($WINEPREFIX) 目錄,而不是使用虛擬 DLL 文件,這使得安裝過程更接近真實的安裝過程。 Windows但代價是會佔用額外的磁碟空間;
- 轉換為 PE 格式的模組可以使用標準 帶有 Unicode 的 C 函數和常數(例如,L»abc»);
- Wine C 運行時已更新,以支援連結使用 MinGW 建立的二進位文件,在建置 DLL 時預設使用它而不是 MinGW 運行時;
- 圖形子系統
- 增加了使用多台顯示器和圖形適配器的支持,包括動態變更設定的能力;
- Vulkan 圖形 API 的驅動程式已更新,符合 Vulkan 1.1.126 規範;
- 在圖書館 Windows編解碼器實現了轉換其他柵格格式的功能,包括帶有索引調色板的格式;
- Direct3D
- 執行全螢幕 Direct3D 應用程式時,螢幕保護程式呼叫被阻止;
- DXGI(DirectX圖形基礎架構)現在支援在應用程式視窗最小化時通知應用程序,從而允許應用程式減少在視窗最小化時執行的資源密集型操作量;
- 對於使用DXGI的應用程序,已經實現了使用Alt+Enter組合在全螢幕和視窗模式之間切換的功能;
- Direct3D 12 的實作能力得到了擴展,例如增加了對全螢幕和視窗模式切換、更改螢幕模式、縮放輸出、管理渲染緩衝區的交換間隔的支援;
- 改進了對各種邊緣情況的處理,例如使用超出範圍的來源值進行透明度和深度測試、使用反射紋理和緩衝區進行渲染以及使用無效的 DirectDraw 對象 、為不正確的視窗建立Direct3設備、使用最小參數值等於最大值的可見區域等等。
- Direct3D 8 和 9 提供更精確的追蹤“» 已載入紋理的區域;
- 減少了使用 S3TC 方法壓縮的 3D 紋理加載時所需的位址空間大小(不是完全加載,而是分塊加載紋理)。
- 介面已實現 保護多執行緒應用程式中的關鍵部分;
- 對舊版 DirectDraw 應用程式進行了與照明計算相關的各種改進和修復;
- 實作了額外的呼叫來在 API 中獲取著色器信息 ;
- 增加了對 wined3d 的支持 基於CPU處理壓縮資源;
- 擴展了Direct3D辨識的顯示卡資料庫;
- 新增了新的登錄項目 HKEY_CURRENT_USER\Software\Wine\Direct3D:「shader_backend」(用於使用著色器的後端:「glsl」表示 GLSL,「arb」表示 ARB 頂點/片段,「none」表示停用著色器支援)、「strict_shader_math」(0x1)(0) 0 著色棄用“UseGLSL”鍵(使用“shader_backend”);
- D3DX
- 實現了對S3TC(S3紋理壓縮)3D紋理壓縮機制的支援;
- 添加了紋理填充和不可映射表面等操作的正確實現;
- 創作框架進行了多項改進與修復 ;
- 核心(核心介面) Windows)
- Kernel32 中使用的大多數函數已移至
KernelBase,隨著架構的變更 Windows; - 能夠在用於載入的目錄中混合 32 位元和 64 位元 DLL。確保忽略與當前位元深度不匹配的庫(32/64),以防沿著這條路徑進一步找到適合當前位元深度的函式庫;
- 改進的設備驅動程式的核心物件模擬;
- 實現了核心級同步對象,例如自旋鎖、快速互斥鎖和資源附加變數;
- 確保正確通知應用程式有關電池狀態的資訊;
- Kernel32 中使用的大多數函數已移至
- 使用者介面和桌面集成
- 最小化的視窗現在使用標題列而不是樣式圖示顯示。 Windows 3.1;
- 新增了新的按鈕樣式 (帶有操作下拉清單的按鈕)和 (對話框中的連結用於進入下一階段);
- 已為「下載」和「範本」資料夾建立符號鏈接,指向 Unix 系統上的相應目錄;
- 輸入設備
- 在啟動時,安裝並載入必要的即插即用裝置驅動程式;
- 改進了對遊戲控制器的支持,包括帽子開關、方向盤、油門和煞車踏板。
- 舊版已停止支援。 Linux 核心中使用的遊戲桿互動 API Linux 最高版本 2.2;
- 。NET
- Mono引擎已更新至4.9.4版本,現在包含框架的部分內容。 Windows 演示基礎(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 實現 ,在專案基礎上構建 。在 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 腳本;
- 新增了 ADO(Microsoft ActiveX 資料物件)庫的初始實作;
- 安裝程式
- 已經實現了為 MSI 安裝程式提供補丁(補丁檔案)的支援;
- 在 WUSA 實用程式中(Windows 更新獨立安裝程式)現在允許您以 .MSU 格式安裝更新;
- ARM 平台
- 對於 ARM64 架構,ntdll 中新增了堆疊展開支援。增加了連接外部庫libunwind的支援;
- 對於ARM64架構,已經為物件介面實現了對無縫代理的支援;
- 開發工具/Winelib
- 增加了使用 Visual Studio 中的偵錯器遠端偵錯在 Wine 中運行的應用程式的功能;
- DBGENG(調試引擎)庫已部分實現;
- 收集 Windows 這些可執行檔不再依賴 libwine,因此可以在下列環境中執行: Windows 無其他依賴項;
- 資源編譯器和IDL編譯器增加了‘--sysroot’選項來定義放置頭檔的路徑;
- 為 winegcc 新增了選項 '--target'、'--wine-objdir',
'--winebuild' 和 '-fuse-ld',簡化交叉編譯環境的設定;
- 嵌入式應用
- 實作了用於配置控制台編碼的 CHCP 實用程式;
- 已經實現了 MSIDB 實用程序,用於操作 MSI 格式的資料庫;
- 優化性能
- 各種時間管理功能已遷移至使用高效能係統計時器功能,從而減少了許多遊戲的渲染循環中的開銷;
- 增加了在 Ext4 FS 中使用的能力 不考慮字元的大小寫;
- 優化了以LBS_NODATA模式運行的列表輸出對話框中處理大量元素的效能;
- 為 SRW 鎖(Slim Reader/Writer)添加了更快的實作方式 Linux翻譯成 Futex;
- 外部依賴
- 為了建構 PE 格式的模組,使用 MinGW-w64 交叉編譯器;
- XAudio2的實作需要FAudio函式庫;
- 追蹤 BSD 系統上的檔案更改
使用 Inotify 函式庫; - 為了處理ARM64平台上的異常,需要Unwind函式庫;
- 而不是 Video4Linux1 現在需要 Video4 函式庫Linux2.
來源: opennet.ru
