CodeWeavers Blogs

27 March 2019 by Andrew EikumAndrew Eikum  

How Proton helped improve Wine 4.2

On Tuesday (March 26, 2019), Valve released Proton 4.2, a new update to their Steam Play compatibility layer based on Wine 4.2. The previous major version of Proton was based on Wine 3.16. As with CodeWeavers's own projects, the strong preference for work going into Proton is to also get the changes into upstream Wine. There are many benefits to this. First, all Wine users will benefit from these fixes, whether they are end users of Wine itself, CrossOver users, or users of any other Wine fork. There are also benefits for the maintainers of Proton. For example, upstreaming patches helps prevent regressions, thanks to Wine's extensive test suite; it lowers the maintenance burden, as there are fewer changes to move between Wine versions; it…

Working on Wine Part 6 - Sending Your Work Upstream

About This Guide This is a series of guides intended to introduce software developers to the Wine ecosystem. It will cover what Wine is, how to use Wine, how to debug Wine, how to fix Wine, and what to do with your fix once you've made it. Part 1 describes what Wine is and provides a short description of various popular forks of Wine. Part 2 describes Wine's build process. Part 3 describes how to use Wine as a developer. Part 4 describes how to debug Wine in general. Part 5 describes Wine's source tree layout and how to edit the source. Part 6 describes how you can send your work upstream. If you recall from Part 1, there are many forks of Wine. Where your fix belongs can vary depending on what fork of Wine you use, the nature of the bug you…

Working on Wine Part 5 - Fixing Wine

About This Guide This is a series of guides intended to introduce software developers to the Wine ecosystem. It will cover what Wine is, how to use Wine, how to debug Wine, how to fix Wine, and what to do with your fix once you've made it. Part 1 describes what Wine is and provides a short description of various popular forks of Wine. Part 2 describes Wine's build process. Part 3 describes how to use Wine as a developer. Part 4 describes how to debug Wine in general. Part 5 describes Wine's source tree layout and how to edit the source. Part 6 describes how you can send your work upstream. Once you've got some idea of what is causing the problem with your application, it's time to go understand how those APIs are implemented in Wine so you can…

Working on Wine Part 4 - Debugging Wine

About This Guide This is a series of guides intended to introduce software developers to the Wine ecosystem. It will cover what Wine is, how to use Wine, how to debug Wine, how to fix Wine, and what to do with your fix once you've made it. Part 1 describes what Wine is and provides a short description of various popular forks of Wine. Part 2 describes Wine's build process. Part 3 describes how to use Wine as a developer. Part 4 describes how to debug Wine in general. Part 5 describes Wine's source tree layout and how to edit the source. Part 6 describes how you can send your work upstream. If you've made it this far, then you should have a functioning Wine build and an application installed that has some problem that you want to fix. Debugging…

Working on Wine Part 3 - Using Wine as a Developer

About This Guide This is a series of guides intended to introduce software developers to the Wine ecosystem. It will cover what Wine is, how to use Wine, how to debug Wine, how to fix Wine, and what to do with your fix once you've made it. Part 1 describes what Wine is and provides a short description of various popular forks of Wine. Part 2 describes Wine's build process. Part 3 describes how to use Wine as a developer. Part 4 describes how to debug Wine in general. Part 5 describes Wine's source tree layout and how to edit the source. Part 6 describes how you can send your work upstream. Now that you have Wine built, try running it: $ ./wine.win64/wine winecfg This should pop up a winecfg dialog. If not, something has gone wrong. The…

Working on Wine Part 2 - Wine's Build Process

About This Guide This is a series of guides intended to introduce software developers to the Wine ecosystem. It will cover what Wine is, how to use Wine, how to debug Wine, how to fix Wine, and what to do with your fix once you've made it. Part 1 describes what Wine is and provides a short description of various popular forks of Wine. Part 2 describes Wine's build process. Part 3 describes how to use Wine as a developer. Part 4 describes how to debug Wine in general. Part 5 describes Wine's source tree layout and how to edit the source. Part 6 describes how you can send your work upstream. Wine is effectively an operating system, including all of the libraries that a Windows system provides, such as support for 3D graphics, networking, audio, and…

Working on Wine Part 1 - The Wine Ecosystem

About This Guide This is a series of guides intended to introduce software developers to the Wine ecosystem. It will cover what Wine is, how to use Wine, how to debug Wine, how to fix Wine, and what to do with your fix once you've made it. Part 1 describes what Wine is and provides a short description of various popular forks of Wine. Part 2 describes Wine's build process. Part 3 describes how to use Wine as a developer. Part 4 describes how to debug Wine in general. Part 5 describes Wine's source tree layout and how to edit the source. Part 6 describes how you can send your work upstream. What is Wine? Wine is an open source reimplementation of Microsoft's Windows operating system on top of various Unix operating systems. It primarily targets…

2 December 2016 by Andrew EikumAndrew Eikum

Creating Visual Studio C++ Objects in Wine

Recently, one of our clients needed a Windows DLL implemented that exported C++ objects compatible with their existing application when run under Wine. While this was new to me, this is actually something we already do in Wine. We have implementations of Microsoft's Visual Studio C++ runtime objects, which are used by lots of applications. Applications which use those objects expect to get C++ objects from Windows DLLs like msvcp. I've never worked with this code before, and I don't do a lot of assembly-level work, so it was a fun learning experience for me. Wine is a C-language project, but we export C++ objects that are compatible with applications built on Windows. We even support Visual Studio RTTI data, constructors, destructors, and so on. I…

Please Wait...
eyJjYXJ0IjowLCJ0enMiOi01LCJjZG4iOiJodHRwczpcL1wvbWVkaWEuY29kZXdlYXZlcnMuY29tXC9wdWJcL2Nyb3Nzb3Zlclwvd2Vic2l0ZSIsImNkbnRzIjoxNTU4MDM0NTA0fQ==