Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

People up-voting this only to read later and find out what Proton is. I thought WINE was the Windows Emulation Layer on Linux. Although, of course, Wine Is Not an Emulator.


> what Proton is. I thought WINE was the Windows Emulation Layer on Linux

Proton is just a fork of WINE[0], with a gaming focus and some Steam-specific compatibility additions.

[0] https://github.com/ValveSoftware/Proton/


Yeah, more specifically:

- DXVK, a translation layer for DX10/11 to Vulkan

- ESync

- Wine

- Proper overlay support within Steam


You forgot another important part:

- Official Steamworks support without need to also run Windows version of Steam.

Most games on Steam use Steamworks for multiplayer and while there was steam bridge before, but it's wasn't official.


Yup, I missed that part. thanks.


And it works great! I'm using it to run Windows-only games on Linux without issues. (I'm not playing extremely demanding titles, though.)


Nice, can you install custom ones or do they need to be from steam?


I'm a big fan of Porting Kit, a Mac app that has a library of pre-configured Wine wrappers for windows games, the installers for which are usually obtained from GOG or Steam. It worked really well. Currently enjoying Far Cry 2 on my iMac.


The equivalent on Linux is Lutris.


WINE abstracts away the operating system kernel so it is essentially a process or application VM, which is an emulator. Don't wanna argue semantics but I never understood the recursive acronym. WINE _is_ an emulator.


> WINE abstracts away the operating system kernel

WINE is an emulator to the same extent libc is an emulator, then.


It is a bit more than a library because it has a significant Runtime component, but a bit less than a full blown VM.

You could also call a drop in libc replacement that not only implements the standard but also the quirks and extensions of a specific implementation, an emulator.


I am thinking at it from this point of view, say you create a library named libmath and you put a function in it named add. Then someone makes an app that uses your libmath named MathApp.

If I reimplemnt libmath myself, then do some trickery to make MathApp use my version did I emulate your library or reimplement it? IMO I reimplemented it and it is very possible that my implementation could be less buggy and faster in some cases.


It is an emulator, because it mimics the behaviour of the native Windows APIs. It's an abstraction layer on top of Linux syscalls, as much as libc is such an abstraction. However it's not a process virtual machine, that's provided by the kernel, and doesn't differ from what ordinary Linux processes get.


Thanks for clarifying. What is a typical example of a process virtual machine then? I'd always thought that applications that abstract away the kernel for the purposes of running software from a different OS were classic process VMs.


I guess if you'd call Java an "emulator", then you could probably do the same for Wine.


It's because when most people hear "emulator" they think of hardware emulators, which have a huge performance penalty. WINE is just translating x86 code to x86 code with minimal to no performance loss, so they want to distance themselves from the emulator label.


> translating x86 code to x86 code

My understanding is that it doesn't do any of this. Windows programs generally don't make direct syscalls, they're undocumented and only used by Microsoft-written DLLs. Wine provides a re-implementation of these DLLs suitable for Unix-like systems. The code of the program itself is untranslated and runs as-is with no performance loss.




Consider applying for YC's Winter 2026 batch! Applications are open till Nov 10

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: