Not an emulator but a compatibility tool that translates Windows calls into language Linux can understand, Wine 6.4 is officially out now as the latest development release.
For newer readers and Linux users here's a refresher - Wine is a compatibility layer built for operating systems like Linux, macOS and BSD. The idea is to allow other platforms to run games and applications only built and supported for Windows. It's also part of what makes up Steam Play Proton. Once a year or so, all the development is bundled into a stable release.
Here's what's new in Wine 6.4:
- Support for the DTLS protocol.
- Fontset support in DirectWrite.
- Dialog for editing Access Control entries.
- Theming support for a few more common controls.
- Support for Korean Wansung encoding.
There's also 38 bugs noted as fixed this time around. As usual some being quite old that were fixed a while ago, each release sees the team go over bugs to see what are still actually a problem. Like with this release a bug report from 2007 was finally marked as solved along with issues fixed for: Civilization IV, Soldiers of Anarchy, The Elder Scrolls V: Skyrim SE, Entropia Universe, Banished, Horizon Zero Dawn, Serious Sam 4, The Witcher 3 and more.
Quoting: GamingOnLinuxNot an emulator but a compatibility toolLove you :D <3
Quoting: F.UltraQuoting: PinguinoA one-sentence summary would be quite hardChallenge accepted.
Quoting: PinguinoCould anyone give me a one-sentence summary on the difference between emulators and translation layers?Think of WINE as an interpreter for spoken languages. WINE translates the language between Windows and Linux, while an emulator attempts an exact recreation of hardware with software.
As pointed out earlier, this is actually not really correct or perhaps confusing -- the language on (most) Linux systems is x86, as is on (most) Windows. But, while the language is the same, Windows and Linux have different "higher level concepts", and Wine can sort of work as a dictionary for looking up the Windows "meaning". But the analogy falls apart rather fast.
The point is: An operating system doesn't execute a program, really, it just nudges the CPU to do the actual execution. The OS is just there for outsourcing some tasks that otherwise every program would need to do (much simplified). Programs ask the OS to do these tasks for them, however the interface b/w OS <-> program differs from Windows to Linux.
So, while most parts (in theory) of a Windows and a Linux binary are pretty much the same, they differ when it comes to asking the OS to do tasks like "render picture on screen". In that case, the program can then consult Wine and Wine tells Linux what to do.
Side note: Actually the complete Windows OS API is already such a translation layer. Because the "actual" OS (the Kernel) when using Windows doesn't "speak Windows" (win32) but NT. So while on Windows asking to render a picture looks like:
program -> Win32 API -> NT API
on Linux it looks like:
program -> Wine -> Linux API
So, basically, Wine is a Win32 API implementation (and program loader) for the Linux kernel instead of the NT kernel one.
Quoting: PinguinoCould anyone give me a one-sentence summary on the difference between emulators and translation layers? I've done some searching and I think I got the gist of it (low-level emulators are basically trying to recreate the emulated OS instead of just wrapping individual functions), but I couldn't see much distinction between high-level emulation and a translator.
In narrow sense emulator can mean something that emulates hardware. I.e. imagine something that implements one CPU architecture in software to run on another CPU architecture (example - Qemu).
In a wider sense it means any kind of imitation. So in the first sense Wine is not emulating hardware. But in the second sense Wine is emulating Windows.
Last edited by Shmerl on 14 March 2021 at 2:40 am UTC
Quoting: ShmerlMaybe, but I'm pretty sure the people who named Wine would beg to differ on that. I think the position would be something along the lines of, an emulator for Windows would be something that basically reproduced the Windows API-whatever in userspace and had Windows programs run in it, whereas what Wine was doing was just translating the Windows program's requests so Linux would understand them.Quoting: PinguinoCould anyone give me a one-sentence summary on the difference between emulators and translation layers? I've done some searching and I think I got the gist of it (low-level emulators are basically trying to recreate the emulated OS instead of just wrapping individual functions), but I couldn't see much distinction between high-level emulation and a translator.
In narrow sense emulator can mean something that emulates hardware. I.e. imagine something that implements one CPU architecture in software to run on another CPU architecture (example - Qemu).
In a wider sense it means any kind of imitation. So in the first sense Wine is not emulating hardware. But in the second sense Wine is emulating Windows.
Quoting: STiATWhen they talk about vulkan rendering fixes, has this any impact on VKD3D/D9VK or is this their Vulkan implementation they are talking about?The Wine release notes wouldn't list fixes to third-party software, so yeah, they're talking about WineD3D.
Quoting: Purple Library GuyMaybe, but I'm pretty sure the people who named Wine would beg to differ on that. I think the position would be something along the lines of, an emulator for Windows would be something that basically reproduced the Windows API-whatever in userspace and had Windows programs run in it, whereas what Wine was doing was just translating the Windows program's requests so Linux would understand them.
Or you could apply duck typing here. I.e. if it behaves like Windows, it emulates Windows. How exactly it does it underneath is really not very important for the program for which Wine acts as Windows environment (thus emulating Windows).
Quoting: LeonardKDude, chill.Quoting: GuestWhat exactly are you trying to prove with all that? because all I see is a kid just wanting to prove some one wrong on the internet again. See this is the reason I don't post here much, there is always some self proclaimed Linux GURU wanting to prove you wrong. It's petty.Quoting: F.UltraQuoting: PinguinoA one-sentence summary would be quite hardChallenge accepted.
Quoting: PinguinoCould anyone give me a one-sentence summary on the difference between emulators and translation layers?Think of WINE as an interpreter for spoken languages. WINE translates the language between Windows and Linux, while an emulator attempts an exact recreation of hardware with software.
As pointed out earlier, this is actually not really correct or perhaps confusing -- the language on (most) Linux systems is x86, as is on (most) Windows. But, while the language is the same, Windows and Linux have different "higher level concepts", and Wine can sort of work as a dictionary for looking up the Windows "meaning". But the analogy falls apart rather fast.
The point is: An operating system doesn't execute a program, really, it just nudges the CPU to do the actual execution. The OS is just there for outsourcing some tasks that otherwise every program would need to do (much simplified). Programs ask the OS to do these tasks for them, however the interface b/w OS <-> program differs from Windows to Linux.
So, while most parts (in theory) of a Windows and a Linux binary are pretty much the same, they differ when it comes to asking the OS to do tasks like "render picture on screen". In that case, the program can then consult Wine and Wine tells Linux what to do.
Side note: Actually the complete Windows OS API is already such a translation layer. Because the "actual" OS (the Kernel) when using Windows doesn't "speak Windows" (win32) but NT. So while on Windows asking to render a picture looks like:
program -> Win32 API -> NT API
on Linux it looks like:
program -> Wine -> Linux API
So, basically, Wine is a Win32 API implementation (and program loader) for the Linux kernel instead of the NT kernel one.
I know all about coding, how operating systems work, and how API's communicate, you don't need to prove any thing to me. Don't just assume other people don't know any thing.
Technically, you're (almost) right, congratulations to you. But you missed one stupidly obvious and huge point, the OP's original question.
"Could anyone give me a one-sentence summary on the difference between emulators and translation layers?"
He wanted a short summary of the difference between them. Not a lecture of the in's and out's of how API's work.
So in a short summary, I am still right, because while WINE is an API (like you say), it still just [/i]acts as a translator/interpretor between Windows and Linux API's.
I could have always just said "kernel>api>wine api>api>kernel", but that's not what he asked for is it?
See more from me