Wine Announcement

The Wine development release 4.7 is now available.

What's new in this release (see below for details):
  - Support for builtin libraries in PE format even on Unix.
  - Updated version of the Mono engine.
  - More implementation of the Debug Engine DLL.
  - Support for the Command Link standard control.
  - Improved Edit control sizing in CJK locales.
  - Various bug fixes.

The source is available from the following locations:

Binary packages for various distributions will be available from:

You will find documentation on

You can also get the current source directly from the git
repository. Check 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.7 (total 34):

  11985  Status bar of D3D9 app window disappearing
  15934  Can't see Worms 2 intro films as they play (mciavi32 missing support to MCI_MCIAVI_PLAY_FULLSCREEN)
  15980  Multiple applications expect security descriptors present in process object/token (Rhapsody 2, Rockstar Games Social Club v1.x)
  29921  Microsoft Visual Studio 2005, 2008, 2010 Express installer shows highlighted items incorrectly
  41212  Alt-Tab in full-screen on resolutions other than native causes a crash
  42518  WinVerifyTrust fails for signatures using SHA256 digest
  44656  Multiple applications need ntdll.NtSuspendProcess and ntdll.NtResumeProcess implementation (Crashpad/Chromium/CEF, Oracle Data Visualization Desktop, cbwin)
  45543  Multiple games and applications crash in dwrite due to invalid index access to cluster array (Rekordbox 5.3.0, SpellForce 3)
  45703  Microsoft Office 365 applications crash on startup (Microsoft AppV ISV virtual filesystem technology requires several native and core API to be hot-patchable)
  45819  Symantec Eraser Control Driver 'eeCtrl64.sys' (Norton 360) fails in driver entry point due to 'ntoskrnl.exe.ExInitializeResourceLite' stub (needs STATUS_SUCCESS)
  45963  Multiple applications need setupapi.SetupDiInstallDeviceInterfaces and setupapi.SetupDiRegisterCoDeviceInstallers stubs for HID device driver install
  46174  Multiple apps (Halo Online Voice Chat, Discord, Miro Realtimeboard) crashes on unimplemented function qwave.dll.QOSCreateHandle
  46378 Game Center crashes when installing games or self-updates
  46626  UPlay fails to start : "Error at hooking API LoadStringA" (UPlay's hooking engine can't handle ENDBR32 instruction inserted at non-hotpatch API entries due to distro build environments '-fcf-protection')
  46685  AviUtl: Can't specify 4 digits number as image size in new project dialog.
  46794  Skyrim crashes upon clicking Continue on macOS
  46899  SIMATIC WinCC V15.1 Runtime installer: user can't accept license terms (richedit20 ITextRange::ScrollIntoView lacks handling of 'tomEnd')
  46927  Oracle Java SE Runtime Environment 7/8, OpenJDK JVM for Windows with '-XX:+UseNUMA' setting needs kernel32.dll.VirtualAllocExNuma (Minecraft)
  46934  Oracle Java SE Runtime Environment 7/8, OpenJDK JVM for Windows: InternalError: Should not get here at sun.nio.fs.WindowsNativeDispatcher.FindFirstStream0
  46953  Watch_Dogs crashes after intro
  46971  Multiple games crash at launch (Sniper Elite V2, Sniper Elite 3)
  46974  Assetto Corsa sometimes crashes when clicking on buttons in the setup menu
  46996  Improvements to the 7.1 and 5.1 to stereo conversion
  46998  Yakuza Kiwami: Controllers aren't detected
  46999  Controller with invalid HID range value causes division by zero error
  47009  msi x64 installation file created by Visual Studio cannot be uninstalled
  47022  Multiple performance monitor applications fail to display system physical/committed virtual memory usage (Sysinternals Process Explorer v16.x, builtin Taskmgr)
  47031  widl generates invalid typelib when importing types from multiple typelibs
  47034  Star Wars The Old Republic - Certificate Authentication Failed with wine-dev 4.6 (regression)
  47039  Shantae Risky's Revenge has a blank screen in Wine 4.6
  47051  Microsoft Excel 2016 (Office 365) crashes on startup (Microsoft AppV ISV virtual filesystem technology requires kernel32.CreateActCtxW to be hot-patchable)
  47055  Unloaded modules traces are not accessible (RtlGetUnloadEventTraceEx)
  47063  Command Link Support in Wine
  47065  Vocaloid 5 (.NET 4.x app) crashes on startup (needs 'Win32_OperatingSystem' WMI class 'SystemDrive' property)


Changes since 4.6:

Akihiro Sagawa (18):
      user32/tests: Use GREEK_CHARSET in margin tests to avoid Associated Charset feature.
      user32/tests: Remove win9x workarounds in margin tests.
      user32/tests: Use calculated WM_SETFONT margins in the CJK case.
      user32: Implement WM_SETFONT margins in the CJK case.
      user32/tests: Add more margin tests in CJK font case.
      user32: Fix edit control margins in CJK font case.
      comctl32/tests: Use GREEK_CHARSET in margin tests to avoid Associated Charset feature.
      comctl32/tests: Skip margin tests if a font for the target charset isn't available.
      comctl32/tests: Use EM_SETMARGINS to test EC_USEFONTINFO margins.
      comctl32/edit: Fix minimum control size conditions when using EC_USEFONTINFO.
      comctl32/tests: Move the default margin size tests into a separate function.
      comctl32/tests: Add Unicode version tests for Edit control margins.
      comctl32/tests: Tests default margin size with various font face and charset.
      comctl32/tests: Use calculated EC_USEFONTINFO margins in the CJK case.
      comctl32/edit: Implement EC_USEFONTINFO margins in the CJK case.
      comctl32/tests: Use calculated WM_SETFONT margins in the CJK case.
      comctl32/edit: Implement WM_SETFONT margins in the CJK case.
      user32: Make the second parameter of get_font_margins const.

Alexandre Julliard (41):
      configure: Don't inherit CFLAGS for cross-compilation.
      configure: Cache result of the cross-compiler check.
      configure: Also cache negative results of soname checks.
      configure: Cache result of the flex version check.
      configure: Cache results of the compiler checks.
      configure: Cache result of the msgfmt check.
      shell32: Fix compiler warnings for the Windows build.
      winegcc: Add option to put a builtin dll signature in the DOS header of PE files.
      server: Add flag for builtin dlls in the image information.
      ntdll: Move open_dll_file() to avoid forward declarations.
      ntdll: Only pass the NT path name to open_dll_file().
      ntdll: Add support for loading PE builtin dlls.
      setupapi: Add support for installing PE builtins as fake dlls.
      winetest: Also check for builtin dll signature.
      winedump: Also check for builtin dll signature.
      makefiles: Build modules that don't contain code as PE builtins.
      include/msvcrt: Define math constants by default, for compatibility with Mingw.
      include/msvcrt: Remove some prototypes that conflict with gcc builtins.
      include/msvcrt: Make offsetof constant for compatibility with Mingw.
      include/msvcrt: Use _fpclass() instead of _dclass().
      include/msvcrt: Add noreturn attributes.
      cryptnet/tests: Avoid using snprintf().
      fusion/tests: Avoid using snprintf().
      mshtml/tests: Avoid using snprintf().
      msi/tests: Avoid using snprintf().
      ole32/tests: Avoid using snprintf().
      setupapi/tests: Avoid using snprintf().
      widl: Use %define parse.error verbose instead of %error-verbose.
      d3dcompiler: Use %define parse.error verbose instead of %error-verbose.
      wbemprox: Use %define parse.error verbose instead of %error-verbose.
      ntdll: Use the correct type for %llu scanf format.
      makefiles: Allow using EXTRADLLFLAGS instead of APPMODE.
      makefiles: Build stub programs with msvcrt.
      makefiles: Build stub services with msvcrt.
      makefiles: Build modules that use msvcrt as PE builtins.
      makefiles: Don't use -fno-builtin flag with MinGW.
      makefiles: Build all tests with msvcrt.
      configure: Add check for recent enough bison.
      msvcrt: Don't export the __p__* functions on 64-bit.
      include/msvcrt: Add stdint.h header.
      makefiles: Don't allow using system headers with msvcrt.

Alistair Leslie-Hughes (6):
      include: Remove duplicate extern C from d3dx10core.idl.
      include: Remove duplicate extern C from mimeole.idl.
      include: Remove duplicate extern C from vsbackup.idl.
      winex11/wintab: Set all Device Orientation values.
      xinput: Check that we actually received a value before assignment.
      dinput: Don't report SysMouse/Keyboard devices as supporting Force Feedback.

Andreas Maier (2):
      jscript: Stub Enumerator object.
      jscript_test: Simple test for Enumerator().

Andrew Eikum (1):
      dinput: Report controllers as gamepads, not joysticks.

Andrey Gusev (2):
      dxgi: Add DECLSPEC_HOTPATCH to d3d11_swapchain_Present().
      setupapi: Add DECLSPEC_HOTPATCH to SetupDiEnumDeviceInfo().

André Hentschel (1):
      ntdll: Reuse signal to trap translation for FreeBSD on ARM.

Bruno Jesus (1):
      mciavi32: Add Support for MCI_MCIAVI_PLAY_FULLSCREEN.

Damjan Jovanovic (4):
      configure: Link wineserver to libinotify if necessary.
      qcap/tests: Fix a COM reference leak in the audiorecord test.
      avicap32: Verify v4l devices can capture before returning them.
      devenum: Iterate over all avicap devices instead of giving up at the first failure.

Derek Lesho (4):
      ntoskrnl.exe: Implement PsLookupThreadByThreadId.
      server: Allow creating process kernel objects.
      ntoskrnl.exe: Implement process object constructor.
      ntoskrnl.exe: Implement PsLookupProcessByProcessId.

Detlef Riekenberg (3):
      taskschd/tests: Avoid a crash in a test after E_ACCESSDENIED.
      qcap/tests: Avoid a crash in a test.
      kernel32/pipe: Avoid a crash in a test.

Dmitry Timoshkov (2):
      cryptui: Implement CryptUIDlgSelectCertificateFromStore.
      kernel32: Add MapUserPhysicalPages stub.

Erich Hoover (5):
      server: Add default security descriptor ownership for processes.
      server: Add default security descriptor DACL for processes.
      kernel32: NeedCurrentDirectoryForExePath does not use the registry.
      advapi32: Move the DACL combining code into a separate routine.
      advapi32: Fix the initialization of combined DACLs when the new DACL is empty.

Fabian Maurer (2):
      kernel32: Partially implement VirtualAllocExNuma.
      kernel32: Stub FindFirstStreamW/FindNextStreamW.

François Gouget (2):
      d3d10core/tests: Limit the flood of failures in test_depth_bias().
      d3d11/tests: Limit the flood of failures in test_depth_bias().

Gabriel Ivăncescu (7):
      comctl32/tests: Avoid leaks by moving creation calls outside the loop.
      comctl32/button: Preserve BST_HOT when mouse button is released.
      comctl32/button: Move the drawing of the button's image into a separate function.
      comctl32/button: Implement command links.
      comctl32/button: Implement themed command links.
      comctl32/button: Implement BCM_GETIDEALSIZE for command links.
      comctl32/tests: Test for BCM_GETIDEALSIZE on command links with notes.

Gijs Vermeulen (2):
      riched20: Handle tomEnd in ITextRange::ScrollIntoView.
      ntoskrnl.exe: Add Ex[p]InterlockedFlushSList.

Hans Leidekker (11):
      msi: Use KEY_WOW64_* flags in ACTION_Register/UnregisterClassInfo.
      msi: Get rid of a redundant get_registry_view call.
      msi: Take architecture into account when accessing the shared dll reference count.
      msi: Remove system environment variables on uninstall.
      msi: Fix architecture handling in the AppSearch action.
      msi: Get rid of redundant KEY_WOW64_64KEY flags.
      msi/tests: Check the NT key first when retrieving registered owner and organization.
      msi: Always use the 64-bit registry view to retrieve registered owner and organization.
      wineboot: Also process Run keys from the 32-bit registry view.
      wbemprox: Implement Win32_OperatingSystem.SystemDrive.
      wbemprox/tests: Introduce a helper to check properties.

Henri Verbeet (5):
      wined3d: Pass a wined3d_adapter_gl structure to wined3d_adapter_gl_init().
      wined3d: Assign "adapter_ops" in wined3d_adapter_init().
      wined3d: Don't bother allocating "free_fences" in context_create().
      wined3d: Don't bother allocating "free_occlusion_queries" in context_create().
      wined3d: Don't bother allocating "free_timestamp_queries" in context_create().

Isira Seneviratne (1):
      po: Update Sinhala translation.

Jacek Caban (26):
      mshtml: Support type conversion in functions with arguments using default values.
      mshtml: Support argument type conversion for functions with IDispatch arguments.
      mshtml: Support argument type conversion for functions with dual interface arguments.
      mshtml: Support argument type conversion for functions with dual interface return type.
      mshtml/tests: Properly release elem2 in test_elem_bounding_client_rect.
      mshtml: Add ISVGElement stub implementation.
      mshtml: Add ISVGSVGElement stub implementation.
      mshtml: Add ISVGCircleElement stub implementation.
      mshtml: Add ISVGTSpanElement stub implementation.
      mshtml: Use DispHTMLDOMImplementation for IDispatchEx implementation.
      mshtml: Pass style value as nsAString to set_nsstyle_property.
      mshtml: Use nsAString in fix_px_value.
      mshtml: Return nsAString from var_to_styleval.
      mshtml: Factor out variant_to_nsstr from var_to_styleval.
      mshtml: Use variant_to_nsstr in IHTMLDOMNode3::put_textContent.
      mshtml: Support VT_R8 in variant_to_nsstr.
      jscript: Fix handling empty string regexp matches in String.prototype.split implementation.
      jscript: Don't skip empty strings in String.prototype.split in ES5 mode.
      msvcp140: Add _Resize implementation.
      ntoskrnl.exe/tests: Add more NtOpenThread tests.
      ntoskrnl.exe: Return error codes compatible with recent Windows versions in PsLookupThreadByThreadId.
      ntoskrnl.exe: Add MmUnmapLockedPages stub.
      server: Allow creating file kernel objects.
      server: Set file user pointer in get_next_device_request handler.
      server: Ensure that IRP_MJ_CLOSE is queued only once.
      server: Use generic kernel object list to store client device file pointer.

John Thomson (1):
      shell32: Do not fail in SHCreateDirectoryExW for ERROR_ALREADY_EXISTS.

Józef Kucia (7):
      d3d9: Fix memory leak in device_init() (Coverity).
      wined3d: Make the adapter responsible for creating devices.
      wined3d: Create Vulkan device for wined3d_device_vk.
      d3d11: Fix d3d11_immediate_context_RSGetScissorRects().
      d3d11: Fix d3d10_device_RSGetScissorRects().
      wined3d: Use vkGetDeviceProcAddr() to load Vulkan device functions.
      wined3d: Avoid enabling all features supported by Vulkan physical device.

Louis Lenders (4):
      ntdll: Add DECLSPEC_HOTPATCH to NtQueryDirectoryFile.
      ntdll: Add DECLSPEC_HOTPATCH to NtQueryValueKey.
      rpcrt4: Quiet two noisy fixme`s.
      kernel32: Add DECLSPEC_HOTPATCH to CreateActCtx.

Marko Friedemann (1):
      wintrust: Use enhanced crypto provider in VerifyImageHash.

Martin Storsjo (2):
      msvcrt: Fix the fallback implementation of asinh for large negative values.
      msvcrt: Hook up the unprefixed logb/logbf/logbl functions for msvcr120/ucrtbase.

Mathew Hodson (1):
      include: Add cast to avoid a compiler warning on MSVC.

Michael Müller (2):
      avifile.dll16: Correctly convert result of AVIStreamGetFrame to a segptr.
      avifile.dll16: Convert between AVISTREAMINFO (16 bit) and AVISTREAMINFOA.

Nikola Pavlica (2):
      dsound: Revised 5.1 to stereo downmix.
      dsound: Added 7.1 to stereo downmix.

Nikolay Sivov (36):
      mf/tests: Fix test crash on Vista.
      include: Add IMFPMediaPlayer definition.
      dwrite/layout: Fix invalid index access to cluster array.
      ntdll/tests: Add some tests for thread suspend/resume.
      mfreadwrite: Output warning for uninitialized stream descriptor.
      mfplat/tests: Add a test for stream descriptor major type behavior.
      mfreadwrite: Duplicate media type returned with GetNativeMediaType().
      mfreadwrite: Add a helper to get associated event object value.
      mfreadwrite: Add a helper to get stream identifier.
      mfreadwrite: Handle MEMediaSample event.
      mfreadwrite/tests: Add some tests for ReadSample().
      ntdll: Add NtSuspendProcess()/NtResumeProcess() implementation.
      dbgeng: Add support for non-invasive attach on WaitForEvent().
      dbgeng: Implement GetNumberModules().
      dbgeng: Implement GetModuleByIndex().
      dbgeng: Implement GetModuleParameters().
      dbgeng: Implement GetModuleByOffset().
      mfreadwrite: Add partial implementation of ReadSample().
      mfreadwrite: Handle failure path in GetNativeMediaType().
      mfreadwrite: Wake also on new streams.
      mfreadwrite: Handle some of stream state change events.
      mfplay: Add a stub for MFPCreateMediaPlayer().
      ntdll/tests: Add some tests for unloaded modules traces.
      ntdll: Implement RtlGetUnloadEventTrace()/RtlGetUnloadEventTraceEx().
      dbgeng: Implement ReadVirtual().
      dbgeng: Implement IsPointer64Bit().
      dbgeng: Implement GetExecutingProcessorType().
      dbgeng: Partially implement GetModuleNameString().
      dbgeng: Implement GetModuleVersionInformation().
      comctl32/button: Improve repainting on WM_SETFOCUS.
      dbgeng: Improve GetDebuggeeType() stub.
      dbgeng: Set module timestamp field.
      dbgeng: Add IDebugAdvanced stub.
      dbgeng: Add IDebugSystemObjects stub.
      kernel32/tests: Add a test for critical section DebugInfo initial value.
      mfplat: Add partial implementation of ConvertToContiguousBuffer().

Paul Gofman (1):
      wined3d: Use intBitsToFloat() instead of uintBitsToFloat().

Qian Hong (1):
      advapi32/tests: Test prefix and use of TokenPrimaryGroup Sid.

Stefan Dösinger (1):
      winemac: Add +fps support for Vulkan.

Vijay Kiran Kamuju (18):
      include: Add missing includes, functions to qos2.h.
      qwave: Add stub for QOSCreateHandle and tests.
      kernel/nls: Fix country name in Tatar locale.
      kernel/nls: Fix LOCALE_SNAME for Azeri (Cyrillic).
      kernel/nls: Fix LOCALE_SNAME for Uzbek (Cyrillic).
      kernel/nls: Fix LOCALE_SNAME for Serbian (Cyrillic).
      kernel/nls: Fix country name and sname in English-Caribbean locale.
      kernel/nls: Fix country name in Manx Gaelic locale.
      kernel32: Add implementation of CAL_SSHORTESTDAYNAME*.
      ntdll: Report system information SystemPerformanceInformation info class.
      kernel/nls: Add LOCALE_SMONTHDAY to all supported languages.
      kernel/nls: Fix LOCALE_SLONGDATE and LOCALE_SYEARMONTH for some chinese locales.
      kernel32: Add implementation for CAL_SMONTHDAY.
      kernel/nls: Fix LOCALE_SABBREVCTRYNAME for Serbian.
      include: Add CAL_UMALQURA definition to winnls.h.
      include: Add missing ACE and ACL related defines in winnt.h.
      include: Add missing structures for ACE and Tokens in winnt.h.
      advapi32/tests: Add additional tests for NtAccessCheck.

Vincent Povirk (2):
      mscoree: Try skipping c: when searching for support msi.
      mscoree: Update Wine Mono to 4.8.3.

Vladimir Bespalov (1):
      user32: Make LoadString[AW] patchable.

Zebediah Figura (38):
      qedit/tests: Add more tests for sample grabber filter interfaces.
      qedit/samplegrabber: Don't expose IMediaPosition from the filter.
      qedit/samplegrabber: Don't expose IMediaSeeking from the filter.
      qedit/tests: Test that reference counts are shared between interfaces.
      qedit/tests: Add some tests for IBaseFilter::EnumPins() on the sample grabber.
      qedit/tests: Add some tests for IBaseFilter::FindPin() on the sample grabber.
      qedit/tests: Add some tests for querying sample grabber pin information.
      qedit/samplegrabber: Separate sink and source QueryInterface() implementations.
      qedit/tests: Add some tests for sample grabber pin interfaces.
      qedit/tests: Clean up and expand aggregation tests.
      qedit: Fix return code for requesting aggregation with an interface other than IUnknown.
      quartz: Vend CLSID_NullRenderer from qedit.
      widl: Correctly set the import library offset for all imported types.
      msi: Fix handling of architecture in MSIREG_{Open, Delete}UninstallKey().
      winecfg: Use GetSysColorBrush().
      winecfg: Also set the text color for the license and version controls.
      user32: Use GetSysColorBrush().
      wordpad: Use GetSysColorBrush().
      regedit: Use the default implementation of WM_ERASEBKGND.
      qedit/tests: Abort on missing qedit.dll.
      qedit/tests: Add some tests for null renderer filter interfaces.
      qedit/tests: Add some tests for IBaseFilter::EnumPins() on the null renderer.
      qedit/tests: Add some tests for IBaseFilter::FindPin() on the null renderer.
      qedit/tests: Add some tests for querying null renderer pin information.
      qedit/tests: Add some tests for null renderer pin interfaces.
      qedit/tests: Add a test for aggregation on the null renderer.
      quartz/tests: Clean up and expand tests for aggregation.
      regedit: Use an I-beam cursor in the hex edit dialog.
      devenum: Fix device and friendly name for video capture devices.
      qcap: Use the v4l2 device_caps field if supported.
      amstream: Reference the returned IMediaStream pointer in IAMMultiMediaStream::AddMediaStream().
      amstream/tests: Add some test for supported interfaces.
      amstream/tests: Add tests for IMediaStreamFilter::EnumPins().
      amstream/tests: Add some tests for IMediaStreamFilter::FindPin().
      amstream/tests: Add some tests for querying pin information.
      quartz: Get rid of register_coclasses().
      quartz: Get rid of register_interfaces().
      winegstreamer: Convert media type registration to IRegistrar mechanism.

Alexandre Julliard