经过一年的开发和28个实验版本
葡萄酒中
钥匙
- 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),如果沿着路径进一步,可以找到适合当前位深度的库;
- 对于设备驱动程序,内核对象的模拟已得到改进;
- 实现了在内核级别工作的同步对象,例如自旋锁、快速互斥体和附加到资源的变量;
- 确保应用程序正确了解电池状态;
- Kernel32 中使用的大部分函数已移至
- 用户界面和桌面集成
- 输入设备
- 启动时,安装并加载必要的即插即用设备驱动程序;
- 改进了对游戏控制器的支持,包括迷你操纵杆(帽子开关)、方向盘、油门和制动踏板。
- 对 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接轨;
- DirectWrite API 实现添加了对 OpenType 相关功能的支持
- 声音和视频
- 已提出声音 API 的新实现
X音频2 ,建立在项目的基础上音频 。在Wine中使用FAudio可以让您在游戏中获得更高的音质并使用音量混合和高级音效等功能; - Media Foundation框架的实现中添加了大量新的调用,包括对内置和自定义异步队列、Source Reader API、Media Session等的支持。
- 视频捕获过滤器已切换为使用v4l2 API而不是v4l1 API,这扩大了支持的相机范围;
- 内置的 AVI、MPEG-I 和 WAVE 解码器已被删除,取而代之的是系统 GStreamer 或 QuickTime;
- 添加了 VMR7 配置 API 的子集;
- 添加了对声音驱动程序各个通道音量调节的支持;
- 已提出声音 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”、“—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