Wine Announcement

The Wine development release 5.16 is now available.

What's new in this release (see below for details):
  - Support for x86 AVX registers.
  - Some ARM64 fixes for macOS.
  - Still more restructuration of the console support.
  - 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 5.16 (total 21):

  21150  Memorex exPressit Label Design Studio 4.x crashes when creating a new project (ieframe 'IOleObject::Advise' is a stub)
  24320  Cisco Quick VPN Client (QVPN) v1.4.x tool 'DetectEnvStatus.exe' crashes
  37913  Inconsistent rounding behaviour for sprintf
  39712  AirDC++: Crash after finishing setup wizard
  39881  d3dx9_36/tests/mesh.ok: failed on line 4145 Test text
  44200  Quake Champions Instant Crash To Desktop (Steam)
  46350  Armored Warfare mouse stutter
  46994  Firefox doesn't load pages
  47570  Builtin Split function not implemented (needed by FotoBizX Installer)
  49400  Multiple Windows 10 applications need IsWow64Process2 to determine real OS architecture (ex: detect WOW64 on ARM64)
  49564  Tomb Raider I (using DosBox) hangs after starting
  49631  Wine does not fill in Vulkan device LUID property when running in Virtual Desktop
  49648  Still Life hangs when player starts moving
  49698  Unwinding with a PE based ntdll.dll fails in some cases
  49712  Magic: The Gathering Arena fails to connect to server
  49716  Toontown Corporate Clash's Windows Installer crashes inside  IsWow64Process2
  49718  ABZU broken with math functions from musl
  49719  The Bat! v9.2.2.3: The 32bit version and the 64bit version crashed after startup
  49728  Appear (a 4K rendering demo) crashes on unimplemented function user32.dll.SetWindowFullScreenState
  49730  Number formatting broken with "nl_NL.UTF-8" (for msmoney)
  49746  crash when virtual debug channel is enabled


Changes since 5.15:

Alex Henrie (2):
      urlmon/tests: Work around broken Win10 in test_CoInternetCombineUrlEx.
      user32: Comment out SetWindowFullScreenState.

Alexandre Julliard (21):
      ntdll: Call NtContinue() from LdrInitializeThunk() instead of returning.
      ntdll: Don't expect LdrInitializeThunk() to return to the Unix side.
      ntdll: Unwind the syscall frame when calling KiUserApcDispatcher().
      ntdll: Unwind the syscall frame in NtSetContextThread().
      kernel32: Fix user handle conversion in GetConsoleWindow().
      ntdll: Handle page faults happening during a syscall without dispatching the exception.
      ntdll: Stop resolving imports for the Unix library.
      ntdll: Avoid referencing winecrt0 exception handlers from the Unix library.
      winecrt0: Move setjmpex/longjmp implementation to a separate file.
      makefiles: Don't implicitly import the module itself when -nodefaultlibs is used.
      winebuild: Allow syscalls to use the cdecl convention.
      ntdll: Use syscalls for the server functions.
      ntdll: Use syscalls for the file path conversion functions.
      ntdll: Use syscalls for the Wine version functions.
      ntdll: Use syscalls for a couple of Wine internal functions.
      ntdll: Get rid of the server_init_process_done() Unix library callback.
      ntdll: Use exported APIs instead of virtual_map_section() to load PE modules.
      ntdll: Clear the syscall frame on return instead of popping the previous one.
      ntdll: Clear the thread stack by hand instead of remapping zero pages.
      Revert "ntdll: Get rid of the server_init_process_done() Unix library callback."
      conhost: Fix some pointer cast warnings.

Alistair Leslie-Hughes (1):
      include: Add more eAVEncH264VProfile enums.

Andrew Eikum (1):
      winepulse: Don't rely on pulseaudio callbacks for timing.

Arkadiusz Hiler (3):
      Revert "ntdll/tests: Add test to check if GetTickCount is updated after sleeping.".
      winmm: Add timeGetTime() implementation.
      winmm: Default to 1ms resolution like we used to.

Aurimas Fišeras (2):
      po: Update Lithuanian translation.
      po: Update Lithuanian translation.

Biswapriyo Nath (13):
      include/xaudio2.idl: Use cpp_quote for xaudio2 error codes.
      include/dxgi.idl: Fix typo in DXGI_SWAP_CHAIN_FLAG_RESTRICTED_CONTENT member name.
      include/dxgi.idl: Add missing DXGI_DISPLAY_COLOR_SPACE structure.
      include/dxgi1_2.idl: Add missing values in DXGI_SCALING enum.
      dxgi: Fix order of functions in IDXGIFactory2 interface.
      include/dxgi1_5.idl: Add missing values in DXGI_HDR_METADATA_TYPE enum.
      include/dxgi1_6.idl: Add missing values in DXGI_ADAPTER_FLAG3 enum.
      include/d3d11sdklayers.idl: Add d3d11 debug feature flags.
      include/d3d10.idl: Use unions in D3D10_BUFFER_RTV structure.
      include/d3d10.idl: Use unions in D3D10_BUFFER_SRV structure.
      include/d3d10sdklayers.idl: Add D3D10Debug interface.
      include/d3d10sdklayers.idl: Add D3D10SwitchToRef interface.
      include/d3d11sdklayers.idl: Add D3D11SwitchToRef interface.

Brendan Shanks (1):
      winevulkan: Fix vkEnumerateInstanceExtensionProperties() behavior when no Vulkan driver is present.

Carlos Rivera (1):
      kernel32: Remove obsolete comment.

Damjan Jovanovic (3):
      riched20: Implement ITextRange::MoveStart() and ITextRange::MoveEnd() for tomCharacter.
      riched20: Implement ITextRange::Move() for tomCharacter.
      riched20: Implement ITextRange::StartOf() and ITextRange::EndOf() for tomCharacter.

Daniel Lehman (2):
      msvcrt/tests: Add tests for SpecialCasing.
      ucrtbase/tests: Add tests for SpecialCasing.

Derek Lesho (1):
      shcore: Add GetScaleFactorForDevice() stub.

Dmitry Kislyuk (1):
      vbscript: Implement case-insensitive search in Replace function.

Dmitry Timoshkov (2):
      ole32: Add a check for hglobal pointer to GetHGlobalFromStream.
      kernelbase: Native machine is optional for IsWow64Process2.

Fabian Maurer (2):
      user32: Set default user preferences to enable animations.
      msvcrt/math: In _fcvt/_fcvt_s handle locale decimal separator properly.

François Gouget (2):
      winapi: Remove obsolete entries from win32.api.
      winapi: Update win16.api.

Gabriel Ivăncescu (13):
      msscript.ocx: Implement the ScriptProcedure enumerator.
      msscript.ocx: Add the ScriptError stub implementation.
      msscript.ocx: Implement IScriptError::Clear.
      msscript.ocx: Implement IScriptError::get_Number.
      msscript.ocx/tests: Add initial tests for ScriptError.
      msscript.ocx: Implement IScriptError::get_Source.
      msscript.ocx: Implement IScriptError::get_Description.
      msscript.ocx: Implement IScriptError::get_HelpFile.
      msscript.ocx: Implement IScriptError::get_HelpContext.
      msscript.ocx: Implement IScriptError::get_Text.
      msscript.ocx: Implement IScriptError::get_Line.
      msscript.ocx: Implement IScriptError::get_Column.
      msscript.ocx: Uncache the module objects when script is restarted, but not the Procedure count.

Gijs Vermeulen (8):
      fsutil: Initialize ret in hardlink() (Coverity).
      shell32: Free original_dos_name with correct function in TRASH_GetDetails() (Coverity).
      evr: Fix typo in video_mixer_init_dxva_videodesc() (Coverity).
      amstream: Return VFW_E_CANNOT_CONNECT in IAMMultiMediaStream::OpenFile() when no renderers are present and AMMSF_NORENDER is not specified.
      amstream: Return S_FALSE when IMediaSeeking::GetDuration() fails in IAMMultiMediaStream::GetDuration().
      qcap/tests: Remove unused enumMediaTypes in test_smart_tee_filter() (Coverity).
      quartz: Close hfile when GetFileSizeEx fails in IFileSourceFilter::Load() (Coverity).
      amstream: Implement IMediaStreamFilter::ReferenceTimeToStreamTime().

Jacek Caban (38):
      kernelbase: Use IOCTL_CONDRV_SET_INPUT_INFO in SetConsoleCP.
      kernelbase: Use IOCTL_CONDRV_SET_INPUT_INFO in SetConsoleOutputCP.
      kernelbase: Use IOCTL_CONDRV_SET_TITLE in SetConsoleTitleW.
      server: Remove no longer used set_console_input_info.
      wineconsole: Make sure that console process is not attached to another console.
      server: Use passed console handle to inherit console for created process.
      conhost: Build with -mwindows.
      kernel32/tests: Fix tests on some broken Windows versions.
      server: Introduce console server object.
      server: Support creating console reference from console server.
      kernelbase: Add CreatePseudoConsole implementation.
      kernelbase: Add ClosePseudoConsole implementation.
      kernel32/tests: Add CreatePseudoConsole tests.
      conhost: Add initial main loop implementation.
      server: Queue console ioctls for execution in host when console server is attached.
      server: Introduce get_next_console_request request.
      condrv: Implement initial ioctl processing.
      conhost: Implement IOCTL_CONDRV_GET_MODE.
      conhost: Implement IOCTL_CONDRV_SET_MODE.
      conhost: Implement IOCTL_CONDRV_GET_INPUT_INFO.
      conhost: Implement IOCTL_CONDRV_SET_INPUT_INFO.
      conhost: Implement IOCTL_CONDRV_GET_TITLE.
      conhost: Implement IOCTL_CONDRV_SET_TITLE.
      conhost: Implement IOCTL_CONDRV_WRITE_INPUT.
      server: Support blocking console host ioctls.
      conhost: Implement IOCTL_CONDRV_READ_INPUT.
      conhost: Implement IOCTL_CONDRV_PEEK.
      server: Move setting current screen_buffer into a helper.
      server: Allow passing screen buffer ioctls to conhost.
      conhost: Initial support for screen buffers.
      server: Forward screen buffer ioctls to conhost if possible.
      conhost: Implement IOCTL_CONDRV_GET_MODE.
      conhost: Implement IOCTL_CONDRV_SET_MODE.
      conhost: Implement IOCTL_CONDRV_GET_OUTPUT_INFO.
      conhost: Implement IOCTL_CONDRV_SET_OUTPUT_INFO.
      conhost: Implement IOCTL_CONDRV_WRITE_OUTPUT.
      conhost: Implement IOCTL_CONDRV_READ_OUTPUT.

Jeff Smith (1):
      qcap/tests: Refactor interface testing.

Julian Rüger (3):
      winemine: Rename difficulty to avoid translation issues.
      winemine: Widen some controls to accomodate translations.
      po: Update German translation.

Lauri Kenttä (1):
      po: Update Finnish translation.

Louis Lenders (1):
      explorerframe: Return S_OK in ITaskbarList::RegisterTab.

Martin Storsjo (16):
      winebuild: Use the right arm64 page/pageoff relocation syntax for darwin.
      ntdll: Trust libunwind's returned pc value on arm64.
      ntdll: Fix the arm64 use of libunwind for macOS.
      ntdll: Fix arm64 sigcontext access for darwin.
      loader: Fix the generic case in get_self_exe().
      winedump: Fix dumping of rare arm64 unwind opcodes.
      include: Update ARM64 context flag definitions to match current SDKs.
      ntdll: Add initial tests for arm64 RtlVirtualUnwind.
      ntdll: Set handler_data correctly in arm64 RtlVirtualUnwind.
      ntdll/tests: Add defines for the complete set of arm64 unwidning opcodes.
      ntdll/tests: Support testing float registers in the arm64 virtual unwind test.
      ntdll: Implement the arm64 machine frame and context unwind opcodes.
      ntdll/tests: Add a larger testcase covering most arm64 unwinding opcodes.
      ntdll: Fix arm64 jump buffer float restoration.
      ntdll: Capture vector registers in arm64 RtlCaptureContext.
      winedump: Fix the dumping of arm64 packed float restoration.

Nikolay Sivov (34):
      combase: Add a function to allocate OLE thread data.
      combase: Move GetErrorInfo().
      combase: Add CoGetErrorInfo() as an alias for GetErrorInfo().
      combase: Move SetErrorInfo().
      combase: Add CoSetErrorInfo() as an alias for SetErrorInfo().
      combase: Move CoGetCallContext().
      combase: Move CoSwitchCallContext().
      combase: Move CoRegisterInitializeSpy()/CoRevokeInitializeSpy().
      combase: Move CoWaitForMultipleHandles().
      combase: Move CoRegisterMessageFilter().
      combase: Move local proxy-stub registration functions.
      combase: Move CoGetContextToken().
      combase: Move CoGetCurrentLogicalThreadId().
      kernelbase: Pass inherited handles list when creating new process.
      combase: Move CoGetCurrentProcess().
      ole32: Use public symbol for maximum moniker comparison data length.
      dwrite: Add partial implementation for IDWriteFontFace5::Equals().
      combase: Expose ROT access helpers.
      ole32: Use combase for ROT access.
      ole32: Get rid of typedef'ed type for apartment structure.
      ole32: Simplify apartment lookup helper.
      ole32: Move apartment and activation management to a separate file.
      combase: Move core apartment and activation functionality.
      combase: Move CoFreeUnusedLibrariesEx().
      ole32: Use single static instance for ROT.
      combase: Move initialisation functions.
      combase: Move MTA usage functions.
      combase: Move CoGetApartmentType().
      combase: Move CoGetClassObject().
      ole32: Use InternalIsProcessInitialized().
      ole32: Remove unused helper.
      combase: Move server class registration.
      combase: Move global apartment state cleanup.
      combase: Move thread data cleanup.

Paul Gofman (17):
      ntdll: Report newer vector processor features on x86 / x64.
      ntdll: Don't transfer xmm registers explicitly during context save and restore on x64.
      include: Update _XSTATE_CONFIGURATION structure definition.
      ntdll: Remove redundant ldmxcsr in set_full_cpu_context() on x86_64.
      include: Define _XSAVE_FORMAT structure.
      include: Define extended context structures.
      include: Implement __cpuidex() function.
      wineboot: Initialize XState features in user_shared_data.
      kernel32: Implement GetEnabledXStateFeatures().
      ntdll/tests: Add test for xstate in extended context.
      ntdll: Support AVX context in fault exceptions on Linux x86_64.
      ntdll: Restore AVX registers in NtSetContextThread() on x86_64.
      ntdll: Support AVX context in fault exceptions on Linux i386.
      ntdll: Restore AVX registers in NtSetContextThread() on i386.
      ntdll: Also save unwind info for rbp in call_consolidate_callback() on x64.
      wmc: Add Null facility.
      kernel32: Add string for E_NOTIMPL error.

Piotr Caban (2):
      msvcrt: Fix acosf implementation when returning Pi or Pi/2.
      msvcrt: Optimize memmove implementation.

Robert Wilhelm (3):
      vbscript: Implement Split.
      vbscript: Implement IsArray.
      vbscript: Support arrays in TypeName.

Shawn M. Chapla (6):
      gdiplus: Remove outdated FIXME comment about compositing mode.
      gdiplus: Add missing allocation failure checks to graphics functions.
      gdiplus/tests: Add cursory GdipGetClipBoundsI checks to graphics clipping test.
      gdiplus: Implement GdipGetClipBoundsI in terms of GdipGetClipBounds.
      gdi32: Pass correct pointer to PolyDraw during EMR_POLYDRAW playback.
      gdi32: Implement EMR_POLYDRAW16 playback.

Sven Baars (2):
      kernel32: Fix some string leaks (Coverity).
      kernel32: Free the right variable (Coverity).

Zebediah Figura (5):
      quartz: Reimplement AM_RENDEREX_RENDERTOEXISTINGRENDERERS by forbidding renderers from IFilterMapper2::EnumMatchingFilters().
      xactengine3: Reduce code duplication in xact_classes.idl.
      ntdll: Read the condition variable and manipulate the lock on the PE side.
      server: Report named pipe device files as type "File".
      devenum: Correct the size of "name" in register_avicap_devices().

Zhiyi Zhang (9):
      winex11.drv: Report a GPU same as the host primary GPU in virtual desktop mode.
      winex11.drv: Initialize new display device registry display settings.
      winemac.drv: Initialize new display device registry display settings.
      user32/tests: Add more registry display mode tests.
      winex11.drv: Store a full display mode in registry.
      winex11.drv: Allow setting a 0-bit color depth display mode.
      winex11.drv: Always update _NET_WM_STATE in update_net_wm_states().
      winex11.drv: Support full screen windows on non-primary monitors.
      winex11.drv: Support clipping full screen windows on non-primary monitors.

Ziqing Hui (24):
      windowscodecs: Introduce get_pixel_format_bpp().
      windowscodecs: Add tests and initial implementation for DdsFrameDecode_CopyPixels().
      windowscodecs/tests: Add tests for decoding BC1 format.
      windowscodecs/tests: Fix a variable name typo in decode_bc1().
      windowscodecs/tests: Add tests for decoding BC2 format.
      windowscodecs/tests: Add tests for decoding BC3 format.
      windowscodecs/tests: Merge decode_bc*() into a single function.
      windowscodecs/tests: Add macro BLOCK_WIDTH and BLOCK_HEIGHT.
      windowscodecs: Add a lock for DdsFrameDecode.
      windowscodecs: In struct DdsFrameDecode, add a new member "pixel_data" and rename member "data" to "block_data".
      windowscodecs: More complete implementation of DdsFrameDecode_CopyPixels().
      windowscodecs: Introduce decode_block() for DdsFrameDecode_CopyPixels().
      windowscodecs: Add WIC pixel format information to struct dds_format.
      windowscodecs: Introduce get_dds_format() to replace get_dxgi_format().
      windowscodecs/tests: Expect actual WIC formats for uncompressed image.
      windowscodecs/tests: Introduce is_compressed().
      windowscodecs/tests: Add pixel format bpp to test_data.
      windowscodecs: Remove get_pixel_format_bpp().
      windowscodecs/tests: Add CopyPixels data tests for uncompressed images.
      windowscodecs/tests: Fix tests for CopyBlocks.
      windowscodecs: Fix DdsFrameDecode_Dds_CopyBlocks().
      windowscodecs: Support uncompressed format in DdsFrameDecode_CopyPixels().
      windowscodecs: Correctly set pixel format of uncompressed DDS images.
      windowscodecs: Add more supported formats and fix RGB masks for RGBA1010102.

Alexandre Julliard
[email protected]