Alexandre Julliard 发布的文章

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