Future of Wine Staging

Wine Staging Team - Sat, 17 Feb 2018

Some of you may have already wondered why there were no Wine Staging releases lately and whether anything has changed. There are indeed some major changes, which we want to explain in this post. Before doing so, let us take a quick look at the history of this project.

Wine Staging originated from Pipelight, a software to use Windows browser plugins in Linux/FreeBSD web browsers. In order to support Silverlight and its DRM system PlayReady, we had to create our own Wine version as the development code did not support storing Access Control Lists (ACLs) for files. It turned out that getting the support into the development version was quite difficult and Erich E. Hoover tried this since 2012. We figured out that there must be more patches that are considered as too experimental for the development branch and started with Wine Staging in 2014. While the project got larger and larger in roughly 120 releases, the maintenance effort also increased, especially since we follow the 2 week release cycle of the development branch.

Read more

Release 2.19

Wine Staging Team - Sat, 21 Oct 2017

The Wine Staging release 2.19 is now available.

What's new in this release:

  • Support for depth bias clamping in d3d11.
  • Support for verifying RSA signatures using bcrypt.
  • Various bug fixes and improvements.

Read more

Release 2.18

Wine Staging Team - Wed, 04 Oct 2017

The Wine Staging release 2.18 is now available.

What's new in this release:

  • Support for ECDSA certificate chains.
  • Vsync handling for d3d10/d3d11.
  • Various smaller bug fixes and improvements.

Wine Staging 2.18 adds support for ECDSA certificate chain verification, which is required by various libcef based programs. This fixes the login issue in Origin, the connectivity problems in Uplay, the non-working browser in Battle.net and many more applications. So far the feature is only available when compiling Wine with the GnuTLS (>= 3.0) backend. This release also improves the swap interval handling of Direct3D10/11 games and makes it possible to disable vsync. There are also various smaller changes that fix bugs in games like Cuphead and Overwatch.

Read more

Release 2.17

Wine Staging Team - Wed, 20 Sep 2017

The Wine Staging release 2.17 is now available.

What's new in this release:

  • Support for interpolation modifiers in pixel shaders.
  • Support for generating mipmap levels based on shader resource views.
  • Various smaller improvements and bug fixes.

Wine Staging 2.17 introduces the support for two commonly used Direct3D11 features: Interpolation modifiers for pixel shader inputs as well as the generation of mipmap levels of shader resource views. These two changes fix rendering glitches in Witcher 3, Overwatch, Prey (2017) and most probably affect more applications. Besides the graphic related changes, this release also extends the exception handling on 64 bit and improves the formatting of XML output in msxml.

Read more

Release 2.16

Wine Staging Team - Thu, 07 Sep 2017

The Wine Staging release 2.16 is now available.

What's new in this release:

  • Extended deferred rendering context support in d3d11.
  • Added 64 bit syscall thunks in fake ntdll.dll.
  • Support for indexed vertex blending in d3d8/d3d9.
  • Smaller bug fixes and improvements.

Wine Staging 2.16 adds more deferred rendering context functions and fixes rendering bugs in games like Crysis 3, Witcher 3 or Prey (2017). The ntdll syscall thunk emulation was extended to 64 bit in this release, which is required by the 64 bit version of World of Warcraft. A newly added feature is the support for indexed vertex blending, which is especially used by older games to simulate bones. Wine Staging 2.16 also backports a patch to fix the font rendering in Steam, Uplay and other software using libcef in Windows 7 mode.

Read more

Release 2.15

Wine Staging Team - Wed, 23 Aug 2017

The Wine Staging release 2.15 is now available.

What's new in this release:

  • Support for dual source blending and arbitrary viewports in d3d11.
  • JPEG decoder bug fixes and support for converting CMYK images in windowscodecs.
  • Support for 192/256 bit AES encryption and key import/export in bcrypt.
  • Various smaller enhancements and bug fixes.

Read more

Release 2.14

Wine Staging Team - Wed, 09 Aug 2017

The Wine Staging release 2.14 is now available.

What's new in this release:

  • Basic UAC implementation.
  • Further heap manager performance improvements.
  • Various smaller bug fixes.

Wine Staging 2.14 adds a basic User Account Control (UAC) implementation, which allows to emulate an environment where processes have either limited user rights or admin rights. So far Wine always reported full admin rights to all applications, which is no longer the case on modern Windows versions. UAC was first available in Windows Vista, and is used to ensure only trusted processes can access system components. In our case the security aspect is mostly irrelevant and the main goal is to ensure compatibility with certain applications, which refuse to run when the privileges do not exactly match the Windows behavior. If an application asks you to restart without admin rights, this can now be done with wine runas /trustlevel:0x20000 program.exe. As a general reminder, please note that you should never run Wine as root user - emulation of admin rights for Windows applications is not related to any privileges on your host system, neither before nor after this change.

Read more

Release 2.13

Wine Staging Team - Tue, 25 Jul 2017

The Wine Staging release 2.13 is now available.

What's new in this release:

  • Support for setting/copying UAV counters in d3d11.
  • Support for indirect drawing / compute dispatching in d3d11.
  • Heap manager speed improvements.
  • Implementation of loader notifications in ntdll.
  • Many smaller improvements for d3d11 and bug fixes in other dlls.

Wine Staging 2.13 contains various Direct3D 10/11 improvements, which fix rendering glitches in multiple applications. Examples for such applications are Rad Rodgers: World One or NieR: Automata. This release also fixes a bug that caused Wine to swap buffers more often than requested, leading to a performance decrease in GTA 5 and Crysis 3. Besides the d3d11 improvements, this release also introduces a modified heap manager, which should improve the performance in some corner cases where the original implementation performed poorly. More changes in this area are planned, but did not make it into this release. We will provide some statistics as soon as the remaining changes are merged. As usual, this release also adds many smaller improvements, for example deadlock / race condition fixes.

Read more

Release 2.12

Wine Staging Team - Wed, 12 Jul 2017

The Wine Staging release 2.12 is now available.

What's new in this release:

  • Support for depth bias / depth clamping in D3D11.
  • Support for copying between resources with compatible DXGI formats.
  • Use OpenGL core context when necessary.
  • Various smaller bug fixes and improvements.

Wine Staging 2.12 contains various Direct3D 10/11 improvements and fixes rendering bugs in multiple applications, including Assassin's Creed III, Witcher 3, Trackmania Turbo or the Unigine Heaven benchmark. Besides these rendering fixes, users of the MESA driver no longer need to create the MaxVersionGL registry key when using Direct3D 10/11 applications. Starting with this release, Wine automatically detects when to use a core or compatibility context. This release also fixes a startup issue with the latest version of the Steam client (Thursday, 06 July 2017).

Read more

Release 2.11

Wine Staging Team - Tue, 27 Jun 2017

The Wine Staging release 2.11 is now available.

What's new in this release:

  • Preloader compatibility enhancements for older macOS versions.
  • NVAPI improvements.
  • Support for starting position-independent executables (PIE) from Wine.
  • Keyboard/Mouse handling fixes.
  • Various smaller bug fixes and improvements.

Wine Staging 2.11 contains improvements for the macOS preloader, which was added in the last release, and should now support all macOS versions >= 10.6. Besides these host system specific changes, several patches were added to fix individual game bugs. The Witcher 3 should now display the intro videos and contain less graphical glitches compared to Wine Staging 2.10. For GTA 5 it is no longer necessary to pass -GPUCount 1 as parameter or to change the PCI IDs to run the game on a NVIDIA graphic card (-DX10 is still required though). The handling of low level keyboard hooks has been improved to fix input issues in GTA 5. This release also changes the handling of clipping regions to fix the remaining mouse issues with Unity based games.

Read more

Release 2.10

Wine Staging Team - Tue, 13 Jun 2017

The Wine Staging release 2.10 is now available.

What's new in this release:

  • Preloader for macOS.
  • ntoskrnl and winedevice improvements.
  • Various smaller bug fixes and improvements.

Starting with this release Wine Staging contains an experimental preloader for macOS. This feature is required to load applications, which expect a very specific memory layout in the process address space.

When a process is started on Windows, the kernel maps the executable into the memory and then hands over the control to ntdll, which loads all required DLLs. Since the executable is the first thing that is mapped into the memory, it can basically request to be loaded at any memory address it wants, the address space is mostly empty at this point. When using Wine, things look a bit different. Wine is not a kernel module and needs to be loaded into the address space first, before it can load the Windows executable. When you have bad luck, your host system maps Wine or any of its dependencies (e.g. libc) inside of an address range that the Windows executable wants to use.

Read more

Release 2.9

Wine Staging Team - Tue, 30 May 2017

The Wine Staging release 2.9 is now available.

What's new in this release:

  • Support for opening files through NT device paths.
  • Improved fake dll generation.
  • Support for pipeline statistics in d3d11.
  • Improved support for querying section names.
  • Fixes for multiple regressions.
  • Various smaller bug fixes.

Wine Staging 2.9 continues to improve the compatibility with anti-cheat and DRM modules. The generated fake DLLs do no longer trigger stub errors when an application manually loads them (as in the 2.8 release), but instead they now forward the call to the correct builtin implementation. The general memory layout of the builtin ELF/Mach-O executables has also been changed to be more consistent with regular PE files. Besides those bigger chances, there are many smaller improvements, including bug fixes for the Unreal Engine 4 and Chrome.

Read more

Release 2.8

Wine Staging Team - Tue, 16 May 2017

The Wine Staging release 2.8 is now available.

What's new in this release:

  • Improved fake dll generation.
  • Implement updating shared data time fields.
  • Reset debug registers on thread creation.
  • Added basic ACL viewer in file properties.
  • Various smaller improvements and bug fixes.

In this release we have merged fixes for several fundamental Wine bugs which might be worth mentioning.

Starting with this release Wine Staging generates more functional 32-bit fake DLLs. For those unfamiliar with Wine internals, fake DLLs are used as a placeholder inside of Wine prefixes, whereas the real implementation resides in ELF/Mach-O libraries. The content of those placeholders does not matter unless applications try to load such files without using the Windows API, which some DRM / anticheat modules unfortunately do. With Wine Staging 2.8 you will now get a stub exception instead of a random crash when such a DLL is used. For ntdll functions starting with Nt or Zw prefix the fake DLL will correctly forward calls to the real implementation.

Read more

Release 2.7

Wine Staging Team - Tue, 02 May 2017

The Wine Staging release 2.7 is now available.

What's new in this release:

  • Fixes for cabinet file handling in setupapi.
  • Cleanup of existing patches.
  • Various bug fixes.

Read more

Release 2.6

Wine Staging Team - Thu, 20 Apr 2017

The Wine Staging release 2.6 is now available.

What's new in this release:

  • Support for recent versions of OSMesa.
  • Various smaller improvements.

Since a lot of users were confused after reading the development version release notes, we would like to clarify, that the command stream multithreading (CSMT) patchset has not been fully merged yet. There has been a lot of progress during the last weeks, but unfortunately the performance related optimizations are still missing in the development branch. We expect them to be merged in one of the following releases. In the meantime, Wine Staging users can continue to use the CSMT performance improvements as usual (i.e. by enabling the CSMT in the winecfg Staging tab).

Read more

Release 2.5

Wine Staging Team - Wed, 19 Apr 2017

The Wine Staging release 2.5 is now available.

What's new in this release:

  • Implementation of NtSuspendProcess and NtResumeProcess.
  • Support for hash links in Ldr modules.
  • Various smaller improvements.

Please note that starting with this version, Wine Staging uses the new server side message-mode named pipe implementation from the development branch. In contrast to our previous implementation using SOCK_SEQPACKET sockets, the new implementation allows to handle some corner cases more correctly and is cross-platform compatible. A small disadvantage is that the new implementation is less complete (for example no PIPE_NOWAIT handling), so there is a small risk of regressions.

Read more

Packaging changes

Wine Staging Team - Wed, 29 Mar 2017

Today we want to announce some important changes regarding the Wine Staging packages provided at repos.wine-staging.com and dl.winehq.org. We completely reworked our build system to make the packages available sooner after a release and also added some new features, like downloading old packages for Debian / Ubuntu. The complete list of changes can be found in the announcement email on the Wine mailing list. I don't want to copy the full content, but here are the most important changes that will require your attention:

Read more

Release 2.4

Wine Staging Team - Wed, 22 Mar 2017

The Wine Staging release 2.4 is now available.

What's new in this release:

  • Implementation of more System/Process/Thread information classes and values.
  • More complete object type implementation.
  • Improved GDI+ scaling performance.
  • Various smaller improvements.

Read more

Release 2.3

Wine Staging Team - Wed, 08 Mar 2017

The Wine Staging release 2.3 is now available.

What's new in this release:

  • Implementation of ECB mode in bcrypt.
  • Ported some d3d11 functions to d3d10.
  • Minor CSMT improvements.
  • Various bug fixes.

Read more

Release 2.2

Wine Staging Team - Wed, 22 Feb 2017

The Wine Staging release 2.2 is now available.

What's new in this release:

  • CSMT speed optimizations.
  • Wbemprox improvements.
  • Various smaller bug fixes and improvements.

Since the last release, we tested various games with the CSMT (command stream multithreading) feature enabled to identify remaining bugs and possible ways to improve performance. As a result, this release includes various speed optimizations, especially for DX10/11 games. Some functions, for example updating subresources, which previously required synchronization with the command stream thread, can now be done asynchronously. There might still be differences compared to Wine Staging 2.0, since some of the speed improvements from the original CSMT patchset contained bugs and have not been fixed / added back yet.

Read more

Release 2.1

Wine Staging Team - Thu, 09 Feb 2017

The Wine Staging release 2.1 is now available.

What's new in this release:

  • Reworked CSMT to support d3d10/d3d11.
  • Support for some processor group functions.
  • Various smaller bug fixes and improvements.

The main change of this release is the reworked CSMT (Command Stream Multithreading) patchset. As many Wine Staging users will already know, the idea of CSMT is to move the execution of OpenGL commands to a separate thread, and to use available CPU and GPU resources more efficiently. In the new version the existing code has been cleaned up and various hacks have been removed. The result of this work is that all D3D related tests pass again. We also tested some D3D11 games which were previously broken with CSMT enabled and they started working. If you encountered bugs when using the CSMT, it might be a good time to retest them with the new release.

Read more

Release 2.0

Wine Staging Team - Wed, 25 Jan 2017

The Wine Staging release 2.0 is now available.

What's new in this release:

  • Support for various new windowscodecs image formats.
  • Improved emulation of deferred rendering contexts.
  • Fixes for semi-transparent layered windows.
  • Various smaller bug fixes.

Read more

Blog: Current state of Vulkan, DX11 and more

Michael Müller - Wed, 25 Jan 2017

During the last year Wine has seen a lot of changes in various areas, and it is easy to lose track of which applications or games are already working properly, and which parts of Wine need further improvements. To solve this problem, Wine development uses the code freeze before each stable release to give developers time to revisit bugs and test applications. Although Wine Staging is not directly affected by the feature freeze, we also decided to do some more extensive testing while preparing the release candidates.

In this blog post I have collected some of the more interesting results. If you for example had the impression that Direct3D 11 is still completely unusable in Wine, this list will prove you wrong. There are lots of features still missing from Wines D3D11 implementation but luckily not every application depends on them. As you can see below, it is even possible to get some AAA games to work. For applications and games which use Direct3D your results might differ depending on your hardware and graphic driver. I used a Geforce GTX 660 with the binary NVIDIA driver for testing. This is not exactly the best card for gaming, but I usually start games in Wine to fix bugs and rarely play them. Please also note that it is not a good idea to enable CSMT for Direct3D 11 games - the patchset was originally written for older versions of Direct3D, and various aspects are not fully compatible yet. To avoid any slowdown caused by fixmes, we recommend to start Wine with the environment variable WINEDEBUG=-all.

Read more

Release 2.0-rc6

Wine Staging Team - Mon, 23 Jan 2017

The Wine Staging release 2.0-rc6 is now available.

What's new in this release:

  • Emulation of deferred rendering contexts and other d3d11 enhancements.
  • Improvements for reading ole32 property storages.
  • Various fixes for smaller Wine bugs.

Read more

Release 2.0-rc5

Wine Staging Team - Sun, 15 Jan 2017

The Wine Staging release 2.0-rc5 is now available.

What's new in this release:

  • Initial support for Mandatory Integrity Control.
  • PE loader improvements.
  • Removal of 32GB memory limit on 64 bit.
  • Initial support for Trust Info inside manifest files.
  • Fixes and improvements for 13 smaller Wine bugs.

Read more

Release 2.0-rc4

Wine Staging Team - Mon, 09 Jan 2017

The Wine Staging release 2.0-rc4 is now available.

What's new in this release:

  • Improved FlipToGDISurface ddraw handling.
  • Regression fixes.
  • Various smaller improvements.

Read more

Release 2.0-rc3

Wine Staging Team - Tue, 27 Dec 2016

The Wine Staging release 2.0-rc3 is now available.

What's new in this release:

  • Add basic AES-GCM support in bcrypt.
  • Various improvements in gdiplus.

This release implements the Galois/Counter Mode (GCM) for AES in bcrypt.dll which fixes the multiplayer mode of DOOM (2016). This features requires a Wine build linked against GnuTLS 3.0 or higher, which should be available on most modern distributions. To verify this, you can check the output of wine --check-libs and search for the line referring to libgnutls. If the ABI version (the part behind .so) is 28 or higher, you are ready to play DOOM online.

Read more

Release 2.0-rc2

Wine Staging Team - Wed, 21 Dec 2016

The Wine Staging release 2.0-rc2 is now available.

What's new in this release:

  • Implement basic AES support in bcrypt.
  • Remove GnuTLS / CommonCrypto dependency for hash calculations in bcrypt.
  • Improve TIFF support in windoscodecs.
  • Various improvements in user32, winhttp and other dlls.

Wine Staging 2.0-rc2 implements everything necessary to get DOOM (2016) running. Feel free to play around with the different features like Vulkan support and report remaining issues in the bug tracker.

Read more

Release 2.0-rc1

Wine Staging Team - Wed, 20 Dec 2016

The Wine Staging release 2.0-rc1 is now available.

What's new in this release:

  • Various bug fixes and improvements.

Read more

Release 1.9.23

Wine Staging Team - Wed, 16 Nov 2016

The Wine Staging release 1.9.23 is now available.

What's new in this release:

  • Improve CRL check logic (Uplay).
  • Various bug fixes.

Read more

Release 1.9.22

Wine Staging Team - Wed, 16 Nov 2016

The Wine Staging release 1.9.22 is now available.

What's new in this release:

  • Improved GIF encoder in windowscodecs.
  • Various bug fixes.

Read more

Release 1.9.21

Wine Staging Team - Tue, 18 Oct 2016

The Wine Staging release 1.9.21 is now available.

What's new in this release:

  • Initial GIF encoder in windowscodecs.
  • Support for METHOD_OUT_DIRECT ioctls.
  • Implementation of SetFileCompletionNotificationModes.
  • Ignore queued xaudio2 AL buffers after Stop.
  • Vulkan wrapper improvements.
  • Various bug fixes.

The SetFileCompletionNotificationModes improvements make it possible to use the Steam Webbrowser in Windows 7 mode on Linux. You still need to pass -no-cef-sandbox as parameter to Steam though.

Read more

Release 1.9.20

Wine Staging Team - Tue, 04 Oct 2016

The Wine Staging release 1.9.20 is now available.

What's new in this release:

  • Improved palette support in windowscodecs.dll.
  • Various bug fixes.

Read more

Blog: What has changed since the WineHQ integration?

Michael Müller - Mon, 19 Sep 2016

If the following text looks somewhat familiar to you, then you probably read my draft article which was unintentionally published while sharing the release notes. In the draft I was trying to respond to a user question on wine-devel, but later decided to answer the question directly as mail, and turned some part of the answer into this blog post instead.

As some of you might know, on this day - a year ago, at the WineConf 2015, the decision was made to integrate Wine Staging into the WineHQ project. The idea was to include Staging into the development concept of the Wine project and share resources more efficiently. So after a year, I think it is time to look back and check what has changed from my point of view.

Read more

Release 1.9.19

Wine Staging Team - Mon, 19 Sep 2016

The Wine Staging release 1.9.19 is now available.

What's new in this release:

  • Implementation of CIF reader and Active Setup download functionality (inseng.dll).
  • Allow creation of 32 bit Wine prefix in an existing directory.
  • Various bug fixes.

With Wine Staging 1.9.19 the WINEARCH=win32 setting is no longer ignored if the target directory already exists and wasn't used by Wine yet. The inseng.dll changes allow the DirectX web installer to work and fixes in the Setup API prevent repeated executions of the DirectX installer every time a game is started in Steam.

Read more

Release 1.9.18

Wine Staging Team - Sun, 11 Sep 2016

The Wine Staging release 1.9.18 is now available.

What's new in this release:

  • Experimental support for 1D Textures in D3D10 and 11.
  • Various improvements for windowscodecs and gdiplus palette functions.
  • Various bug fixes.

Read more

Release 1.9.11

Wine Staging Team - Tue, 31 May 2016

Wine Staging 1.9.11 has been released this weekend. This release is a small update containing only a few improvements targeting different applications.

Besides updating the existing patches (including CSMT) to be compatible with the current development release of Wine, this release contains only a few additions. The most noticeable one is a patch to fix a crash when launching DOOM. However, this doesn't mean that the whole DRM protection is working yet, but it is a first step. We also fixed a regression that caused problems when creating threads on FreeBSD and could also lead to issues on some Linux systems. A list containing all newly added patches is available below.

Read more

Release 1.9.10

Wine Staging Team - Wed, 18 May 2016

We are happy to announce the release of Wine Staging 1.9.10. This updates brings back the support for CSMT and contains bug fixes for multiple applications.

The support for CSMT was removed in Wine Staging 1.9.6 due to differences between the original CSMT patchset and the new design included in the development version of Wine. Maintaining the old CSMT patchset, which was based on surfaces, was not feasible any more while the rest of Wine's DirectX stack was rewritten to use textures instead. For those who rely on the CSMT feature, we have some good news though. In the mean time the complete CSMT patchset has been rewritten to use the new texture approach and is now included in Wine Staging 1.9.10. You can therefore safely update from 1.9.5 and continue to enjoy all the performance improvements. Stefan Dösinger, the author of the patchset, also indicated that he fixed some bugs during the update, so it might be a good idea to retest applications which previously didn't work well with CSMT.

Read more

Release 1.9.9

Wine Staging Team - Tue, 03 May 2016

Wine Staging 1.9.9 was released yesterday. This updates brings some smaller improvements.

During the last two weeks, instead of working on new features, a lot of effort was put into cleaning up, improving, and upstreaming patches which already have been tested sufficiently. We are glad to say that more than 30 patches have been accepted which is roughly about 10% of all commits added in Wine 1.9.9. This doesn't mean though that we didn't add any new features, just a bit less than usual as you can see below.

Read more

Release 1.9.8

Wine Staging Team - Tue, 19 Apr 2016

Time for another release! Wine Staging 1.9.8 is now available. This version contains improvements for 64 bit support and MSYS2.

Running 64 bit Windows software on Linux using Wine is nothing special for most users. Although there might be some smaller bugs left that only affect 64 bit software, the basic concept is working fine. 64-bit support for OS X is a different story though. The usage of the GS segment register in Windows applications conflicts with the OS X system libraries. This basically means that Wine and OS X want to store different values at the same location. Fixing or working around this problem is difficult and it is still unknown if a fully compatible and efficient solution can be achieved. Nevertheless, there are ways to improve compatibility without implementing a complete solution.

This release adds an experimental patch to improve support for running 64-bit applications on OS X by partially fixing the issue. If you are interested in more technical details, you can also take a look at the Wine devel mailing list discussions [1] and [2]. Although the feedback was very promising so far, we would be happy to see some additional testers. Check out the WineHQ OS X download page (either use the installer or grab a 64-bit tarball) if you want to give it a try.

Read more

Release 1.9.7

Wine Staging Team - Sun, 3 Apr 2016

Today we released Wine Staging 1.9.7. This version contains improvements for shell32, Video For Windows and several smaller fixes.

When you are using a software which displays a file list, for example a file manager or CD burning software, then chances are high that this program makes use of shell32. This component is mainly used by the Explorer on Windows and provides functions to iterate through the file system, to display the typical right click menu (copy, cut, paste, ...) as well as the property dialogs for folders and files. The implementation in Wine is still work in progress and lacks some fundamental features. In this release we fixed a bug that files couldn't be copied and added support for pasting files/folders into a selected folder (using the right click menu on a folder). We also improved support for moving files (cut, paste), so far the original file was not deleted after the copy progress finished.

Read more

Release 1.9.6

Wine Staging Team - Mon, 21 Mar 2016

We are happy to announce the release of Wine Staging 1.9.6. This version adds support for Vulkan and fixes for various other bugs.

This release adds a first version of a Vulkan wrapper to make the Vulkan API accessible to applications running in Wine. The work was started by Erich E. Hoover and later finished by other Wine Staging maintainers. The code translates the Windows specific surface extensions to the corresponding X11 / XCB extensions and passes the remaining functions on the host Vulkan library. Although this seems to be an easy task on first sight, there are various pitfalls that make this wrapper more complicated than you might think. While the Vulkan API is almost binary compatible in 64 bit (except the differences in the calling convention), properly translating Vulkan calls on 32 bit turned out to be a bit difficult.

The biggest problem on 32-bit is caused by alignment differences when using 64 bit integers in structures. On Windows a 64 bit integer is aligned on a 8 byte memory address, while compilers on most other systems only align them on a 4 byte boundary. Passing such a structure without conversion to the host library would cause problems and eventually lead to a crash. As the Vulkan API contains more than 120 structures, most of the time was spent to implement structure and array conversions, which make the 32-bit version slightly slower than the 64-bit version. The final implementation adds about 10.000 lines of code to the Wine Staging code base.

Read more

Release 1.9.5

Wine Staging Team - Tue, 8 Mar 2016

Time for another release - Wine Staging 1.9.5 is now available. This version improves the compatibility with MSYS and with various older games.

In continuation of our effort in the last version, this Wine Staging release adds a bunch of improvements mainly useful for older games and applications. Although probably not interesting for everyone, we improved the compatibility with Windows 95/98/ME in order to run software targeting these Windows versions. This includes miming the behavior of older Windows versions more correctly when selecting them in winecfg. So don't forget to alter the settings accordingly before trying out older games.

Besides some improvements for MSYS, this release also implements various additional functions in Wines setupapi.dll. Various fixes in preparation for loading multiple drivers into a single process, a ntoskrnl.exe bug which has been in Wine for a very long time, have already been accepted upstream and are not separately listed below. This is ongoing work though, so hopefully the next release will support loading multiple drivers into the same address space, making it possible to implement layered drivers as a next step.

Read more

Release 1.9.4

Wine Staging Team - Tue, 23 Feb 2016

A couple of hours ago, Wine Staging 1.9.4 was released. This update brings improvements for better window handling when using the winex11 driver, and fixes for various games and applications.

One of the main goals of Wine is to integrate Windows applications as seamlessly as possible into the host system. This release improves the integration when using the X11 backend and an application tries to bring a specific window to the foreground. This might for example be used to bring a progress dialog to the front after the operation has finished. The request is now forwarded to the window manager by sending a _NET_ACTIVE_WINDOW message.

Besides various improvements for Wines d3dx9_36 implementation, this release also contains fixes the GOG Galaxy client, which previously took a very long time to start. As a side-effect, this also fixes the problem that the auto-updater didn't get active during the startup. Other applications which have been improved are for example Evoland (still needs CSMT, but otherwise works fine) and Adobe After Effects 4.

Read more

Release 1.9.3

Wine Staging Team - Wed, 10 Feb 2016

Yesterday we released Wine Staging 1.9.3, which includes compatibility fixes for a bunch of older games.

Before talking about the changes, I would like to apologize that there weren't any release notes since 1.8. I just didn't had much time lately to write them, but this was unrelated to the actual development progress of Wine Staging. In fact we added 116 new patches since the last release notes. We are also currently working on a website which displays the changes between different versions of Wine Staging (fixed bugs, added patchsets, removed patchsets, history of specific patches, ...). The site should hopefully be online soon, so that you can already see all changes without waiting for me to write the release notes. :-)

As already mentioned in the first line, in this release we fixed compatibility with some older games, including some 16 bit applications. For those who are interested in more details how the general 16 bit support works in Wine and what exactly has been fixed, I have written a separate blog post explaining those details. I might provide more of such "behind the scenes" posts in the future if my times allows it. To keep it short for the release notes: We fixed several issues when using the 16 bit version of the avifile.dll and msvideo.dll.

Read more

Blog: How do Win 3.1 applications work in Wine?

Michael Müller - Wed, 10 Feb 2016

If you read our release notes frequently, you might have noticed that I tend to explain the background behind the changes in Wine Staging as I imagine that this might be interesting for some of our readers. However, those explanations do not really belong into the release notes, so I decided to move them to separate blog posts. So welcome to my first blog post in which I explain how the 16 bit support works in Wine and which typical bugs you may encounter. I hope you enjoy reading it although it is going to be very technical, but maybe you learn something from it :-).

Let's start with something that might surprise you: Although Wine supports 16 bit applications it basically doesn't contain any 16 bit code. Well, to be completely correct it does, but just a couple of lines of handwritten assembler code. The reason for this is simple, almost all code in Wine is written in C and intended to be compatible with different compilers. Almost no modern compiler is able to compile C code to 16 bit binary opcodes, and writing everything in assembler is also no option. Wine instead needs to use some special tricks which I will explain later. First we need to take a look at the biggest difference between 16 bit and 32 bit, the memory management.

Read more

Release 1.8

Wine Staging Team - Tue, 22 Dec 2015

Yesterday we released Wine Staging 1.8, which is kind of special as it is based on a stable release instead of a development release. Although Wine Staging was not really affected by the development code freeze, we still kept the changes small during this time, so you could consider this to be a stable staging release.

Anyway, Christmas is very close, so we still prepared a small present in form of a new feature for this Wine Staging release. We spent some time on implementing Windows Update in Wine. To be exact we worked on the Windows Update Stand-Alone Installer (WUSA). This program (wusa.exe) can be used to install Windows Updates packages on Vista and above. Sounds weird to implement something like this in Wine? Well, Microsoft didn't only decide to use this for real Windows updates but also for other software which either replaces system components or is closely tied to Windows. Prominent examples for this are .NET Framework 4.5 or the Internet Explorer. Those updates are often embedded into some executable, but you can also download some Microsoft Updates (.msu) files directly.

Read more

Packaging changes

Wine Staging Team - Fri, 11 Dec 2015

In the past the bi-weekly release cycle of Wine causes a lot of work for developers and packagers. Not all distros can afford to update a single package every two weeks. As a result, they often only provide packages for the stable branch or ship an outdated version of the development branch. To solve this problem, there was the decision at WineConf 2015 that WineHQ should provide packages for popular distributions. Since we already build packages for Wine Staging, we offered to extend our current system to include the development branch. As part of this process we decided to drop our dependency on external build services (except Launchpad) and instead build everything in our own VMs. We also extended our build scripts to provide a more general way of building packages which is less tied to Wine Staging or Wine in general. These changes do not only affect the newly built Wine development packages but also our existing Wine Staging packages. The changes differ between distros and are described below.

Read more

Release 1.7.54

Wine Staging Team - Sun, 01 Nov 2015

Yesterday we released Wine Staging 1.7.54. The release contains fixes for the widl compiler, the handling of APCs and various additional improvements for other parts of wine.

In this releases we added multiple improvements and bug fixes for the wine IDL (widl) compiler. The widl compiler reads files in the Microsoft Interface Definition Language (MIDL) and converts them into different output formats. One possible output format are typelibs. Those files contain a binary definition of the interfaces described in the input file and are often used by scripting languages in order to communicate with COM objects. So far the widl compiler contained various bugs and the typelibs shipped with Wine were not completely correct, causing scripts to fail. Some of those problems have been fixed.

One concept of the windows API which might be even unknown to some programmers, are Asynchronous Procedure Calls (APCs). They provide a way to pause a thread, execute a function and resume the execution. Those APCs can either be initiated from some other thread/process (user APCs) or from the windows kernel. Although Wine does not have a kernel, the idea of kernel APCs is still used, for example if you try to allocate memory in a different process. The POSIX API does not provide such a feature, so Wine needs a way to execute the memory allocation in the target process. To accomplish this, Wine can use two different ways to notify a thread about a kernel APC. This lead to a race condition in which one kernel APC could be interrupted by a different kernel APC. Although this does not lead to a crash, processing them in a wrong order can cause deadlocks. This problem has been fixed in Wine Staging 1.7.54.

Read more

Release 1.7.53

Wine Staging Team - Wed, 21 Oct 2015

On Sunday we released Wine Staging 1.7.53, this time with a few less changes than usual. We were mainly focusing on upstreaming various features, and got 33 patches upstream since the last release. Nevertheless, there are still some interesting changes in this release.

If you were using Steam lately, you might have noticed that the store and community tab doesn't show any content. The problem is caused by the embedded chromium code used by Steam. Chromium contains a sandbox to increase the security, but unlike on Linux, the Windows sandbox does not rely on any kernel features but instead modifies functions in ntdll.dll. So far this didn't cause any problem as Steam didn't make use of this sandbox, which changed in a recent update. The problem is that on Windows, ntdll mostly contains wrappers to the corresponding syscalls, while Wine implements all the kernel logic directly in ntdll. The code simply does not match what Chromium is expecting. This release contains an experimental patch to fix this issue for a pure 32 bit prefix (not for a WOW64 prefix!). Make sure to create a prefix with WINEARCH=win32 if you need this feature. Please also note that the patch is only enabled for Linux so far, since additional changes to the build system are required to make it Mac OS X compatible. This will be fixed very soon.

Read more

Release 1.7.52

Wine Staging Team - Sun, 04 Oct 2015

Some minutes ago we released Wine Staging 1.7.52. This is the first release after WineConf 2015 and the integration into WineHQ.

Some of the changes related to the integration have been realized in the meantime and you should now use the WineHQ bug tracker for reporting bugs. Just open them as regular Wine bugs and mention the used wine version. Although this news is mostly about the source code changes, I would like to mention that Arch Linux now provides an official package which is also named wine-staging and therefore conflicts with our packages. The package installs into /usr instead of /opt/wine-staging so you might run into conflicts with other wine versions. Take a look at our Wiki for more information.

Read more

Integration into WineHQ

Wine Staging Team - Fri, 25 Sep 2015

Wine Staging has already existed about a year and, although used by many people, until recently there was no final decision about its relation to WineHQ. Many people saw Wine Staging as a fork and, as a result, users were asked not to use the upstream bug tracker or AppDB, which pressured us to setup our own infrastructure.

Based on the decisions made during the Wine developer conference (WineConf 2015) last weekend, this situation is going to change. Wine Staging is now an official part of WineHQ, like the development and stable versions of Wine. The integration will cause changes on both sides and I would like to give a short overview here. For those interested in more details, I also recommend reading Alexandre Julliard’s summary on the wine-devel mailing list.

Read more

Release 1.7.51

Wine Staging Team - Tue, 08 Sep 2015

Yesterday we released Wine Staging 1.7.51 with a bunch of bug fixes. We continued our work on MSYS2 and also added patches for various other applications.

For those who use the CSMT (commandstream multithreading) patchset to improve the graphic performance, it might be worth to retest existing bug reports. Several bugs were fixed in this release, and the patchset has been updated to stay in sync with the authors repository.

Read more

Release 1.7.50

Wine Staging Team - Sun, 23 Aug 2015

Yesterday we released Wine Staging 1.7.50, which improves support for MSYS2 and fixes some bugs in the recently added GTK3 theming engine.

This release continues the ongoing effort to fix MSYS2 related bugs in order to provide a Win32 build environment through Wine. This should make it easier to develop and test applications without using Windows. Since many MSYS2 tools are based on Cygwin (a POSIX implementation for Windows), they require a lot of low level APIs and often reveal shortcomings in Wine. In the long term, fixing those bugs might also help other applications.

Besides that, we continued to work on the recently added GTK3 theming engine. Most importantly, various users reported an issue which caused a division by zero exception, which should be fixed in this release.

Read more

Release 1.7.49

Wine Staging Team - Sun, 09 Aug 2015

We are happy to announce Wine Staging 1.7.49. Although we didn't have as much time as usual due to the delayed release last time (and various other projects we are working on in the background, so stay tuned!), we have some neat features for you in this release. Especially for people who blame Wine for looking like it's still 1995.

Starting with Windows XP Microsoft added theming support and changed it again in every Windows version since. The support for loading such themes was also added in Wine a long time ago, but due to changes in later Windows version Wine can only load Themes targeting Windows XP. Most users probably never noticed this feature as Wine doesn't ship any default themes. Needless to say that Wine looks like an alien on modern Linux desktops when using the default XP Luna theme.

Instead of improving the existing theming implementation, the patchset added in this release adds a full alternative implementation to integrate Wine better into your Linux desktop. The feature written by Ivan Akulinchev utilizes GTK3 for rendering and makes Wine look like an ordinary GTK3 application. Since this feature is very experimental and not everyone might prefer the new look (or the possibly higher CPU usage), you need to manually enable it through the Staging tab of winecfg. Here are two screenshots to give you an impression on what you can do this way:

Read more

Release 1.7.48

Wine Staging Team - Wed, 29 Jul 2015

In contrast to our usual release schedule, we released Wine Staging 1.7.48 this time on Wednesday. This is just a result of the deferred upstream release and doesn't mean that we are going to change our release date in the future. The following list shows the features and bug fixes added in this release:

Read more

Release 1.7.47

Wine Staging Team - Sun, 12 Jul 2015

In the past two weeks we worked on multi-threaded VCOMP support, added better GPU detection when using the MESA driver and improved our Mac OS X builds.

The main feature of this new release is the improved vcomp.dll support. The Visual C++ compiler uses this dll to create and manage threads when using OpenMP. Unlike the name might suggest, the internal details of the Microsoft implementation are undocumented. Before this release Wine Staging already contained the single-threaded fallback implementation by Dan Kegel, which was replaced with a new implementation including proper multi-threading support. For many applications that depend on OpenMP support through vcomp.dll it is no longer necessary to install native libraries. Various additional functions are planned to be implemented until the next release.

Read more

Release 1.7.46

Wine Staging Team - Sun, 28 Jun 2015

In the past two weeks we improved the Mac OS X compatibility and worked on upstreaming patches.

Most of the Wine Staging developers and contributors use Wine on Linux based systems. This leads to the problem that some features are not directly available or might contain bugs on other unix based systems. This release however focuses mostly on Mac OS X. We fixed several smaller bugs and issues regarding cross compiling and the loading of libraries. Besides code fixes, we now also provide prebuilt packages for Mac OS X 10.8+. Further information can be found in the installation instructions.

Read more

Release 1.7.45

Wine Staging Team - Sun, 14 Jun 2015

Some hours ago Wine Staging 1.7.45 was released with several bug fixes and enhancements.

Some applications use ICMP pings to check if a remote host / server is reachable, or to determine the round trip time. While Windows offers a special API to send ping requests and to receive the response, the only way to achieve the same on Linux/Unix based systems is to use raw sockets. For security reasons these sockets are limited to processes/users having the CAP_NET_RAW capability, which means that such programs usually do not run out of the box in Wine. Manually adjusting capability flags fixes the problem, but also gives the program the permission to sniff traffic by other applications or users on the same interface.

In order to partially solve this problem, we implemented a fallback in Wine which makes use of the ping commandline tool if Wine does not have the necessary capabilities. The ping utility usually has the necessary permission and provides most of the functions offered by the Windows API. While this is not sufficient for special things like traceroutes, the most common use-case of sending simple requests in order to measure the round trip time works fine with this approach.

Read more

Release 1.7.44

Wine Staging Team - Sun, 31 May 2015

Today we released Wine Staging 1.7.44 with several bug fixes and switched to our new build system for our prebuilt packages. Currently most of our effort goes into fixing bugs instead of adding new features, so we also changed the format of the release notes a bit. Before we tell you more about the build system changes, here is a list of all fixed bugs / added features in this release (without any particular order).

  • Add shell32 placeholder icons to match offsets with Windows, required by SuperPower 2 demo (Wine Bug #30185)
  • Add stub for iphlpapi.ConvertInterfaceLuidToGuid, required by PES2015 (Wine Bug #38576)
  • Add stubbed ISWbemSecurity interfaces in wbemdisp (Required by Paessler WMI Tester)
  • Add support for hiding wine version information from applications (Wine Bug #38656)
  • Allow to enable/disable InsertMode in wineconsole settings (Wine Bug #36704)
  • Also handle '\r' as whitespace in wbemprox queries (Required by Paessler WMI Tester)
  • Also output winedbg system information to the terminal, not only to dialog
  • Assign a drive serial number during prefix creation/update (Wine Bug #17823)
  • Do not use unixfs for devices without mountpoint (Required by 2xExplorer)
  • Fix NULL pointer dereference in get_frame_by_name effecting various Web installers (Wine Bug #34982)
  • Fix crash in Gothic 1/2 with builtin directmusic caused by wrong return value (Wine Bug #7425)
  • Fix handling of opening a file with RootDirectory pointing to a file handle, required by Msys2 (Wine Staging Bug #299)
  • Fix scaling behaviour of images and mipmap levels in IDirect3DTexture2_Load (Required by Prezzie Hunt)
  • Return fake device type when systemroot is located on virtual disk (Wine Bug #36546)
  • Revert upstream regression which causes broken rendering in various games (Wine Bug #38654)
  • Support for ws2_32.dll.WSAPoll, required by Planetary Annihilation (Wine Bug #38601)
  • Use random names when caching very long urls in wininet (Wine Staging Bug #300)

As usual you can find all the changes (including removed/upstream accepted patches) in our changelog.

Read more

Release 1.7.43

Wine Staging Team - Sun, 17 May 2015

Wine Staging 1.7.43 was released yesterday with a lot of bug fixes in wininet and various other parts of Wine.

The upstream wininet implementation behaves different compared to Windows in various ways if an application replaces the Host header in a HTTP request. While trying to fix these problems, several other issues were discovered. This release adds a total of 13 patches to fix incorrect handling of HTTP header fields, handling of cookies and HTTP authentication. In addition a memory leak was fixed that was triggered by HTTP requests containing a cookie.

Read more

Release 1.7.42

Wine Staging Team - Mon, 04 May 2015

Time for another release! We pushed Wine Staging 1.7.42 yesterday, this time with a small delay. Besides fixes for various bugs we've been working on a category system to simplify the task of maintaining our huge amount of patches.

When we started working on Wine Staging the idea was to provide experimental features and improve them over time until they are ready to be included into upstream wine. Even though our name implies that the version is (or at least can be) highly experimental, many users started using Staging as their default wine version. This makes it difficult to add very experimental patches while ensuring that they do not introduce regressions and therefore the demand for a more stable version increased.

Read more

Release 1.7.41

Wine Staging Team - Sun, 19 Apr 2015

Wine Staging 1.7.41 is out and provides small improvements and bug fixes for several applications. This release is a bit more lightweight than usual as we have a lot of infrastructure work going on behind the scenes.

Debugging Wine applications is a non trivial task and it is often difficult to get proper debug output. You often end up with huge log files and need to find a needle in a haystack. With Wine Staging 1.7.41 we added process specific debug channels so that you can set different debugging flags based on the executable name. This is especially useful if you need to debug an application which needs to be started through a launcher or programs like Uplay. More information about this feature is available in our Wiki.

Read more

Release 1.7.40

Wine Staging Team - Sun, 05 Apr 2015

Wine Staging 1.7.40 was released some hours ago and there are various new features available for testing. The main additions since the last release are EAX sound support (software emulated), support for realtime priorities and better handling of .NET executables.

In 1998 Creative introduced Environmental Audio Extensions (EAX) for their sound blaster sound cards which provides a way to apply sound effects using the DSP of the sound card. This made it possible to use advanced audio effects using DirectSound without increasing the CPU usage. Modern CPUs can easily handle such calculations and we therefore started to implement an EAX software emulation in Wine. This release adds most of the stuff required for EAX 1 and gives you the possibility to enjoy these sound effects in old games even without creative hardware.

Read more

Release 1.7.39

Wine Staging Team - Sun, 22 Mar 2015

Wine Staging 1.7.39 was released a couple of hours ago. This release mostly concentrates on speed optimizations and various bug fixes related to keyboard input handling.

One of the slowest things in Wine are wineserver calls. These calls are necessary if an applications wants to set or get an value which affects multiple programs, for example asking for the current foreground window. While this information is usually managed by the kernel on Windows, a program running in Wine needs to send a message to wineserver via a pipe and wait for the reply. Since the wineserver is a separate process the overhead of waking it up is very big, causing these calls to be about 10 times slower than on windows.

Read more

Release 1.7.38

Wine Staging Team - Sat, 07 Mar 2015

We are happy to announce Staging 1.7.38. This release introduces Job Object support and many other small bug fixes and improvements. Besides the new additions, 16 patches got removed because they were accepted upstream. Wine Staging consists now of more than 600 patches total.

The Job Object API provides ways to manage groups of processes as a single object and is required by various applications like EA Origin, which uses this feature to detect whether games are still running. Although Job Objects are not really a "new" feature and were already available since Windows 2000, a Wine implementation was still missing so far. One year ago Andrew Cook started to work on an implementation and we recently teamed up with him to clean up the patches and to integrate this feature into Wine Staging. The code is not yet complete, but it is sufficient to make EA Origin happy.

Read more

Release 1.7.37

Wine Staging Team - Sun, 22 Feb 2015

Two weeks passed by and it is time for another Wine release. Before talking too much about Wine staging 1.7.37, we are happy to announce that two important features, UTF-7 support (included since Wine Staging 1.7.29) and interface change notification support (included since first version of Wine Staging) got upstream.

The main focus of this Wine Staging release is the implementation of the DirectX Video Acceleration 2 (DXVA2) API based on VAAPI. This API is available since Vista and provides GPU accelerated functions for video processing, like video decoding or deinterlacing. We initially had this idea about a year ago (mainly to improve video playback via Pipelight), but stopped working on it when it became clear that getting it upstream will be a very long or even impossible process. The implementation we added now to Wine Staging already contains various improvements compared to the initial proof-of-concept code. We improved MPEG2 video decoding support and added support for H264 decoding. We decided to use VAAPI as back-end since it is very similar to DXVA2, but wrote the implementation in such a way that it can easily support multiple back-ends later. While VAAPI mainly targets Intel based GPUs there are wrappers for the open source and proprietary drivers of AMD / NVIDIA GPUs as well, so you can also use DXVA2 through VAAPI on non-Intel systems.

Read more

Release 1.7.36

Wine Staging Team - Sun, 08 Feb 2015

We just released Wine Staging 1.7.36 and we are happy to announce some interesting new features in this version. A lot of work went into the implementation of the Threadpool API framework, which is available on Windows Vista and newer. The Threadpool API provides a lot of convenience functions to simplify writing multithreaded programs, for example to assign work items to a pool of worker threads, wait for their execution and call cleanup handlers afterwards. The number of applications using this API is steadily increasing, so we decided that its definitely time to add an implementation. There are still some unimplemented functions left but the core components are available now and sufficient for most applications, including Adobe Lightroom 5.3.

Read more

Release 1.7.35

Wine Staging Team - Sat, 24 Jan 2015

Today we released Wine Staging 1.7.35 which introduces the basis for further interesting features. This release is not as exciting as the last one from a user perspective, but contains quite some important changes for developers and contributors. We added a driver testing framework in Wine Staging which should help us to improve the ntoskrnl.exe component of Wine. Besides that Wine Staging 1.7.35 also contains various new patches and improvements, for example several improvements of CUDA support (which was added in the last release), patches to fix broken raw input in multiple games (upstream regression, which exists since 1.5.29 in upstream Wine), and also patches for Child of Light and Valiant Hearts.

Read more

Release 1.7.34

Wine Staging Team - Sa, 10 Jan 2015

We are happy to announce some major new features for Wine Staging 1.7.34, which were developed during the Christmas holidays. Upstream Wine skipped the last release which gave us the possibility to add more new features than usual in this release. One of the new features is support for CUDA, the GPU calculation platform used by NVIDIA graphic cards.

Staging 1.7.34 contains a wrapper for nvcuda.dll which redirects the function calls to the native libcuda.so. Previous approaches tried to wrap cudart.dll (the cuda runtime dll), but in contrast to our solutions this does not work for statically linked CUDA programs. The implementation is not yet complete and misses some Direct3D interop functions, which are rarely used by applications. If you would like to test this new feature make sure to read our Wiki entry about CUDA to ensure that everything is set up correctly.

Read more

Release 1.7.33

Wine Staging Team - Mon, 15 Dec 2014

We just released the updated patchset for Wine 1.7.33. Besides the 29 bugs fixed upstream since the last release, we have added about 14 additional bug fixes to Wine Staging. You can take a look at the changelog for the full list of changes. There is one feature I would like to point out since it was requested a lot by our users: CSMT (command stream multithreaded) support.

Although originally announced by Codeweavers employee Stefan Dösinger about a year ago, there still wasn't much progress with upstreaming these patches. We were hesitating to add these patches in the past because they are known to have a negative effect for some apps. Thanks to the newly introduced dll redirection scheme it was possible to add it anyway, by providing a CSMT and a non-CSMT version of wined3d. In order to test the CSMT feature, it is sufficient to enable it in winecfg - take a look here for instructions how to do that.

Read more