The Wine development release 4.8 is now available.
What's new in this release (see below for details): - Support building most programs in PE format. - Unicode data updated to Unicode 12.0. - Support for MSI patch files. - Default to non-PIC builds on i386. - Joystick support improvements. - Asturian locale. - Various bug fixes.
The source is available from the following locations:
https://dl.winehq.org/wine/source/4.x/wine-4.8.tar.xz http://mirrors.ibiblio.org/wine/source/4.x/wine-4.8.tar.xz
Binary packages for various distributions will be available from:
https://www.winehq.org/download
You will find documentation on https://www.winehq.org/documentation
You can also get the current source directly from the git repository. Check https://www.winehq.org/git for details.
Wine is available thanks to the work of many people. See the file AUTHORS in the distribution for the complete list.
----------------------------------------------------------------
Bugs fixed in 4.8 (total 38):
12332 Microsoft Windows Server 2003 DDK SP1 installer crashes ('setupapi.SetupCloseFileQueue' should do proper handle validation before accessing members) 14695 Lifeforce demo misses codecs (msvideo1 needs to support 24 bpp output) 28196 Test Drive Unlimited: Water is always rendered on top of everything. 28254 Multiple kernel drivers crash during load/relocation (relocation entry crosses page boundary)(PMP Exam Version 7 CrypKey, Age of Wushu SDProtect DRM, StarForce v3) 29460 Multiple kernel drivers crash in entry due to ntoskrnl.exe IoGetCurrentProcess() being a stub (Ruijie Supplicant Su1xDriver.sys, nProtect GameGuard/Tachyon Kernel Control Driver) 31101 ScoobyRom v0.6.x-0.8.x (.NET 4.0 app) fails to start with Wine-Mono 31350 Multiple .NET 3.x WPF applications crash in Vista/Win7 mode due to dwmapi.DwmGetTransportAttributes stub returning E_NOTIMPL (T-Online Mediencenter Assistent, Valil.Chess, Zwift 1.0) 34372 Multiple applications need AllocateAndGetTcpExTableFromStack (cross compiled dbus, spamMonitor) 37359 planetside 2 no mouseclicks registered 37540 Multiple games and applications wrapped with Enigma v4 and GG DRM schemes crash on startup (incompatible with use of position independent code (PIC) in Wine dlls) 38423 Python 3.5.x exe installer fails with Access denied error 39614 Wine initialises a Critical Section for Mutexes by NULL instead of (void*)-1 42420 MidiIllustrator Virtuoso 3 crashes when using any File open dialog 44850 Microsoft Skype 8.x crashes on unimplemented function iphlpapi.dll.GetBestRoute2 45155 OpenGL Window Z order in Truespace 45213 Multiple applications using Microsoft Detours library crash on startup after compiling Wine with GCC 8.x+ and -O2 (GOT/PIC code emitted at Win32 API entries)(Microsoft Visual Studio 201x, Visual Assist plugin) 45757 Visual Studio 2017 Installer - "The installer manifest failed signature validation" 45765 Universe Sandbox 2 unimplemented function USER32.dll.GetPointerType 45947 Native Access crashes on unimplemented function virtdisk.dll.OpenVirtualDisk 46861 TopoEdit crashes with unimplemented function mf.dll.MFEnumDeviceSources 46905 Multiple eventlog monitor applications go haywire (endless console spam, live-loop CPU) due to advapi32.ReadEventLogA/W returning lasterror ERROR_CALL_NOT_IMPLEMENTED 46989 Grand Prix Legends: Wheel (Wheel, Gas, Brake) axes inputs aren't recognized 46993 ntoskrnl.exe tests don't compile when using -O0 47016 MS Office 365 installer needs mfplay.dll.MFPCreateMediaPlayer 47023 Warframe in-game screenshot fails if screenshot directory already exists 47027 Wine built with GCC 8.x+ and -O2 causes apps and games using madCodeHook/madExcept 3.x/4.x to crash (hook engine can't cope with GOT/ PIC code emitted within 15-byte range at Win32 API entries)(EA Origin, HeidiSQL 10.x) 47032 valgrind shows uninitialized read in writev from call_req_handler 47082 NI System Web Server crashes on unimplemented function authz.dll.AuthzFreeResourceManager 47096 World of Warships 0.8.3.x client (DirectX 11) crashes when post-battle results screen is about to be displayed 47097 Wine built with GCC 8.x+ and -O2 causes Steam games using In-Game Overlay 'gameoverlayrenderer.dll' to crash (hook engine can't cope with GOT/PIC code emitted at Win32 API entries) 47107 Windows XP DDK installer fails to copy any files 47122 Star Citizen stopped working on commit 32d7838da73dd9bc3ee999d73a310da7adfb27dd 47123 Starcitizen - joystick not recognized 47129 Rendering glitch in Caste Siege/Ballerburg (invalid vertex count in IDirect3DDevice3::DrawIndexedPrimitiveVB) 47131 Esportal client 1.0 (CS:GO anti-cheat) fails to start, reporting 'The procedure entry point InitiateShutdownW could not be located in the dynamic link library ADVAPI32.dll' 47138 Microsoft .NET Framework 2.x installer fails ('RegSvcs.exe' bootstrapper needs unicode casing tables, 'l_intl.nls' no longer installed in WINEPREFIX) 47142 Esportal client 1.0 (CS:GO anti-cheat) fails to start, reporting 'The procedure entry point NdrServerCallAll could not be located in the dynamic link library RPCRT4.dll' 47145 Esportal client 1.0 (CS:GO anti-cheat) fails to start, reporting 'The procedure entry point K32GetWsChangesEx could not be located in the dynamic link library KERNEL32.dll'
----------------------------------------------------------------
Changes since 4.7:
Alexandre Julliard (85): attrib: Build with msvcrt. cabarc: Build with msvcrt. clock: Build with msvcrt. control: Build with msvcrt. dxdiag: Build with msvcrt. eject: Build with msvcrt. expand: Build with msvcrt. extrac32: Build with msvcrt. hh: Build with msvcrt. hostname: Build with msvcrt. icinfo: Build with msvcrt. iexplore: Build with msvcrt. ipconfig: Build with msvcrt. msidb: Build with msvcrt. msiexec: Build with msvcrt. net: Build with msvcrt. netstat: Build with msvcrt. oleview: Build with msvcrt. progman: Build with msvcrt. regsvr32: Build with msvcrt. ntdll: Check for time conversion error to silence a compiler warning. makefiles: Also pass -fPIC flag when linking. rpcss: Build with msvcrt. rundll32: Build with msvcrt. sc: Build with msvcrt. schtasks: Build with msvcrt. services: Build with msvcrt. start: Build with msvcrt. svchost: Build with msvcrt. taskkill: Build with msvcrt. uninstaller: Build with msvcrt. view: Build with msvcrt. makefiles: Don't use custom LDFLAGS to link dlls. configure: Disable stdcall fixups for PE builds. include: Add DECLSPEC_IMPORT on OpenGL functions when not building opengl32. crypt32: Fix comparison of domain name components. winedevice: Build with msvcrt. winemine: Build with msvcrt. winemsibuilder: Build with msvcrt. winetest: Build with msvcrt. winhlp32: Build with msvcrt. wmic: Build with msvcrt. write: Build with msvcrt. wscript: Build with msvcrt. ping: Avoid using getopt(). ping: Build with msvcrt. winefile: Get rid of the Unix filesystem support. winefile: Build with msvcrt. include: Use DECLSPEC_HIDDEN instead of DECLSPEC_IMPORT for dll exports. include: Move DECLSPEC_HOTPATCH definition out of config.h. makefiles: Support delay imports for PE builds. makefiles: Use a separate LDFLAGS variable for cross-compilation. makefiles: Only cross-compile the import libraries that are actually used. makefiles: Only cross-compile the static libraries that are actually used. dxerr8: Don't use snprintf(). dxerr9: Don't use snprintf(). strmbase: Avoid using wine/unicode.h. cmd: Build with msvcrt. explorer: Move screen saver activation to the X11 driver. explorer: Build with msvcrt. cmd: Explicitly mark qsort() callback funtions cdecl. services: Explicitly mark a qsort() callback funtion cdecl. uninstaller: Explicitly mark a qsort() callback funtion cdecl. winefile: Explicitly mark qsort() callback funtions cdecl. winhttp/tests: Get a test file from the WineHQ tests subdirectory. include/msvcrt: Add inttypes.h header. advapi32: Use strncmpiW instead of memicmpW for strings without embedded nulls. atl: Use strncmpiW instead of memicmpW for strings without embedded nulls. fusion: Use strncmpiW instead of memicmpW for strings without embedded nulls. kernel32: Use strncmpiW instead of memicmpW for strings without embedded nulls. kernelbase: Use strncmpiW instead of memicmpW for strings without embedded nulls. mountmgr.sys: Use strncmpiW instead of memicmpW for strings without embedded nulls. mshtml: Use strncmpiW instead of memicmpW for strings without embedded nulls. msi: Use strncmpiW instead of memicmpW for strings without embedded nulls. kernel32: Reset stdio file descriptors when passed invalid handles. ntdll: Reset stdio file descriptors when passed invalid handles. netapi32: Use strncmpiW instead of memicmpW for strings without embedded nulls. ntdll: Use strncmpiW instead of memicmpW for strings without embedded nulls. pdh: Use strncmpiW instead of memicmpW for strings without embedded nulls. qmgr: Use strncmpiW instead of memicmpW for strings without embedded nulls. shlwapi: Use strncmpiW instead of memicmpW for strings without embedded nulls. urlmon: Use strncmpiW instead of memicmpW for strings without embedded nulls. userenv: Use strncmpiW instead of memicmpW for strings without embedded nulls. wbemprox: Use strncmpiW instead of memicmpW for strings without embedded nulls. webservices: Use strncmpiW instead of memicmpW for strings without embedded nulls.
Alistair Leslie-Hughes (12): wintab32/tests: Improve WTInfoA tests. authz: Add AuthzFreeResourceManager stub. dinput: Don't return unsupported interfaces. dinput: Return E_NOINTERFACE from IDirectInputDevice2 QueryInterface. dinput: Don't report that we cannot open a device. dinput: Improve EnumDevice tracing. dinput: Support DIDEVICEINSTANCE_DX3 for Mouse GetDeviceInfo. dinput: Use a helper function to get device type. dinput: Trace This pointer in a consistent way. dinput: Ensure Cursor is visible on config dialog. mspatcha/tests: Fix compile error on older compilers. mspatcha/tests: Make functions static.
Andrew Eikum (11): winebus.sys: Fix some report descriptors. winebus.sys: Fix udev report descriptor length. winebus.sys: Remove some magic numbers. winebus.sys: Fix ball value reporting. hid: Shift usage values to LSB. dinput: Use heuristics to guess if a device is a gamepad or a joystick. winebus.sys: Order axes before buttons. winebus.sys: Report hatswitch values correctly. winebus.sys: Report SDL controller dpad as hatswitch. winebus.sys: Report SDL controller buttons in the right order. winebus.sys: Pack hatswitch values into button bytes.
Aric Stewart (2): winemac.drv: Set done if macdrv_process_text_input is not processing input. winemac.drv: Allow mac IME to clear text in system input method.
Austin English (2): iphlpapi: Add GetBestRoute2 stub. advapi32: In ReadEventLogA/W, return ERROR_HANDLE_EOF instead of ERROR_CALL_NOT_IMPLEMENTED.
Bryon Roche (1): windowscodecs: Byte swap png read/write for 16-bpp data.
Conor McCarthy (4): mspatcha: Add functions to API header file. mspatcha: Partially implement ApplyPatchToFileW and related functions. mspatcha/tests: Test implementations of ApplyPatchToFileW and related functions. mspatcha: Add stubs for signature and normalization functions.
Damjan Jovanovic (1): qcap/vfwcapture: Implement IPin::CheckMediaType().
Derek Lesho (2): ntoskrnl.exe: Export and set PsInitialSystemProcess. ntoskrnl.exe: Implement PsIsSystemThread.
Dmitry Timoshkov (2): crypt32: CryptMsgUpdate should skip broken certificates. mshtml: Implement HTMLStyleSheetRulesCollection::item.
Enol Puente (4): wrc: Add Asturian locale. wmc: Support Asturian. kernel32: Add Asturian locale. po: Add Asturian translation.
Erich Hoover (2): iphlpapi: Implement AllocateAndGetTcpExTableFromStack. kernel32: Add SearchPath test demonstrating the priority of the working directory.
François Gouget (4): ntoskrnl.exe: Make run_work_item_worker() static. user32: Make WIN_SetOwner() static. kernel32/tests: Use ok_() so the TestBot can correctly detect the line. jscript: Make the Enumerator_props functions static.
Henri Verbeet (37): wined3d: Introduce a debug helper for Vulkan return values. wined3d: Use shader_glsl_append_imm_vec4() in shader_glsl_get_register_name(). wined3d: Get rid of the redundant "device" parameter to context_destroy(). wined3d: Introduce a separate structure for OpenGL context information. wined3d: Introduce wined3d_context_init(). wined3d: Simplify wined3d_context_destroy(). wined3d: Rename context_destroy_gl_resources() to wined3d_context_cleanup(). wined3d: Free the "texture_type" array in wined3d_context_cleanup(). wined3d: Introduce wined3d_context_gl_destroy(). wined3d: Free shader backend and fragment pipe context data in device_context_remove(). wined3d: Allocate shader backend and fragment pipe context data in device_context_add(). wined3d: Get rid of the "target" parameter to context_create(). wined3d: Get rid of the "target" parameter to wined3d_context_init(). wined3d: Get rid of the "target" parameter to wined3d_adapter_gl_create_context(). wined3d: Get rid of context_validate_onscreen_formats(). winex11: Only handle errors from GLX requests in GLXErrorHandler(). wined3d: Query Vulkan GPU memory. wined3d: Get rid of a redundant initialisation in wined3d_device_set_implicit_swapchain(). wined3d: Share more swapchain setup with the "no3d" adapter in wined3d_device_set_implicit_swapchain(). wined3d: Determine the ORM_BACKBUFFER depth/stencil format in wined3d_adapter_gl_create_context(). wined3d: Make the adapter responsible for context destruction and allocation. wined3d: Pass a wined3d_context_gl structure to context_bind_texture(). wined3d: Move the "texture_type" field from struct wined3d_context to struct wined3d_context_gl. wined3d: Move the "dummy_arbfp_prog" field from struct wined3d_context to struct wined3d_context_gl. wined3d: Store the glEnableWINE and glDisableWINE pointers in the wined3d_gl_info structure. wined3d: Move the extension emulation fields from struct wined3d_context to struct wined3d_context_gl. wined3d: Pass a wined3d_context_gl structure to context_load_tex_coords(). wined3d: Pass a wined3d_context_gl structure to context_get_tex_unit_mapping(). wined3d: Pass a wined3d_context_gl structure to context_bind_shader_resources(). wined3d: Pass a wined3d_context_gl structure to context_apply_blit_state(). wined3d: Pass a wined3d_context_gl structure to context_apply_ffp_blit_state(). wined3d: Pass a wined3d_context_gl structure to wined3d_texture_gl_bind_and_dirtify(). wined3d: Pass a wined3d_context_gl structure to context_map_stage(). wined3d: Pass a wined3d_context_gl structure to context_map_fixed_function_samplers(). wined3d: Pass a wined3d_context_gl structure to context_map_psamplers(). wined3d: Pass a wined3d_context_gl structure to context_map_vsamplers(). wined3d: Pass a wined3d_context_gl structure to context_unit_free_for_vs().
Jacek Caban (26): ntoskrnl.exe: Implement IoGetCurrentProcess. ntoskrnl.exe: Implement PsGetProcessId. ntoskrnl.exe: Implement PsGetThreadId. ntoskrnl.exe: Implement ObOpenObjectByPointer. ntoskrnl.exe: Use ObOpenObjectByPointer to get handle for kernel object. ntoskrnl.exe: Support SL_INVOKE_ON_CANCEL in IoCompleteRequest. ntoskrnl.exe: Support NULL offset in IoBuildSynchronousFsdRequest. ntoskrnl.exe: Use ObGetObjectType in kernel_object_from_handle. ntoskrnl.exe: Implement IoAllocateWorkItem and IoFreeWorkItem. ntoskrnl.exe: Implement IoQueueWorkItem. ntoskrnl.exe: Add work item tests. ntoskrnl.exe: Implement IoBuildAsynchronousFsdRequest. ntoskrnl.exe/tests: Add IoCallDriver tests. ntoskrnl.exe: Implement IoCancelIrp. ntoskrnl.exe/tests: Add CancelIo tests. ntoskrnl.exe: Set IRP DeviceObject in IoCallDriver. ntoskrnl.exe: Support UserEvent in IoCompleteRequest. server: Pass IRP output size in irp_params_t. server: Don't use IRP_MJ_* constants for ntoskrnl.exe communication. server: Store currently executed IRP call on server side. server: Pass file object handle in IRP_CALL_CREATE request. ntoskrnl.exe: Associate file object with server object before calling IRP routine. ntoskrnl.exe: Don't keep reference to driver created file objects on client side. ntoskrnl.exe/tests: Add more overlapped tests. hidclass.sys: Make read IRP queue thread safe. hidclass.sys: Support canceling read IRPs.
Jactry Zeng (2): kernel32/tests: Avoid a crash on WinXP and Win2K. d3dcompiler: Implement D3DReadFileToBlob().
Jefferson Carpenter (1): server: Add __pad member to pe_image_info_t and zero it.
Julian Rüger (1): po: Update German translation.
Józef Kucia (20): wined3d: Implement GPU description registry override for Vulkan adapter. wined3d: Factor out wined3d_copy_name(). wined3d: Make wined3d_gpu_description from Vulkan physical device properties. wined3d: Assign *device in adapter_vk_create_device(). dxgi: Avoid magic constants. d3d11: Set more format support flags. dxgi: Factor out d3d12_swapchain_record_swapchain_blit(). dxgi: Make Vulkan swapchain image count independent of DXGI buffer count. dxgi: Add some asserts for Vulkan swapchains. dxgi: Acquire Vulkan image just before present when we have user images. d3d11: Implement ID3D11Multithread. d3d11/tests: Add test for creating deferred contexts. d3d11/tests: Add test for ID3D11Multithread. d3d10core/tests: Add test for ID3D11Multithread. wined3d: Query Vulkan shared system memory. wined3d: Store texture swizzle capability in struct wined3d_d3d_info. d3d11: Report format support more accurately based on feature level. wined3d: Make the adapter responsible for initialising and de-initialising 3D. wined3d: Propagate HRESULTs in context creation functions. wined3d: Fix wined3d_get_wine_vk_version().
Louis Lenders (5): user32: Added GetPointerType stub. dwmapi: Return DWM_E_COMPOSITIONDISABLED instead of E_NOTIMPL in DwmGetTransportAttributes. advapi32: Add InitiateShutdown{A,W} stub. rpcrt4: Add NdrServerCallAll stub. kernel32: Add K32GetWsChangesEx stub.
Martin Storsjo (2): avicap32: Fix compilation with older videodev2.h. qcap: Fix compilation with older videodev2.h.
Michael Müller (3): version: Correctly return VFF_CURNEDEST in VerFindFileA. include: Add dxva.h header file. avifil32: Correctly handle compressed frames when desired format is specified.
Michael Stefaniuc (7): ntdll/tests: Avoid the comma operator. ntoskrnl.exe: Correctly initialize two CRITICAL_SECTION_DEBUGs. wintrust: Use the ARRAY_SIZE() macro. mscoree: Remove a redundant NULL check before heap_free(). riched32/tests: Test the correct return value. mfplat/tests: Remove a duplicated ok() check. rpcrt4: Use CONTAINING_RECORD instead of an extra macro.
Nikolay Sivov (32): tools: Update to Unicode 12.0. mfplat: Improve thread safety for IStream-based stream. mfplat: Improve method traces. mfreadwrite: Return sample timestamp from ReadSample(). mf: Add stub scheme handler for local file urls. ntdll: Account for null terminating char in unload traces (Coverity). mfreadwrite: Wake waiting threads on stream states changes. ntdll: Initialize critical section debug info with correct pointer value. mfplat: Copy attributes when cloning presentation descriptor. mfplat: Add more attribute guids. mf: Add MFEnumDeviceSources() stub. dbgeng/tests: Fix event handle leak (Coverity). mfplat: Implement async file stream creation API. mf: Register file: scheme handler. mfplat: Use file url scheme as a fallback. mfplat/tests: Add some tests for calling scheme handler directly. mf: Implement file scheme handler. wmvcore: Return success from OpenStream(). mf: Add a stub for sample grabber activation object. mfplat: Add topology attributes guids. mf: Implement SetObject()/GetObject() for topology node. mfplat: Improve SetGUID() traces. mfplat: Implement Read() for file-based stream. mfplat: Implement IsEndOfStream() for file stream. mfplat: Write attribute store when registering MFT. mfplat: Write flags when registering MFT. mf: Set preferred media types for nodes. mf: Implement CloneFrom() for nodes. mf: Implement node connections. mf: Rework node collection implementation. mf: Disconnect removed nodes. mf: Add IMFGetService stub for media session.
Paul Gofman (3): wined3d: Check if destination texture is FBO attachable in glsl_blitter_supported(). ddraw: Fix vertex count in d3d_device3_DrawIndexedPrimitiveVB(). wined3d: Apply stencil mask to stencil reference value.
Piotr Caban (9): winebus.sys: Add more traces on hidraw communication errors. hid: Add HidP_SetUsages implementation. hid: Add support for ranges in find_value. hid: Only set first usage in an array in HidP_SetUsageValue. hidclass.sys: Set LinkCollection field in build_elements function. hidclass.sys: Set LinkUsagePage field in build_elements function. hidclass.sys: Set LinkUsage field in build_elements function. hidclass.sys: Treat all one-bit fields as buttons. hidclass.sys: Fill some reserved fields when building HIDP_{BUTTON,VALUE}_CAPS.
Qian Hong (1): server: Create primary group using DOMAIN_GROUP_RID_USERS.
Rafał Harabień (1): ntoskrnl.exe: Fix handling relocations on page boundary.
Tim Schumacher (2): winejoystick: Add support for wheel axes. dinput: Map wheel, gas, and brake axes as well.
Vijay Kiran Kamuju (4): virtdisk: Add stub and tests for OpenVirtualDisk. include: Add missing defines, enums and functions for dwmapi.h. wpcap: Fix compile warnings for redefinition of PCAP_OPENFLAG_PROMISCUOUS. include: Add missing navigation and gamepad key definitions in winuser.rh.
Vincent Povirk (2): mscoree: Accept old framework build in exe metadata. windowscodecs: Treat 16-bit channels as little endian.
Zebediah Figura (30): quartz: Convert media type registration to IRegistrar mechanism. quartz: Avoid importing shlwapi. evr/tests: Rewrite test_evr_filter_aggregation(). evr/tests: Add tests for filter interfaces. winegcc: Add support for -fno-PIC. makefiles: Build with -fno-PIC on i386. setupapi: Extract individual files from cabinets. setupapi/tests: Avoid assert(). setupapi/tests: Add some tests for SetupInstallFilesFromInfSection(). setupapi: Avoid passing a NULL source root path to SetupQueueDefaultCopy() and SetupQueueCopySection(). setupapi: Fill out all source file parameters in SetupQueueCopySection(). setupapi: Fill out all source file parameters in SetupQueueDefaultCopy(). setupapi: Implement SetupQueueCopyIndirectA() on top of the W variant. setupapi: Remove implementation for LayoutInf parameter of SP_FILE_COPY_PARAMS. setupapi: Separate the entire copy operation into a helper function. setupapi: Keep track of source media in a separate list. setupapi: Implement SetupDefaultQueueCallback(SPFILENOTIFY_NEEDMEDIA). setupapi: Implement W -> A mapping of SPFILENOTIFY_NEEDMEDIA. setupapi: Properly null-terminate the path in concat_W(). setupapi: Use the source file name if the destination file name is NULL. setupapi: Implement source media path resolution. setupapi/tests: Add tests for source media path resolution. setupapi: Add magic bytes to struct file_queue and validate them in SetupCloseFileQueue(). ntoskrnl.exe/tests: Use coarser waits for timer tests. ntoskrnl.exe/tests: Avoid linking directly to CancelIoEx(). msi: Remove registration for no longer used WineMsiRemoteCustomAction coclass. setupapi: Avoid passing a NULL source filename to SetupQueueDefaultCopy(). strmbase: Move some internal definitions to strmbase_private.h. strmbase: Move "AttemptConnection" to the base source pin function table. strmbase: Get rid of the "pfnGetMediaTypeVersion" callback.
Zhiyi Zhang (1): include: Add more kernel mode graphics driver definitions.
-- Alexandre Julliard julliard@winehq.org