4 ms·
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
by stuxnet79 8y ago
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.
- simion314 8y agoI 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.
- swebs 8y agoIt'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.
- gnode 8y ago> 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.
- yellowapple 8y agoI guess if you'd call Java an "emulator", then you could probably do the same for Wine.
- msla 8y ago> WINE abstracts away the operating system kernel WINE is an emulator to the same extent libc is an emulator, then.
- gpderetta 8y agoIt 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.
- gnode 8y agoIt 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.
- stuxnet79 8y agoThanks 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.