Wine Announcement

The Wine development release 4.17 is now available.

What's new in this release (see below for details):
  - New version of the Mono engine with upstream fixes.
  - Support for DXTn compressed textures.
  - Initial version of the Windows Script runtime library.
  - Support for XRandR device change notifications.
  - Support for generating RSA keys.
  - Stubless proxies support on ARM64.
  - 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.17 (total 14):

  24701  Vampire the Masquerade bloodlines hanging with Out of adapter memory
  35561  Some MSYS2 commands generate a stackdump (queued user APC not executed)
  36313  valgrind shows a possible leak in propsys/tests/propstore.c
  39026  Wrong key mapping in virtualdub
  39934  AppCAD graphics corruption
  43842  Cached Authorization cause wrong username/password to be used
  44394  Game “Civilization 4” is aborted because of unhandled exception.
  46404  Shed installer - text overflow in browse-for-folder dialog
  47706  ntdll: Compiler warnings regression on x86_64 [stable]
  47736  __ASM_CFI not working on mac
  47752  commit "winex11.drv: Wake up the display on user input." introduced severe performance issues with atomic modesetting kernel drivers
  47766  PathAllocCanonicalize treats path segments start with dots wrong.
  47769  Royal Quest: fails to start with LdrInitializeThunk "gaxomofy.dll" failed to initialize, aborting
  47779  iCloud refuses to install: "Your computer is missing Media features."


Changes since 4.16:

Akihiro Sagawa (1):
      dwrite: Prefer Windows platform names regardless of record order.

Alex Henrie (13):
      ntdll: Avoid dead initialization (scan-build).
      user32: Avoid dead initialization (scan-build).
      dbghelp: Avoid dead assignment (scan-build).
      glu32: Avoid dead assignment (scan-build).
      crypt32: Factor out sprintf calls in trust_status_to_str (scan-build).
      winex11: Avoid dead assignment (scan-build).
      windowscodecs: Avoid dead assignment (scan-build).
      ntdll: Ensure that performance information is initialized (scan-build).
      wined3d: Avoid dead assignment (scan-build).
      include: Rename Reserved1 to SystemStatusFlag in SYSTEM_POWER_STATUS.
      include: Add constants needed for SYSTEM_POWER_STATUS.
      include: Add Tag field to SYSTEM_BATTERY_STATE.
      ntdll/tests: Add tests for NtPowerInformation(SystemBatteryState).

Alexandre Julliard (30):
      ntdll: Don't use virtual_uninterrupted_read_memory() for invalid %gs check.
      kernel32: Move some path functions to kernelbase.
      kernel32: Move some locale functions to kernelbase.
      ntdll: Fix usage of libunwind on x86-64 on non-macOS platforms.
      ntdll: Don't send the first chance debug event twice.
      ntdll: Send first chance debug event while on signal stack on i386.
      kernelbase: Don't round thread stack guaranteed size when it is zero.
      psapi: Avoid using forwards.
      include: Import uchar.h from MinGW.
      ntdll: Avoid server call when possible in NtSetContextThread() on ARM64.
      ntdll: Send first chance debug event while on signal stack on ARM64.
      winegcc: Add ARRAY_SIZE macro.
      winegcc: Add --wine-objdir and --winebuild options for the Wine build.
      winegcc: Always search the standard include dirs.
      winegcc: Pass all linker arguments also when testing link options.
      include: Remove no longer needed dependency on setjmp.h.
      kernel32: Move some handle functions to kernelbase.
      kernel32: Move delay-load functions to kernelbase.
      kernel32: Move file time functions to kernelbase.
      kernel32: Move NUMA-related functions to kernelbase.
      kernel32: Move some misc functions to kernelbase.
      oleaut32: Split DispCallFunc() into platform-specific functions.
      oleaut32: Implement DispCallFunc() for ARM64.
      make_specfiles: Don't add forwards to the api-ms-* dlls.
      oleaut32: Return value pointer needs to be in x8 on ARM64.
      rpcrt4: Add stubless proxy support for ARM64.
      winegcc: Update __stdcall defines for ARM platforms.
      winegcc: Centralize argument parsing into the main switch.
      kernelbase: Use set_ntstatus() in more places.
      msvcrt: Move vtbl wrappers together with the other functions.

Alistair Leslie-Hughes (6):
      wininet: Pass correct server name when retrieving username information.
      wininet: Update session username/password when cached credentials are used.
      wininet: Clear cached credentials in INTERNET_OPTION_END_BROWSER_SESSION.
      wininet: Use username/password parameters over cached credentials.
      bcrypt: Fix key_asymmetric_init function for macos.
      dsound: Primary buffer doesn't support flag DSBCAPS_CTRLFX.

Andrew Eikum (3):
      winex11.drv: Throttle calls to XResetScreenSaver.
      winebus.sys: Fix build without Linux event support.
      msvcrt: Implement %T format for strftime.

Brendan Shanks (3):
      user32/tests: Test GetWindowInfo error conditions and incorrect cbSize.
      user32: Fix behavior of GetWindowInfo(0, NULL).
      d2d1: Only create shader resource views for drawable bitmaps.

Charles Davis (1):
      include: Pick up the ms_hook_prologue attribute for Clang, too.

Dmitry Timoshkov (7):
      rpcrt4: Implement wait_for_incoming_data() for named pipes transport.
      rpcrt4: Implement NdrAsyncServerCall.
      rpcrt4: Implement RpcAsyncCompleteCall for server side.
      shell32: Return S_OK from IDropTargetHelper::Show().
      rpcrt4: Remove FIXME about RPC_CONTEXT_HANDLE_FLAGS from NDRSContextMarshall2 and NDRSContextUnmarshall2.
      rpcrt4: Perform the INITOUT phase in NdrAsyncServerCall instead of RpcAsyncCompleteCall.
      rpcrt4: Reimplement rpcrt4_conn_np_wait_for_incoming_data() using asynchronous read with zero sized buffer.

Fabian Maurer (1):
      shell32: Prevent text truncation inside the old "browse folder" dialog.

François Gouget (11):
      ieframe/tests: Fix the name of an unused function parameter.
      ieframe/tests: Fix the spelling of an ok() message.
      glu32: Fix the spelling of some comments.
      gdiplus: Fix a function name in a FIXME() message.
      gdi32: Fix the spelling of some comments.
      winmm: Avoid a couple of unneeded lstrlenW() calls.
      kernel32/tests: Fix the spelling of the exerciseServer() function name.
      jscript/tests: Fix the spelling and slightly reword an ok() message.
      kernel32/tests: Fix the spelling of three ok() messages and comments.
      dxerr9: Fix the spelling of some error messages.
      jscript/tests: Fix the spelling of a couple of jscript ok() messages.

Gabriel Ivăncescu (7):
      vbscript: Add support for the SCRIPTTEXT_ISEXPRESSION flag in ParseScriptText.
      vbscript/tests: Add tests for ParseScriptText with the SCRIPTTEXT_ISEXPRESSION flag.
      vbscript: Add support for the SCRIPTPROC_ISEXPRESSION flag in ParseProcedureText.
      vbscript/tests: Add test for ParseProcedureText with the SCRIPTPROC_ISEXPRESSION flag.
      vbscript: Handle NULL code text in ParseScriptText and ParseProcedureText.
      msscript.ocx: Partially implement IScriptControl::ExecuteStatement.
      msscript.ocx/tests: Add tests for IScriptControl::ExecuteStatement.

Hans Leidekker (14):
      wbemprox: Add support for CIM_REAL32 values.
      wbemprox: Implement Win32_BIOS.CurrentLanguage.
      wbemprox: Implement more Win32_OperatingSystem properties.
      wbemprox: Implement more Win32_PhysicalMemory properties.
      wbemprox: Implement Win32_WinSAT.
      wbemprox: Avoid a crash when a class is not implemented.
      wbemprox: Map CIM_UINT16 and CIM_UINT32 to VT_I4 by default.
      wbemprox: Implement Win32_DisplayControllerConfiguration.
      bcrypt: Add support for generating RSA keys.
      bcrypt: Implement BCryptSignHash.
      webservices: Simplify WsAddressMessage.
      webservices: Add support for writing WS_ENUM_TYPE values.
      webservices: Add support for mapped HTTP headers.
      ws2_32: Call the completion routine in GetAddrInfoExW.

Henri Verbeet (15):
      wined3d: Add GPU information for AMD VEGA12.
      wined3d: More accurately determine whether a separate sRGB texture is required.
      wined3d: Explicitly initialise sRGB format info.
      wined3d: Retrieve the supported sample counts for Vulkan formats.
      wined3d: Initialise the multi-sample draw location for the Vulkan adapter.
      wined3d: Use wined3d_resource_gl_legacy_map_flags() in wined3d_buffer_gl_map().
      wined3d: Derive the GL bind point for buffer object maps from the bind flags.
      wined3d: Use explicit flushing in wined3d_context_gl_unmap_bo_address().
      wined3d: Move the "buffer_object" field from struct wined3d_buffer_gl to struct wined3d_buffer.
      wined3d: Use wined3d_context_map_bo_address() in wined3d_buffer_gl_map().
      wined3d: Merge wined3d_buffer_gl_map() and buffer_resource_sub_resource_map().
      wined3d: Merge wined3d_buffer_gl_unmap() and buffer_resource_sub_resource_unmap().
      wined3d: Make the adapter responsible for clearing UAVs.
      wined3d: Make the adapter responsible for copying between buffer objects.
      wined3d: Handle typeless formats in surface_cpu_blt().

Jacek Caban (34):
      jscript: Use wide-char literals in lexer.
      scrobj: Add partial DllInstall implementation.
      scrobj/tests: Add scriptlet tests.
      scrobj: Add scriptlet factory stub implementation.
      scrobj: Add beginning scriptlet parser implementation.
      scrobj: Add registration element parser.
      scrobj: Add public element parser implementation.
      scrobj: Add script element parser partial implementation.
      scrobj: Suport scriptlet registration.
      scrobj: Add stub IActiveScriptSite implementation.
      scrobj: Add IActiveScriptSiteWindow stub implementation.
      scrobj: Add IServiceProvider stub implementation.
      scrobj: Create script engine instances for script hosts.
      kernel32/tests: Enable debug break exception race tests on i386 Wine.
      winegcc: Use -print-libgcc-file-name to find libgcc.
      scrobj: Add scriptlet instance stub implementation.
      scrobj: Parse scripts in DllInstall.
      scrobj: Create script hosts for scriptlet instance.
      scrobj: Implement GetItemInfo.
      scrobj: Run scripts when creating a scriptlet instance.
      ole32: Lock spies list when iterating it.
      ole32/tests: Add more initialization spies tests.
      include: Add threadpoolapiset.h file.
      msscript.ocx: Fix VARIANT access.
      scrobj: Zero initialize scriptlet instance.
      scrobj: Add property element parser support.
      scrobj/tests: Add property element tests.
      scrobj: Store script dispatch in script host.
      scrobj: Lookup object members implementations in scripts when createating scriptlet instance.
      scrobj: Add GetDispID implementation.
      scrobj: Add InvokeEx implementation.
      scrobj: Use ReadValueChunk to read script body.
      scrobj: Improve debug traces.
      scrobj: Ignore processing instructions in scriptlet files.

Jactry Zeng (3):
      msscript/tests: Initialize custom engine for global.
      msscript: Cache state of IActiveScript in ScriptHost struct.
      msscript: Partially implement IScriptControl::AddCode().

Jeff Smith (1):
      kernelbase: Fix PathAllocCanonicalize handling segments that contain dots.

Ken Thomases (2):
      ntdll: Fix the Mac build with SDKs older than 10.14.
      include: Always generate CFI directives on macOS.

Kevin Puetz (4):
      winbase.h: Add GetFinalPathNameByHandle declaration.
      atlbase.h: Add AtlComModuleRevokeClassObjects declaration.
      winegcc: Correctly pass the '-' file name (stdin) to the compiler.
      oleaut32: Fix RegisterTypeLib prototype.

Matteo Bruni (15):
      d3dx9: Simplify unsupported format check.
      d3dx9: Relax a block alignment check.
      d3dx9/tests: Add a test for loading surfaces not divisible by the block size.
      d3dx9/tests: Add a test for loading a texture smaller than the block size.
      d3dx9/tests: Add a test with a larger DXT5 texture.
      d3dx9/tests: Add more tests loading misaligned block textures.
      d3dx9/tests: Add even more tests for misaligned block textures.
      d3dx9: Add traces to filtering functions.
      d3dx9: Handle compressed surfaces in D3DXLoadSurfaceFromMemory.
      d3dx9/tests: Improve tests to check for DXTn fallback formats.
      d3dx9: Move the source rect alignment check into the condition for simple copy.
      d3dx9: Handle non-zero source rect position in D3DXLoadSurfaceFromMemory().
      d3dx9: Implement DXTn compression for offset destination rect.
      d3dx9: Don't pass the D3DLOCK_DISCARD flag when mapping a texture.
      d3dx9: Compute the correct source rect in D3DXLoadSurfaceFromFileInMemory().

Michael Müller (1):
      wine.inf: Create the WindowsMediaVersion key and set its default value.

Michael Stefaniuc (1):
      widl: Add the ARRAY_SIZE() macro.

Nikolay Sivov (12):
      d3d10_1/tests: Add a test for creating SRV for resource without D3D10_BIND_SHADER_RESOURCE.
      d3d10core/tests: Add a test for creating SRV for resource without D3D10_BIND_SHADER_RESOURCE.
      d3d11/tests: Add a test for creating SRV for resource without D3D11_BIND_SHADER_RESOURCE.
      dwrite: Sort localized strings by locale name.
      mfplat: Add Media Session attributes for tracing.
      mf: Add stub implementation for standard quality manager.
      mf: Create topology loader of session creation.
      mf: Create quality manager on session creation.
      mf: Remove fixme trace for partially handled functionality.
      wined3d: Fail SRV creation for resources without corresponding bind flag.
      mf: Fix stream IID loader should be testing for.
      mf: Add initial async implementation of SetTopology().

Paul Gofman (1):
      wined3d: Allow loading buffers mapped through system memory.

Piotr Caban (9):
      winebus.sys: Stop deviceloop_thread to avoid crash on driver unload.
      winebus.sys: Stop device report threads to avoid crash on driver unload.
      ntdll: Ignore ExceptionFlags changes done by exception handlers.
      mountmgr.sys: Null terminate serial_search_paths and parallel_search_paths tables.
      mountmgr.sys: Always add all user-defined ports.
      winebus.sys: Don't do anything in udev_driver_unload if udev was not initialized.
      winebus.sys: Don't do anything in iohid_driver_unload if iohid was not initialized.
      winebus.sys: Stop SDL deviceloop_thread to avoid crash on driver unload.
      msxml3: Don't return NULL namespace and local name in saxreader callbacks.

Rémi Bernon (6):
      winex11.drv: Destroy old clipping message window if it has been replaced.
      ntoskrnl.exe: Use case-insensitive driver name comparison.
      ntoskrnl.exe: Update the interface if it is already in the tree.
      winebus.sys: Use the SDL joystick index as device id instead of instance id.
      winebus.sys: Report the native product string for some Xbox gamepads.
      winex11.drv: Handle FocusIn/NotifyGrab and FocusOut/NotifyUngrab events.

Sebastian Lackner (1):
      ntdll: Execute queued APCs before starting a process.

Sven Baars (6):
      httpapi: Fix a memory leak (Valgrind).
      httpapi/tests: Initialize response_buffer to 0 (Valgrind).
      httpapi/tests: Cancel a pending receive request (Valgrind).
      msi: Fix a leak on error path (Coverity).
      kernelbase: Fix a leak on error path (Coverity).
      httpapi/tests: Use CancelIo to avoid a test failure on Windows XP.

Vincent Povirk (1):
      mscoree: Update Wine Mono to 4.9.3.

Zebediah Figura (53):
      winegstreamer: Store the pin media type directly.
      winegstreamer: Improve some trace messages.
      winegstreamer: Use the "format" field to determine the subtype and bit depth.
      winegstreamer: Factor out amt_from_gst_caps().
      configure: Also try /usr/lib32/pkgconfig/ for the 32-bit PKG_CONFIG_PATH.
      winegstreamer: Set lSampleSize in amt_from_gst_caps_audio().
      winegstreamer: Set bFixedSizeSamples in amt_from_gst_caps_audio().
      winegstreamer: Clear bTemporalCompression in amt_from_gst_caps_audio().
      winegstreamer: Also set cbFormat when using WAVE_FORMAT_PCM.
      user32: Return -1 from peek_message() on error.
      server: Validate the filter window handle in get_message.
      winegstreamer: Move more common pin initialization into create_pin().
      winegstreamer: Introduce a callback for filter-specific initialization.
      winegstreamer: Reimplement the WAVE parser ontop of the wavparse plugin.
      winex11: Track the client colormap separately.
      winegstreamer: Fix registration for the WAVE parser.
      winegstreamer: Clear bFixedSizeSamples in amt_from_gst_caps_video().
      winegstreamer: Set lSampleSize to 1 in amt_from_gst_caps_video().
      winegstreamer: Don't set the source and target rects in amt_from_gst_caps_video().
      winegstreamer: Reimplement the AVI splitter on top of the avidemux plugin.
      winegstreamer: Reimplement the MPEG splitter on top of the mpegaudioparse plugin.
      quartz: Get rid of the no longer used base parser.
      wined3d: Fully clean up the device state in wined3d_device_uninit_3d().
      wined3d: Reset the CS state before cleaning up the device state.
      wineqtdecoder: Use BasePinImpl_QueryAccept() and BasePinImpl_EnumMediaTypes().
      strmbase: Don't expose EnumMediaTypes_Construct().
      strmbase: Get rid of the version fields from IEnumMediaTypesImpl.
      strmbase: Get rid of the "enumMediaFunction" field from IEnumMediaTypesImpl.
      strmbase: Get rid of the BasePin typedef.
      strmbase: Rename pfnCheckMediaType() to pin_query_accept().
      strmbase: Rename pfnGetMediaType() to pin_get_media_type().
      strmbase: Pass an unsigned index to pin_get_media_type().
      qcap/vfwcapture: Use more strmbase pin methods.
      qcap/smartteefilter: Use BasePinImpl_EnumMediaTypes().
      strmbase: Introduce BasePinImpl_QueryInterface().
      strmbase: Use BasePinImpl_QueryInterface().
      quartz: Use BasePinImpl_QueryInterface().
      qcap: Use BasePinImpl_QueryInterface().
      quartz/tests: Alter test.mpg to avoid some failures.
      wined3d: Return a wined3d_stateblock from wined3d_device_begin_stateblock().
      d3d9: Track the primary stateblock state locally.
      d3d8: Track the primary stateblock state locally.
      wined3d: Introduce wined3d_stateblock_set_vs_consts_f().
      d3d9: Handle stateblocks in d3d9_device_SetVertexShaderConstantF().
      d3d8: Handle stateblocks in d3d8_device_SetVertexShaderConstant().
      ntdll: Implement NtQueryInformationFile(FileAttributeTagInformation).
      kernelbase: Implement GetFileInformationByHandleEx(FileAttributeTagInfo).
      strmbase: Don't execute OnStartStreaming() or OnStopStreaming() callbacks if the sink is unconnected.
      quartz/tests: Add some tests for unconnected filter state change.
      qcap/avico: Don't try to commit a NULL allocator in AVICompressor_Run().
      qcap/tests: Add some tests for unconnected filter state change.
      qcap/smartteefilter: Use strmbase filter state change methods.
      strmbase: Rename "pConnectedTo" to "peer".

Zhiyi Zhang (12):
      user32: Don't report mirrored slave monitors in EnumDisplayMonitors.
      kernelbase: Comment out DECLSPEC_HOTPATCH for GetThreadLocale.
      kernelbase/tests: Add more PathAllocCanonicalize tests.
      gdi32/tests: Fix a test failure on Win10 1809.
      gdi32/tests: Add CreateDC tests.
      winex11.drv: Initialize display devices before getting primary desktop rectangle.
      winex11.drv: Add virtual desktop display device handler.
      winex11.drv: Support XRandR display device handler.
      winex11.drv: Handle XRandR display device changes.
      winemac.drv: Trace display device counts.
      winex11.drv: Trace display device counts.
      winex11.drv: Handle XRandR not reporting any providers.

Alexandre Julliard
[email protected]