Wine 1.8 发布
Wine 团队很高兴的向您宣布,稳定版的 Wine 1.8 现在发布了!
经过了17个月的开发,我们完成了 13000 处修改,最重要的是实现了 DirectWrite 和 Direct2D,以及新的 Pulse Audio 驱动。
这么多的改进可以让它支持许多新应用和游戏,具体请阅读下面的主要更新内容。
源代码
二进制下载
文档
Wine 的开发完成要感谢许许多多的人们的付出,参见发布里面的 AUTHORS 文件。
Wine 1.8 的主要更新内容
文本与字体
实现了 DirectWrite,并支持了一些应用。包括:可以从系统或指定字体集中载入字体、构建字体族、字体匹配算法、支持基本的字体布局等
字符表基于 Unicode 8.0.0
内置 Wingdings 字体
图形
支持 Direct2D。包括:绘制文字、支持位图、颜色笔刷和位图笔刷、透明度笔刷
PNG 文件可以以交错模式编码
可以从 PNG 文件中载入 Gamma 信息
GdiPlus 中正确支持了动画 GIF
Direct3D
支持 Direct3D 11,和对 Direct3D 10的支持程度差不多
支持使用 Direct3D 10的简单应用,但是仍有很多未实现的功能
实现了一些新的 DXGI 1.1 接口
Direct3D 应用可以正确的最小化和恢复显示
wined3d 显卡数据库现在可以识别更多的显卡。显卡检测代码进行了简化和改进
DirectDraw
SetCooperativeLevel() 工作得更好了,个别情况下影响到了 DirectDraw 排除模式
DirectDraw 模式控制支持得更好了,主要影响到使用 8-bpp 显示模式的老式应用
音频与视频
实现了一个 Pulse Audio 驱动,当 Pulse Audio 运行时会自动选择它
在 DirectSound 中支持了 5.1 环绕立体声
基于 OpenAL Soft 库实现了 XAudio2
实现了 Video Mixing Renderer 版本7
实现了 AVI 文件编码和压缩
内核
Wine 现在可以报告 'Windows8.1' 和 'Windows 10' 版本
支持了“仅初始化一次”同步机制
实现了条件变量
实现了廋读写锁
Windows 设备支持除了 I/O 控制外的读写操作,它们可以重映射到已有的 Unix 设备上
在动态载入库中支持线程本地存储
实现了进程任务
实现了任务调度服务
支持 UTF-7 编码
进程和线程亲和支持更多的处理器
支持新的线程池 API
用户界面
在桌面模式支持可选的启动菜单,可以通过 HKCU\Software\Wine\Explorer\Desktops\<name> 下设置"EnableShell" 为 "Y"来基于每桌面启用
标准的文件对话框支持用于文件操作的下拉菜单
“我的文档”文件夹会链接到 XDG 或 Mac OS X 下的“文档”文件夹
支持更多的外壳常用文件夹
实现了滚动条主题,其它控件的主题工作的更好了
工具条通用控制现在可以保存并恢复其状态
Mac OS X 支持
Mac OS X 上支持64位架构;然后并不完全兼容 Win64,因为 OS X 不是标准的64位 ABI
精确的报告 Mac OS X 上的内存大小
支持垃圾箱文件夹枚举
X11 驱动
支持 X 拖放协议版本5
实现了闪烁窗口标题
OLE / COM
OLE 存储文件支持文件锁定,大小可以超过4GB
在 64 位环境下类型库正确注册
64位程序可以载入32位类型库
用于控制窗口服务的 RPC 接口现在兼容原生版本
互联网与网络
从 Firefox 40 更新了 Gecko 引擎,在 MSHTML 中实现了很多对象和属性
互联网代理可以自动配置
部分实现了 Web 服务 API
在 JavaScript 中支持条件编译
可以使用 Samba 的 NetAPI 库配置远程网络共享
实现了包捕获 DLL
实现了网络接口改变提醒
打印
通过 PostScript 驱动打印时支持垂直文字
当打印彩色图片时,黑白打印支持更好
其它
WMI 实现了几个 WBEM 系统类
在 MSI 中更好的支持了应用安装补丁
支持更多新版本的 C/C++运行时库,包括新的 UCRTBASE 库,旧式的 MSVCIRT C++ 运行时也部分实现了
实现了 ATL 版本 9、10、11
实现了 XML 文件写入
内置应用
任务管理器应用显示哪个进程运行在 WoW64 下
注册表编辑器对导入导出支持更好
wine控制台支持设置对话框的配置插入/覆写模式
平台相关的改变
ARM 平台上正确汇报系统和硬件信息
ARM64 平台支持 WoW64模式
在 Android 上支持64位架构
构建环境
源代码可以跨 DLL 共享,可以从同样的源代码构建多个版本的 DLL。
支持 #pragma 指令
消息编译器使用 mo 文件,替代了 po 文件
新的外部依赖
liblcms2 替代了 liblcms 1
来自 Samba 的 libnetapi 用于配置远程网络共享
libpcap 用于实现包捕获 DLL
libpulse 用于 Pulse Audio 驱动
OpenAL Soft 库用于实现 XAudio2
已知问题
因为 WineD3D 的 OpenGL 内核上下文支持仍然没有完全做好,在旧式上下文中需要支持 Direct3D 10 和 11,所以它们当前不支持 Mesa
作者: Alexandre Julliard
编译文章: 译者: wxy