经过一年的开发和 29 个实验版本,Win32 API 的开放实现的稳定版本 - Wine 10.0 发布,其中包含了 6000 多个更改。新版本的主要成就包括全面支持 ARM64EC 架构、在高像素密度的屏幕上缩放、默认包含 Wayland 驱动程序、实现用于设置屏幕和操纵杆的面板、基于 FFmpeg 的替代多媒体后端、蓝牙驱动程序、Vulkan 1.4 支持、切换视频模式的仿真能力。
已确认 5372 个程序可以在 Wine 中正常运行 Windows (一年前有 5336 个,两年前有 5266 个,三年前有 5156 个),另有 4435 个程序(一年前有 4397 个,两年前有 4370 个,三年前有 4312 个)在添加额外设置和外部 DLL 后运行良好。4020 个程序(一年前有 3943 个,两年前有 3888 个,三年前有 3813 个)存在一些小问题,但不影响应用程序的基本功能。
Wine 10.0 的主要创新:
- ARM64
- 为ARM64EC(ARM64 Emulation Compatible)架构提供全面支持,Wine 中的支持水平已达到与 ARM64 架构相当的水平。 ARM64EC 架构旨在简化最初为 x64_86 系统编写的应用程序到 ARM64 系统的移植,并允许单独的 x64_86 代码模块使用模拟器在 ARM64 环境中运行。
- 已实现对 ARM64X PE 文件格式的全面支持,允许您将 ARM64EC 和 ARM64 架构的代码合并到一个可执行文件中。要以 ARM64X 格式构建 Wine,您需要从 Git 安装 LLVM(必要的功能将包含在 LLVM 20 版本中),并在运行“configure”脚本时指定“-enable-archs=arm64ec,aarch64”选项。
- 用于模拟 64 位 x86 系统的接口已实现。当使用 ARM64EC 时,Wine 本身按原样运行,并且仿真仅应用于 x86-64 应用程序代码。带有模拟器的库尚未包含在主 Wine 包中,但要在 ARM86 环境中运行 x64-64 代码,您可以使用带有 ARM64EC 支持的外部 FEX 模拟器。
- ARM64 支持要求系统使用 ABI 要求的 4KB 内存页。 Windows (在带有内核的环境中运行) Linux(目前尚不支持使用 16K 或 64K 内存页)。
- 图形子系统
- 在高像素密度(高 DPI)的屏幕上实现了更准确的缩放。提供了对 DPI 感知模式的支持,以组织应用程序在高像素密度屏幕上的显示,同时考虑应用程序是否支持适应 DPI 变化(不考虑 DPI 的应用程序会自动缩放)。添加了选项来覆盖单个应用程序或 Wine 前缀的高 DPI 支持。
- Vulkan 图形 API 的驱动程序中添加了对 Vulkan 1.4 规范的支持(Wine 9.0 支持 Vulkan 1.3.272)。添加了对视频编码和解码的 Vulkan 扩展的支持。
- 使用 X11 后端时,已经实现了为使用此类窗口显示 3D 内容的应用程序渲染 Vulkan 子窗口的功能(此前,此类功能仅适用于 OpenGL)。
- GdiPlus 库中添加了对字体链接机制的支持,如果没有单独覆盖文本中所有字符的字体,它允许您在显示文本时使用多种字体。
- 韦兰
- 默认配置包含 winewayland.drv 驱动程序,它允许 Wine 在基于 Wayland 的环境中运行,而无需使用 XWayland 或 X11 组件。仅当 XWayland 不可用时,Wine 才会直接在 Wayland 上启动默认应用程序;否则,XWayland 是首选启动器。要强制使用 Wayland,您可以使用 DISPLAY 环境变量,或者通过创建 file.reg 文件来添加注册表项: Windows 注册表编辑器版本 5.00 [HKEY_CURRENT_USER\Software\Wine\Drivers] "Graphics" = "wayland",并使用以下命令应用更改:$ WINEPREFIX = /path/to/prefix wine regedit /path/to/file.reg
- 向 winewayland.drv 驱动程序添加了对 OpenGL 和像素缓冲区 (pBuffer) 的支持。
- 解决了基于 Wayland 的环境中弹出窗口定位的问题。
- 使用 Wayland 时,实现了对按住按键时自动重复按键的支持。
- 桌面集成
- 添加了实验性的“模式设置”模拟机制,允许您模拟切换视频模式,而无需实际更改屏幕设置。通过扩展和缩放窗口来创建无需切换视频模式即可更改屏幕分辨率的可见性。
- 添加了新的桌面控制面板小程序 (desk.cpl),并实现了用于管理显示设置的界面(例如,您可以更改桌面的虚拟分辨率或配置模拟显示参数)。
- 添加了在进程崩溃后无法恢复状态时将屏幕设置重置为默认值的功能。
- 新增了禁用系统托盘图标显示的功能(位于“HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer”应指定“NoTrayItemsDisplay=1”。
- 添加了在桌面模式下禁用 shell(Shell 启动器)的支持(位于“HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" 应指定“NoDesktop=1”。
- Direct3D
- 使用 OpenGL 渲染现在需要支持 GLSL 1.20,以及 EXT_framebuffer_object 和 ARB_texture_non_power_of_two 扩展。对旧 ARB 着色器后端和 OffscreenRenderingMode 设置的支持已停止。
- 对于 Direct3D 9 及更早版本,添加了固定功能图形管道(旧版 Direct3D 只提供无法更改的预定义图形操作),使用 HLSL 着色器语言实现,并在通过 Vulkan 或 OpenGL API 渲染时允许固定功能模拟。
- Vulkan 渲染使用 Vulkan 扩展来动态更改图形管道的状态,从而减少游戏中的卡顿。
- 使用 vkd3d-shader 为 GLSL 着色器添加了替代 glsl-vkd3d 后端。
- 为使用 vkd3d-shader 编译 Direct3D 效果提供了初步支持。
- D3DX9 库实现了在加载体积纹理时生成 MIP 纹理 (MipMap) 的功能。添加了对 PNG 图像中 64bpp RGBA 和 48bpp RGB 颜色表示格式以及 X8L8V8U8、A2W10V10U10、A8P8、V16U16 和 Q16W16V16U16 格式的支持。
- 声音和视频
- 作为基于 GStreamer 的后端的替代方案,我们实现了一个新的多媒体后端,该后端基于 FFmpeg 的使用,并且适合运行 Media Foundation 框架。要启用替代后端,您应该在注册表部分“HKCU\Software\Wine\MediaFoundation”中指定“DisableGstByteStreamHandler=1”。
- Media Foundation API 的实现已得到改进,可以更好地适应依赖于解复用和解码组件的应用程序。
- DirectMusic API 添加了对加载 MIDI 文件的支持。
- 输入设备
- 添加了蓝牙驱动程序的初始版本。
- 添加了操纵杆控制面板小程序 (joy.cpl),并实现了操纵杆的设置。
- 对使用 HID(人机接口设备)协议的指针设备(触摸板、鼠标)进行了改进。新增了用于 HID 设备的 mouhid.sys 驱动程序。实现了对复合输入设备的正确解析,并且现在会将这些设备的信息传输到系统。 Windows应用程序,作为独立的设备。
- 对于X11后端,添加了对触摸屏的支持,并实现了通过处理WM_POINTER*消息(WM_POINTERENTER、WM_POINTERLEAVE等)使用多点触摸模式的能力。
- 在共享内存中实现了 user32 库的一些内部结构的放置,这提高了性能并减少了 Wine Server 上的负载。
- Winex11 添加了对处理与各个窗口相关的 XInput2 事件的支持。
- 使用 Dvorak 布局实现了对键盘的正确支持。
- 内核(内核接口) Windows)
- 添加了对进程权限升级的支持(最初以标准用户身份运行的进程可以被授予管理员权限)。创建服务器进程(msi 操作服务器)以及调用 RtlCreateUserProcess() 和 CreateProcessInternal() 函数的进程时,默认情况下会启用有限的管理员令牌。
- 现在,在获取有关磁盘标签的信息时,只要有可能,都会使用通过 DBus 访问系统服务,而不是尝试直接访问设备。
- Mailslots 单向进程间通信 (IPC) 机制现已直接在 Wine 服务器中实现,从而提供完整的语义支持。 Windows.
- 实现了异步方式等待串口事件。
- 在线程上下文中添加了对 XSTATE 处理器扩展的全面支持,允许使用新的向量扩展,例如 AVX-512。
- 嵌入式应用
- cmd.exe 命令解释器中使用的输入数据处理引擎已被重写。向 cmd.exe 添加了对“||”操作的支持和 ”&&”。
- findstr 实用程序添加了对正则表达式和不区分大小写搜索的支持。
- regsvr32 和 rundll32 实用程序中添加了注册 ARM64EC 模块的功能。
- 添加了实用程序:sort 用于对输入数据进行排序,fc 用于比较文件以及 where 用于搜索文件。
- wmic 应用程序实现了交互操作模式。
- 资源管理器添加了对开始菜单和工具栏的可选支持。启用了 explorer.exe 的启动,并降低了访问权限。
- 开发工具
- 向 winebuild 添加了“-marm64x”选项以生成 ARM64X 混合库。
- 向 winegcc 添加了“-marm64x”选项,以允许针对 ARM64X 进行构建。
- 使用接口定义语言 (IDL) 生成的文件使用完全支持在解释模式下执行的组件。
- IDL(接口定义语言)编译器中添加了对以旧格式 (SLTG) 生成类型库 (TypeLib) 的支持。
- winedump 实用程序添加了对保存小型转储表转储、C++ 异常信息和 typelib 资源的支持。
- 杂项
- 改进了对 Diffie-Hellman (DH) 密钥交换协议的支持。添加了配置和接收 DH 参数的功能。实现了用于创建公钥和私钥对的处理程序。
- 提供了增量填充 OAEP(最佳非对称加密填充)与 RSA 算法的使用。
- DirectPlay API 支持网络会话。
- 改进了在 WoW64(64 位)模式下工作时对异步输入/输出状态的处理。 Windows-上-Windows),这允许您运行 32 位程序。 Windows-64 位 Unix 系统上的应用程序。
- 新增了对加载为 DBMS 编译的 ODBC 驱动程序的支持 Windows.
- 对于ARM平台,实现了对RPC/COM、C++ RTTI(运行时类型信息)和C++异常的全面支持。
- 在 C 运行时中,ANSI 函数实现了对 UTF-8 编码的支持。
- MSHTML 引擎的功能得到了扩展。添加了对原型和对象构造函数的支持。 JavaScript 引擎中添加了新的 MSHTML 对象绑定接口。 MSHTML 内置函数已转换为有效的 JavaScript 对象。改进了 JavaScript 垃圾收集以覆盖线程中的所有脚本执行上下文。添加了对 ArrayBuffer 和 DataView JavaScript 对象的支持。
- 基于Gitlab的持续集成系统添加了对使用Clang和JUnit测试报告进行静态分析的支持。
- 包中内置了 Capstone 5.0.3 库,通过该库在 WineDb 调试器中实现反汇编。
- 组件更新到新版本:Vkd3d 1.14、Faudio 24.10、FluidSynth 2.4.0、LDAP 2.5.18、LCMS2 2.16、LibJpeg 9f、LibMPG123 1.32.9、LibPng 1.6.44、LibTiff 4.7.0、LibXml2 2.12.8、LibXslt 1.1.42 和 Zlib 1.3.1。
来源: opennet.ru
