The Wine development release 4.16 is now available.

What's new in this release (see below for details):
  - More reliable mouse grabbing in games.
  - Better cross-compilation support in WineGCC.
  - Improved compatibility with Windows debuggers.
  - Various bug fixes.

The source is available from the following locations:

  https://dl.winehq.org/wine/source/4.x/wine-4.16.tar.xz
  http://mirrors.ibiblio.org/wine/source/4.x/wine-4.16.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.16 (total 16):

  22038  Art of Murder Cards of Destiny: some character models are plain white
  26215  Super Meat Boy shows grey textures for some objects
  41258  UE4 applications crash with "Assertion failed: Count >= 0" (Epic Games Launcher, Paragon)
  44338  cmd: Brackets are no deliminiter in the condition part of the if command.
  45560  Windows Sysinternals 'psping' v2.x tool, part of 'PsTools' crashes when trying to ping host (needs 'iphlpapi.ParseNetworkString')
  46149  Multiple applications need ntdll.dll.RtlIpv4StringToAddress{A,W,ExA,ExW} implementation (Processhacker 2.x, Icinga 2 'check_ping')
  46421  μTorrent has squares in it's update-dialog
  46549  Multiple .NET 4.x applications and games using 'System.Net.HttpListener' class crash due incomplete httpapi implementation (PUBG Lite Launcher, SeeSnake HQ)
  46983  type command in cmd.exe with two files and stdout redirect, behavior is different
  47476  Rhinoceros 6 (.NET 4.x app) fails to verify online-license: System.EntryPointNotFoundException: Unable to find an entry point named 'HttpCloseRequestQueue' in DLL 'httpapi.dll'
  47524  Hearthstone black screen
  47629  PotPlayer 1.7: Crash when trying to play any file
  47675  Wine builtin 'services.exe' uses invalid wait object for delayed autostart services
  47693  ExHIBIT (Sample Project): Can't select menu item in the title screen
  47709  Zoom Edit&Share 5.0.0.0: installer crashes starting with wine-3.19
  47732  This is bad bug in wine.

----------------------------------------------------------------

Changes since 4.15:

Akihiro Sagawa (7):
      msvcrt/tests: Restore the multibyte codepage after the tests.
      msvcrt/tests: Add more tests for _mbsspn and _mbsspnp.
      msvcrt: Fix _mbsspn implementation.
      msvcrt: Reimplement _mbsspnp using _mbsspn.
      ucrtbase: Add strtoimax and _strtoimax_l.
      ucrtbase: Add strtoumax and _strtoumax_l.
      dwrite: Avoid a magic constant.

Alex Henrie (10):
      ntdll: Implement RtlIpv4StringToAddress(Ex)W.
      ntdll: Implement RtlIpv4StringToAddress(Ex)A.
      include: Add structures and constants needed for ParseNetworkString.
      iphlpapi/tests: Add tests for ParseNetworkString.
      include: Add ip2string.h.
      iphlpapi: Implement ParseNetworkString for IPv4 addresses and services.
      server: Fix use after free in add_committed_range (scan-build).
      winedbg: Fix dependence on undefined left-shift behavior (scan-build).
      gdi32: Handle HeapAlloc failure in SetEnhMetaFileBits (scan-build).
      winex11: Factor out array access in ConvertAttribWGLtoGLX (scan-build).

Alexandre Julliard (40):
      configure: Don't link to libunwind if not necessary.
      kernel32: Move interlocked functions to kernelbase.
      kernel32: Move file change notification functions to kernelbase.
      kernel32: Move virtual memory functions to kernelbase.
      kernel32: Move heap functions to kernelbase.
      kernel32: Move memory resource functions to kernelbase.
      kernel32: Move global/local memory functions to kernelbase.
      kernel32: Move OS version functions to kernelbase.
      kernel32: Move debugger functions to kernelbase.
      kernel32: Move unhandled exception functions to kernelbase.
      kernel32: Move QueryPerformanceCounter/Frequency functions to ntdll.
      kernel32: Move environment functions to kernelbase.
      kernel32: Move process startup information functions to kernelbase.
      ntdll: Allocate environment blocks from the process heap.
      ntdll: Add partial implementation for IOCTL_SERIAL_GET_PROPERTIES.
      kernel32: Move ioctl functions to kernelbase.
      kernel32: Move console functions to kernelbase.
      winebuild: Add support for the -B option.
      winegcc: Fix handling of the --sysroot flag when not building inside the Wine tree.
      winegcc: Support the --target option like winebuild does.
      winegcc: Forward the -B options to winebuild.
      configure: Check for unw_step() instead of unw_getcontext().
      ntdll: Use virtual_uninterrupted_read_memory() to read code inside signal handler on x86-64.
      ntdll: Use a stack_layout structure to build exception data on x86-64.
      ntdll: Use a stack_layout structure to build exception data on i386.
      ntdll: Factor out setup_raise_exception() on i386.
      ntdll: Handle single step exception in signal handler on i386.
      ntdll: Handle alignment fault in signal handler on i386.
      ntdll: Handle breakpoint interrupt in signal handler on i386.
      ntdll: Handle invalid %gs fault in signal handler on i386.
      ntdll: Handle page faults in signal handler on i386.
      ntdll: Handle ATL thunk emulation in signal handler on i386.
      ntdll: Remove no longer needed function argument from setup_raise_exception() on i386.
      ntdll: Use a stack_layout structure to build exception data on ARM64.
      ntdll: Factor out setup_raise_exception() on ARM64.
      ntdll: Handle trap exception in signal handler on ARM64.
      ntdll: Handle page fault in signal handler on ARM64.
      ntdll: Remove no longer needed function argument from setup_raise_exception() on ARM64.
      ntdll: Avoid calling init_handler() twice in signal handler on i386.
      ntdll: Use virtual_uninterrupted_read_memory() to read code inside signal handler on i386.

Alistair Leslie-Hughes (11):
      dsound: Trace all DSBCAPS values.
      dsound/tests: Add effect parameters tests.
      wbemprox: Return NULL on error (Coverity).
      dsound: Trace each special effect as it's processed.
      hhctrl.ocx: Simplify extracting the help filename (Coverity).
      httpapi/tests: Assign to correct type (Coverity).
      http.sys: Allocate enough memory including the NULL. (Coverity).
      wineqtdecoder: Add missing header.
      include: Add DSFX_I3DL2REVERB defines.
      include: Correct DSFX_I3DL2REVERB_ROOM_MIN value.
      wininet/tests: InternetQueryOption should return a valid value for username/password when using cached credentials.

Andrew Eikum (3):
      ntoskrnl.exe: Add -norelay flag for _vsnprintf.
      mmdevapi: Avoid reporting odd numbers of channels.
      winebus.sys: Don't WARN about backends we didn't build.

Andrey Gusev (3):
      wininet/tests: Remove LPVOID cast.
      winhttp/tests: Remove LPVOID casts.
      dxgi: Add IDXGIDevice3 stub.

Daniel Lehman (3):
      wininet: Return error from HttpQueryInfo if number argument is invalid.
      wininet: Support large downloads.
      ntdll/tests: Adjust timing on RtlWaitOnAddress tests.

Dmitry Timoshkov (14):
      rpcrt4: Return an exception code from NdrAsyncClientCall.
      localspl: Remove useless NULL checks from AddMonitor trace.
      localspl: AddMonitor should create registry entry for a monitor before initializing it.
      localspl: Add support for monitors providing the MONITOR2 interface.
      localspl: Unload monitor in DeleteMonitor.
      localspl: Use the monitor handle returned by InitializePrintMonitor2.
      localspl: Fix MONITOR2.cbSize calculation when converting from MONITOREX.
      localspl: Fix MONITOR2 callback prototypes.
      winsplp.h: Fix MONITORINIT definition.
      localspl: Add MONITORREG stub callbacks for InitializePrintMonitor2.
      localspl/tests: Add support for monitors providing the MONITOR2 interface.
      ntdll/tests: Fix compilation with PSDK compiler.
      ntdll: Implement RtlUnicodeToUTF8N.
      ole32: Turn FIXME into a TRACE for clipboard backend of QueryGetData.

Evgeny Litvinenko (1):
      aclocal.m4: Allow nesting WINE_TRY_SHLIB_FLAGS.

Fabian Maurer (1):
      comctl32/syslink: Properly handle '\r'.

François Gouget (21):
      comctl32: Typo and spelling fixes in comments.
      advapi32/tests: Spelling fixes in a couple of comments.
      advapi32/tests: Spelling tweaks in ok() messages.
      widl: Fix a variable name in a comment.
      cabinet: A spelling fix in a variable / field name.
      libwine: Fully dereference the /proc/self/exe symbolic link.
      libwine: Like Linux, NetBSD has /proc/self/exe.
      tests: Add support for subtests.
      msi/tests: Declare the custom subtest.
      ntoskrnl/tests: Declare the driver subtest.
      kernel32/tests: Avoid unneeded strlen*() calls.
      comctl32/tests: Tweak an ok() message to avoid a spelling error.
      d3d8/tests: Spelling fixes in ok() messages.
      d3d9/tests: Spelling fixes in ok() messages and a comment.
      d3d10/tests: Spelling fixes in ok() messages.
      d3dx9_36/tests: Spelling fixes in ok() messages.
      dinput8/tests: A spelling fix in a comment.
      ddraw/tests: Spelling fixes in ok() messages.
      ddrawex: Tweak the createDD() name to make CodeSpell happy.
      winemac.drv: Avoid an unneeded lstrlenW() call.
      dwrite: A couple of spelling fixes in comments.

Gabriel Ivăncescu (4):
      kernel32/locale: Set whether we used the default char when using Unix codepage.
      kernel32/locale: Don't fail with non-NULL args when the Unix codepage falls back to UTF-8.
      vbscript/parser: Handle lack of newlines before certain End statements.
      vbscript/tests: Test lack of newline parsing before End statements.

Gerald Pfeifer (1):
      dwrite/tests: Silence a compiler warning in test_fontsetbuilder.

Hans Leidekker (7):
      wbemprox: Strip curly brackets from path strings.
      wbemprox: Support evaluating CIM_REFERENCE expressions.
      wbemprox: Perform a case insensitive match on path components.
      wbemprox: Implement Win32_LogicalDiskToPartition.
      wbemprox: Implement Win32_DiskDriveToDiskPartition.
      wbemprox: Fix index in fill_diskdrive and fill_diskpartition.
      wbemprox: Add support for evaluating ASSOCIATORS OF queries.

Huw D. M. Davies (3):
      wininet: Include limits.h to define UINT_MAX and ULONG_MAX.
      configure: Fix argument type of unw_step().
      configure: Fix libunwind warning logic.

Jacek Caban (8):
      ntdll: Move setup_exception implementation.
      ntdll: Factor out setup_raise_exception.
      ntdll: Handle single step exception in setup_raise_exception on x86_64.
      ntdll: Handle interrupt exceptions in signal handler on x86_64.
      ntdll: Call virtual_handle_fault from signal handler on x86_64.
      ntdll: Remove no longer needed func argument from setup_raise_exception.
      ntdll: Call send_debug_event from debug handler on x86_64.
      services: Use threadpool timers for services delay loading.

Jactry Zeng (2):
      mfmediaengine: Add IMFMediaEngine stub.
      mfmediaengine: Merge media_engine_attributes into media_engine struct.

Ken Thomases (1):
      ntdll: On Mac, use the Mach API as preferred approach to get a thread's GS.base.

Kevin Puetz (1):
      objbase.h: Fix StringFromIID declaration.

Kim Malmo (1):
      po: Update Norwegian translation.

Marcus Meissner (1):
      iphlpapi: Fixed size to MultiByteToWideChar.

Michael Stefaniuc (3):
      strmbase: Don't cast from COM object to interface.
      quartz: Don't cast from COM object to interface.
      d3d10: Avoid casts from COM object to interface.

Naveen Narayanan (1):
      libwine: Only link libi386 with the libraries that need it.

Piotr Caban (2):
      msvcrt: Match broken multi-byte character with everything in _mbsspn.
      wbemdisp: Handle NULL signatures in init_members.

Rémi Bernon (9):
      winex11.drv: Do not react to keyboard grab focus events.
      winex11.drv: Only grab or warp the cursor when keyboard isn't grabbed.
      winex11.drv: Retry last ClipCursor when grab is released.
      winex11.drv: Do not set clipping_cursor when clip window map state changes.
      winex11.drv: Explicitly call XUngrabPointer when clipping is released.
      winex11.drv: Only call XWarpPointer if we can get exclusive pointer grab.
      dnsapi: Add DnsGetCacheDataTable stub.
      user32/tests: Add RegisterRawInputDevices parameter validation tests.
      user32: Add parameter validation for RegisterRawInputDevices.

Sven Baars (4):
      quartz: Fix some memory leaks (Coverity).
      quartz/tests: Fix a memory leak (Valgrind).
      hidclass.sys: Fix some memory leaks on error path (Coverity).
      winex11.drv: Fix a memory leak (Coverity).

Zebediah Figura (37):
      amstream: Use shorter method names for the multimedia stream.
      amstream: Move multimedia_stream_create() to avoid forward declarations.
      amstream: Forward IMultiMediaStream::GetMediaStream() to the stream filter.
      amstream: Don't keep track of streams in the multimedia stream object.
      amstream/tests: Add some tests for IEnumMediaTypes.
      amstream/tests: Add more tests for media types.
      amstream: Move audio and ddraw streams into separate files.
      amstream: Reimplement IPin::EnumMediaTypes() for the primary video stream.
      amstream: Get rid of the DirectDrawMediaStreamImpl typedef.
      amstream: Reimplement IMemInputPin locally for the DirectDraw stream.
      amstream: Reimplement IPin locally for the DirectDraw stream.
      amstream: Use shorter method names for DirectDraw stream methods.
      amstream/tests: Also test pin information for the primary audio stream.
      amstream: Reimplement IPin::EnumMediaTypes() for the primary audio stream.
      amstream: Get rid of the AudioMediaStreamImpl typedef.
      amstream: Reimplement IMemInputPin locally for the primary audio stream.
      amstream: Reimplement IPin locally for the primary audio stream.
      amstream: Use shorter names for primary audio stream methods.
      winegstreamer: Use strmbase_source_init().
      wineqtdecoder: Use strmbase_source_init().
      strmbase: Get rid of the no longer used pin constructor and destructor helpers.
      qcap/avimux: Use strmbase pin methods directly.
      strmbase: Store the filter as a strmbase_filter pointer in the BasePin structure.
      strmbase: Get rid of the "pCritSec" member of BasePin.
      http.sys: Use the SOCKET type for Windows sockets.
      winegstreamer: Get rid of the unused "gstpool" field from GSTOutPin.
      winegstreamer: Get rid of the "isaud" and "isvid" fields of GstOutPin.
      winegstreamer: Get rid of the GSTInPin structure.
      winegstreamer: Get rid of the unused "discont" field from GstImpl.
      winegstreamer: Handle GST_EVENT_RECONFIGURE.
      winegstreamer: Don't activate our source pad immediately after connecting.
      winegstreamer: Use the global HeapAlloc() wrappers.
      strmbase: Get rid of the BaseOutputPin typedef.
      strmbase: Get rid of the BaseOutputPinFuncTable typedef.
      winegstreamer: Use BasePinImpl_QueryAccept() and BasePinImpl_EnumMediaTypes().
      winegstreamer: Get rid of the GSTImpl typedef.
      winegstreamer: Get rid of the GSTOutPin typedef.

Zhiyi Zhang (4):
      winemac.drv: Fix build with older macOS SDKs.
      comctl32/taskdialog: Use BCM_GETIDEALSIZE to calculate button size.
      user32/tests: Remove an extraneous check.
      user32/tests: Fix some msg test failures.

--
Alexandre Julliard
julliard@winehq.org
