PostHole
Compose Login
You are browsing eu.zone1 in read-only mode. Log in to participate.
rss-bridge 2025-09-25T00:27:00+00:00

SE Radio 687: Elizabeth Figura on Proton and Wine

Elizabeth Figura, a Wine Developer at CodeWeavers, speaks with SE Radio host Jeremy Jung about the Wine compatibility layer and the Proton distribution. They discuss a wide range of details including system calls, what people run with Wine, how games are built differently, conformance and regression testing, native performance, emulating a CPU vs emulating system calls, the role of the Proton downstream distribution, improving Wine compatibility by patching the Linux kernel and other related projects, Wine's history and sustainment, the Crossover commercial distribution, porting games without source code, loading executables and linked libraries, the difference between user space and kernel space, poor Windows API documentation and use of private APIs, debugging compatibility issues, and contributing to the project.

This episode is sponsored by Monday Dev


Elizabeth Figura, a Wine Developer at CodeWeavers, speaks with host Jeremy Jung about the Wine compatibility layer and the Proton distribution. They discuss a wide range of details including system calls, what people run with Wine, how games are built differently, conformance and regression testing, native performance, emulating a CPU vs emulating system calls, the role of the Proton downstream distribution, improving Wine compatibility by patching the Linux kernel and other related projects, Wine’s history and sustainment, the Crossover commercial distribution, porting games without source code, loading executables and linked libraries, the difference between user space and kernel space, poor Windows API documentation and use of private APIs, debugging compatibility issues, and contributing to the project.



Show Notes

Related links


Transcript

*Transcript brought to you by IEEE Software magazine.

This transcript was automatically generated. To suggest improvements in the text, please contact [email protected] and include the episode number and URL.*

Jeremy Jung 00:00:19 Hey, this is Jeremy Jung for Software Engineering Radio, and today I am talking to Elizabeth Figura. She’s a Wine developer at Code Weavers, and today we’re going to talk about what that is and all the work that goes into it. Elizabeth, welcome to Software Engineering Radio.

Elizabeth Figura 00:00:34 Thank you, Jeremy. I’m glad to be here.

Jeremy Jung 00:00:36 I think the first thing we should talk about is maybe saying what Wine is, because I think a lot of people aren’t familiar with the project.

Elizabeth Figura 00:00:44 So Wine is a translation layer. In fact, I would say Wine is a Windows emulator that is what the name originally stood for. It re-implement the entire Windows, or you say Win32 API. So that programs that make calls into the API will then transfer that code to Wine and we allow that Windows programs to run on things that are not Windows. So Linux, Mac OS, other operating systems such as Soliris and BSD. It works not by emulating the CPU, but by re-implementing every API basically from scratch and translating them to their equivalent or writing new code in case there is no equivalent.

Jeremy Jung 00:01:24 I believe what you’re doing is you’re emulating system calls. Could you explain what those are and how that relates to the project?

Elizabeth Figura 00:01:32 So system call in general can be used to refer to a call into the operating system to execute some functionality that’s built into the operating system. Often, it’s used in the context of talking to the kernel. Windows applications actually tend to talk at a much higher level because there’s so much high-level functionality built into Windows as opposed to other operating systems that basically we end up implementing much higher-level behavior than you would on Linux.

Jeremy Jung 00:02:00 And can you give some examples of what some of those system calls would be, and I suppose how they may be higher level than some of the Linux ones?

Elizabeth Figura 00:02:08 Sure. So of course you have low level calls like interacting with a file system, create a file and read and write and such. You also have high level APIs who interact with a sound driver. There’s one I was working on earlier today called XAudio where you actually build this bank of sounds. It’s meant to be played in the game and then you can position them in various 3D space and the operating system in a sense will take care of all of the math that goes into making that work. That’s all running on your computer and then it’ll send that audio data to the sound card once it’s transformed it. So it sounds like it’s coming from a certain space. A lot of other things like parsing XML is another big one that there’s a lot of things. This space is honestly huge.

Jeremy Jung 00:02:55 Yeah, I can sort of see how those might be things you might not expect to be done by the operating system. Like you gave the example of 3D audio and XML parsing and I think XML parsing in particular, you would’ve thought that that would be something that would be handled by the standard library of whatever language the person was writing their application as. So that’s interesting that it’s built into the OS.

Elizabeth Figura 00:03:17 Yeah, well, and language is like C, it isn’t even part of the standard library. It’s higher level than that. It’s you have specific libraries that are widespread but not codified in a standard, but in Windows they are part of the operating system. And in fact, there’s several different XML parsers in the operating system. Microsoft likes to deprecate old APIs and make new ones that do the same thing very often.

Jeremy Jung 00:03:40 And something I’ve heard about Windows is that they’re typically very reluctant to break backwards compatibility. So you say they’re deprecated, but do they typically keep all of them still in there?

Elizabeth Figura 00:03:51 Oh yeah. It all still works.

Jeremy Jung 00:03:51 And that’s all things that Wine has to implement as well to make sure that yeah, the software works as well.

Elizabeth Figura 00:03:59 Yeah. And we also need to implement those things to make old programs work because there is a lot of demand, at least from people using Wine for getting some really old programs working from the early nineties even.

Jeremy Jung 00:04:12 And that’s probably a good thing to talk about in terms of what are the types of software that people are trying to run with Wine and what operating system are they typically using?

Elizabeth Figura 00:04:22 In terms of software? Literally all kinds, any software you can imagine that runs on Windows, people will try to run it on Wine. So we’re talking games office software, productivity software, accounting. People will run build systems online, just run, build their programs using on Visual Studio, running on Wine. People will run Wine on servers for example, like software as a service kind of things where you don’t even know this is running on Wine. Really super domain specific stuff. Like I’ve run astronomy software in Wine design, computer assisted design, even hardware drivers can sometimes work on Wine. There’s a bit of a gray area.

Jeremy Jung 00:05:00 I think from maybe the general public, or at least from what I’ve seen. I think a lot of people’s exposure to it is for playing games. Is there something different about games versus all those other types of productivity software and office software that makes supporting those different?

[...]


Original source

Reply