Wine is an open-source compatibility layer for running Windows applications on Unix-based operating systems, such as Linux and macOS. It allows users to run Windows software without the need for a Windows operating system.
Wine stands for "Wine Is Not an Emulator" because it does not emulate a full Windows environment, but rather translates Windows system calls into their equivalents on the host system. This allows Windows applications to run more efficiently and with better performance than if they were emulated.
Is Wine an emulator or a virtual machine?
Wine does not emulate hardware or run a full copy of Windows. Instead, it runs Windows applications directly by re-implementing Windows APIs, which often results in better performance and lower system overhead compared to virtual machines.
What types of applications work best with Wine?
Many older Windows applications, productivity software, and a wide range of games run well under Wine. Compatibility varies by application, and some programs may work flawlessly while others may require tweaks or not run at all.
Do I need a Windows license to use Wine?
No. Wine itself does not require a Windows license because it does not include or rely on Microsoft Windows code. However, applications that normally require a valid Windows license still need one.
Is Wine suitable for everyday use?
Wine can be suitable for daily use depending on the applications you rely on. For users who need occasional access to specific Windows software, Wine can be a practical solution, though mission-critical or highly specialized applications may still require native Windows or virtualization.
What's New
Wine Beta 11.5:
What's new in this release:
- C++ support in the build system.
- Bundled ICU libraries.
- Support for Syscall User Dispatch on Linux.
- A number of VBScript compatibility fixes.
- Various bug fixes.
Bugs fixed in 11.5 (total 22):
- #31047 unable to edit gedit's preferences
- #35904 USB connection not recognized by Axon MultiClamp Commander 700B.
- #42687 Evernote installation fails
- #42811 PCG Tools Application fails to install
- #48291 Multiple applications crash due to direct use of x86_64 SYSCALL instruction (Detroit: Become Human, Red Dead Redemption 2, Arknights: Endfield)
- #50532 get_timezone_info doing binary search in the wrong way
- #50636 Reading indexed bitmap wrongly returns 32bit instead of 8bit
- #55037 vbscript: Colon on new line after Then fails
- #58806 Smart quotes in code example misleads clang
- #58963 Stratego (1997) fails to start with error message "Unable to 'CreateScalableFontResource()'"
- #59138 Timelapse export failing in Clip Studio Paint
- #59223 Sony Home Memories Throws Unrecoverable error during installation
- #59314 Swift crashes on unimplemented function ADVAPI32.dll.SaferiIsExecutableFileType
- #59361 MDI child window creation don't respect the window attribute (not WS_MAXIMIZEBOX)
- #59460 bcrypt: Implement RSA-OAEP padding defaults (fixes Wallpaper Engine mobile sync)
- #59474 File dialog crashes in .NET applications like UndertaleModTool
- #59502 VOCALOID6 crashes on startup due to unimplemented wminet_utils stubs
- #59504 jscript: GetScriptDispatch("") returns E_INVALIDARG instead of global dispatch
- #59514 time()/localtime() performance has regressed significantly
- #59531 CertCreateCertificateChainEngine fails with invalid argument in rustls-platform-verifier
- #59541 replacing bass.dll with samp.dll causes freeze/black screen under wine . samp.dll works fine under windows
- #59542 CEF crashes in dwrite when browsing The Verge (weird font file)
Wine Stable 11.0:
This release represents a year of development effort, around 6,300 individual changes, and more than 600 bug fixes. It contains a large number of improvements that are listed below. The main highlights are the NTSYNC support and the completion of the new WoW64 architecture.
WoW64
- The new WoW64 mode that was first introduced as experimental feature in Wine 9.0 is considered fully supported, and essentially has feature parity with the old WoW64 mode.
- 16-bit applications are supported in the new WoW64 mode.
- It is possible to force an old WoW64 installation to run in new WoW64 mode by setting the variable WINEARCH=wow64. This requires the prefix to have been created as 64-bit (the default).
- Pure 32-bit prefixes created with WINEARCH=win32 are deprecated, and are not supported in new WoW64 mode.
- The wine64 loader binary is removed, in favor of a single wine loader that selects the correct mode based on the binary being executed. For binaries that have both 32-bit and 64-bit versions installed, it defaults to 64-bit. The 32-bit version can then be launched with an explicit path, e.g. wine c:\windows\syswow64\notepad.exe.
Synchronization / Threading
- The NTSync Linux kernel module is used when available, to improve the performance of synchronization primitives. The needed kernel module is shipped with the Linux kernel starting from version 6.14.
- Thread priority changes are implemented on Linux and macOS. On Linux, this is constrained by the system nice limit, and current distributions require some configuration to change the nice hard limit to a negative value (in the -19,-1 range, where -5 is usually enough, and anything lower is not recommended). See man limits.conf(5) for more information.
- NTDLL synchronization barriers are implemented.
- On macOS, the %gs register is swapped in the syscall dispatcher. This avoids conflicts between the Windows TEB and the macOS thread descriptor.
Kernel
- NT Reparse Points are implemented, with support for the mount point and symlink types of reparse points.
- Write Watches take advantage of userfaultfd on Linux if available, to avoid the cost of handling page faults in user space.
- NT system calls use the same syscall numbering as recent Windows, to support applications that hardcode syscall numbers.
- On ARM64, there is support for simulating a 4K page size on top of larger host pages (typically 16K or 64K). This works for simple applications, but because it is not possible to completely hide the differences, more demanding applications may not work correctly. Using a 4K-page kernel is strongly recommended.
Graphics
- The OSMesa dependency is removed, and OpenGL bitmap rendering is implemented with the hardware accelerated OpenGL runtime.
- The EGL OpenGL backend is extended, and used by default on the X11 platform. The GLX backend is deprecated but remains available, and is used as fallback if EGL isn't available. It can also be forced by setting the value UseEGL=N in the HKCU\Software\Wine\X11 Driver registry key.
- The VK_KHR_external_memory_win32, VK_KHR_external_semaphore_win32, VK_KHR_external_fence_win32, VK_KHR_win32_keyed_mutex extensions and the related D3DKMT APIs are implemented.
- In new WoW64 mode, OpenGL buffers are mapped to 32-bit memory space using Vulkan extensions if available.
- Front buffer OpenGL rendering is emulated for platforms that don't support it natively.
- OpenGL context sharing implementation in wglShareLists is improved.
- The Vulkan API version 1.4.335 is supported.
- Image metadata handling is better supported in WindowsCodecs.
- Many more conversions between various pixel formats are supported in WindowsCodecs.
Desktop integration
- X11 Window Manager integration is improved: window activation requests are sent to the Window Manager, and the EWMH protocol is used to keep the X11 and the Win32 active windows consistent.
- Exclusive fullscreen mode is supported, and D3D fullscreen mode is improved, especially improving older DDraw games.
- Shaped and color-keyed windows are supported in the experimental Wayland driver.
- Performance of several windowing-related functions is improved, using shared memory for communication between processes.
- Clipboard support is implemented in the Wayland driver.
- Input Methods are supported in the Wayland driver.
Direct3D
Hardware decoding of H.264 video through Direct3D 11 video APIs is implemented over Vulkan Video. Note that the Vulkan renderer must be used. As in previous Wine versions, the Vulkan renderer can be used by setting renderer to vulkan using the Direct3D registry key or WINE_D3D_CONFIG environment variable.
Direct3D 11 sampler minimum/maximum reduction filtering is implemented if GL_ARB_texture_filter_minmax is available (when using the GL renderer) or VK_EXT_sampler_filter_minmax (when using the Vulkan renderer).
The following legacy Direct3D features are implemented for the Vulkan renderer:
- Point size control.
- Point sprite control.
- Vertex blending.
- Fixed-function bump mapping.
- Color keying in draws.
- Flat shading.
- Alpha test.
- User clip planes.
- Several resource formats.
Additionally, the bundled copy of vkd3d-shader includes many improvements for Shader Model 1, 2, and 3 shaders, including notably support for Shader Model 1 pixel shaders and basic Shader Model 1 texturing. The Vulkan renderer is not yet at parity with the GL renderer, and is therefore not yet the default.
Direct3D helper libraries
- D3DXSaveSurfaceToFileInMemory is reimplemented for PNG, JPEG and BMP files, enabling support for formats and other edge cases not supported by WindowsCodecs. It also supports saving surfaces to TARGA files.
- D3DX 11 texture loading functions are implemented, using code shared with earlier D3DX versions.
- Box filtering is supported in all versions.
- D3DXSaveTextureToFileInMemory supports saving textures to DDS files.
- D3DX 9 supports reading 1-bit, 2-bit, and 4-bit indexed pixel formats, as well as the CxV8U8 format.
- D3DX 10 and 11 support compressing and decompressing BC4 and BC5 formats.
- D3DX 10 and 11 support generating mipmap levels while loading textures.
- ID3DXEffect::SetRawValue() is partially implemented.
- ID3DXSkinInfo::UpdateSkinnedMesh() is implemented.
Input / HID devices
- Compatibility with more Joystick devices is improved through the hidraw backend. Per-vendor and per-device registry options are available to selectively opt into the hidraw backend.
- Force feedback support is improved, with increased compatibility for joysticks and driving wheels, and better performance.
- Better support for gamepads in the Windows.Gaming.Input API and with the evdev backend when SDL is not available or disabled.
- There is a configuration tab for the Windows.Gaming.Input API in the Game Controllers Control Panel applet.
- DirectInput compatibility with older games that use action maps and device semantics is improved.
- More device enumeration APIs from Windows.Devices.Enumeration and cfgmgr32 are implemented.
Bluetooth
- The Bluetooth driver supports scanning and configuring host device discoverability, with some basic support for pairing via both the API and a wizard. At this point, this is only supported on Linux systems using BlueZ.
- Bluetooth radios and devices (both classic and low-energy) are visible to Windows applications.
- Applications can make low-level RFCOMM connections to remote devices using winsock APIs.
- There is initial support for Bluetooth Low Energy (BLE) Generic Attribute Profile (GATT) services and characteristics, making them visible through the Win32 BLE APIs.
Scanner support
- DAT_IMAGENATIVEXFER is supported.
- Scanner selection and configuration are saved in the registry.
- TWAIN 2.0 API for scanning is implemented, which allows scanning to work in 64-bit applications.
- Multi-page and Automatic Document Feed scans are supported.
- There is a user interface showing scanning progress and error messages.
- The scanner user interface no longer blocks the application using it.
- Windows-native scanner drivers can be loaded if they're installed in Wine.
Multimedia
- The Multimedia Streaming library implements a custom allocator for DirectDraw streams, reducing the number of buffer copies required for filters which support a downstream custom allocator.
- Dynamic format change is supported in the DMO Wrapper, AVI Decoder, and GStreamer-based demuxer and transform filters.
- GStreamer-based demuxer filters support the Indeo 5.0 codec.
- The DirectSound Renderer filter more properly signals end-of-stream. Previously end-of-stream could be signaled too early, clipping the end of an audio stream.
- The ASF Reader filter supports seeking.
- The AVI Decoder filter supports nontrivial source and destination rectangles.
