The Wine development release 2.17 is now available.

What's new in this release (see below for details):
  - Better support for grayscale mode in DirectWrite.
  - Per-application StartupWMClass in desktop files.
  - Virtual memory compatibility improvements.
  - Palette handling improvements in WindowsCodecs.
  - Reply messages improvements in WebServices.
  - Various bug fixes.

The source is available from the following locations:

  http://dl.winehq.org/wine/source/2.x/wine-2.17.tar.xz
  http://mirrors.ibiblio.org/wine/source/2.x/wine-2.17.tar.xz

Binary packages for various distributions will be available from:

  http://www.winehq.org/download

You will find documentation on http://www.winehq.org/documentation

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

  12185  Before You Know It crashes
  19177  Gorky-17 does not start in Direct3D HAL (SW Renderer is OK)
  29958  UIRibbon Framework not implemented: 926749fa-2615-4987-8845-c33e65f2b957
  38622  gdiplus should return PixelFormat32bppARGB instead of PixelFormat8bppIndexed for a grayscale PNG file
  39885  Cannot allocate more than 32gb of memory
  41370  TTM_GETCURRENTTOOL returns always FALSE when send from TTN_NEEDTEXT handler.
  41827  Wrong specular rendering with some applications
  42427  Steam application claims no internet connection
  43046  Multiple apps need api-ms-win-crt-stdio-l1-1-0.dll.__stdio_common_vfprintf_s (Civilization VI, Mafia 3, SketchBook)
  43197  5Plus: Print dialog crashes with illegal floating point operation
  43290  MyLifeOrganized crashes when mousing over tabs
  43319  Steam Store/Uplay/Epic Games Launcher no longer display text in Windows 7 mode (libcef applications)
  43476  Skyrim hardware detection spinlocks with CSMT enabled
  43519  Path of Exile: Corrupt/flickering UI textures after ~1 minute of gameplay
  43577  unit test: DBGrid inplace editor dropdown does not work and worked on version 2.0.2
  43586  Dead Space: no shadows in game
  43649  dbgeng stub DebugCreateEx causes jadesentinel crash in JADE thin client
  43658  Text in Deletion Confirmation MsgBox has wrong background colour
  43668  Terris Universal Remote UFB 234 - update database does not work
  43685  Many games fail to start, or run without audio

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

Changes since 2.16:

Alex Henrie (7):
      msvcrt: Note that __stdio_common functions are for ucrtbase.
      ucrtbase: Add __stdio_common_vfprintf_s.
      ucrtbase: Add __stdio_common_vfwprintf_s.
      include: Add multimon.h.
      shell32/tests: Add tests for FolderItems_Item and FolderItems_get_Count.
      shell32: Implement FolderItems_Item.
      shell32: Implement FolderItems_get_Count.

Alexandre Julliard (29):
      ntdll: Add helper functions for getting and setting page protection bytes.
      ntdll: Add a helper function for setting bits in page protection bytes.
      ntdll: Add a helper function for applying page protection bytes with mprotect.
      ntdll: Pass the allocation size to the alloc_virtual_heap function.
      ntdll: Allocate the per-page protection byte separately from the view.
      ntdll: Remove the view parameter from the page protection helpers.
      ntdll: Allocate views out of a memory block instead of using a heap.
      ntdll: Don't do partial writes in virtual_uninterrupted_write_memory.
      ntdll: Use the find_view_range helper function to check for overlapping views.
      rbtree.h: Add a wine_rb_prev iteration helper function.
      ntdll: Store memory views in a binary tree instead of a list.
      server: Enforce valid flags for file mappings.
      ntdll: Disallow changing PAGE_NOCACHE flag for individual pages.
      ntdll: Remove the no longer used VPROT_NOEXEC flag.
      ntdll: Store the SEC_* section flags directly in the view protection.
      ntdll: Ignore attempts to commit pages in an already committed anonymous mapping.
      kernel32/tests: Retrieve the page size only once.
      kernel32/tests: Fix mapping protection tests to succeed on recent Windows versions.
      kernel32/tests: Also run mapping tests against an anonymous mapping.
      kernel32/tests: Also run mapping tests against an executable image.
      ntdll: Avoid accessing builtin views outside of the critical section.
      ntdll: Trace views once they are properly initialized.
      ntdll: Fix access rights checks for mapping objects.
      ntdll: Verify page protection against the mapping protections in VirtualAlloc and VirtualProtect.
      ntdll: Pass the mapping file access instead of the protection bits to the server.
      ntdll: Get rid of the VPROT_VALLOC flag.
      ntdll: Also release memory past the last view in remove_reserved_area.
      ntdll: Don't use the mapping handle to detect file mappings.
      kernel32/tests: Avoid some delays in the process test.

Alistair Leslie-Hughes (6):
      include: Added IMFMediaEventQueue interface.
      include: Add interfaces IMFMediaTypeHandler, IMFStreamDescriptor.
      mfplat: Added MFCreateEventQueue stub.
      include: Add IMFSinkWriterEx interface.
      mfplat: Implement MFCreateStreamDescriptor.
      mfplat: Implement MFCreateEventQueue.

Andrey Gusev (1):
      unicows: Fix CreateDialogParamW spec file entry.

Daniel Lehman (3):
      wininet: Fix proxy bypass with wildcard if domain length matches with server.
      msvcrt: Use exception base to create copy constructor pointer.
      msvcrt: Protect onexit table with critical section.

Dmitry Timoshkov (11):
      windowscodecs: Implement IWICBitmapDecoder::CopyPalette in PNG decoder.
      windowscodecs: Fix IWICBitmapEncoder::SetPalette for a not initialized case in PNG encoder.
      windowscodecs/tests: Make create_decoder() return an error code in PNG tests.
      windowscodecs/tests: Add more tests for loading PNG images in various color formats.
      windowscodecs: Implement IWICBitmapFrameEncode::SetPalette in JPEG encoder.
      windowscodecs: Fix IWICBitmapEncoder::SetPalette for a not initialized case in JPEG encoder.
      windowscodecs: Fix IWICBitmapEncoder::SetPalette for a not initialized case in BMP encoder.
      windowscodecs: Implement IWICBitmapFrameEncode::SetPalette in BMP encoder.
      windowscodecs: Implement IWICBitmapDecoder::CopyPalette in TIFF decoder.
      windowscodecs: Implement IWICBitmapFrameEncode::SetPalette in the TIFF encoder.
      windowscodecs: Fix IWICBitmapEncoder::SetPalette for a not initialized case in TIFF encoder.

Fabian Maurer (11):
      shell32: Draw text on message boxes without background.
      winecfg: Remove processorArchitecture from manifest.
      user32: Add stub for CalcMenuBar.
      api-ms-win-core-heap-l2-1-0: Add dll.
      api-ms-win-core-localization-obsolete-l1-3-0: Add dll.
      api-ms-win-core-shlwapi-obsolete-l1-2-0: Add dll.
      api-ms-win-core-synch-l1-2-1: Add dll.
      mfidl.idl: Add interfaces IMFClockStateSink, IMFGetService.
      dxva2api.idl: Add interface IDirectXVideoMemoryConfiguration.
      evr: Add interface definitions for EVR filter.
      comctl32/tests: Dump failed message sequence correctly.

François Gouget (7):
      dsquery: Case fixes.
      ieproxy: Case fixes.
      mshtml: A spelling fix in a WARN() message.
      mshtml: Make HTMLDocumentNode_init_dispex_info() static.
      dwrite: Factory_release_cached_fontface() is unused so remove it.
      webservices: Alloc_utf16_text() is unused, so remove it.
      gdiplus: Add a trailing linefeed to an ERR() message.

Hans Leidekker (13):
      webservices: Store headers in WsReadEnvelopeStart.
      webservices: Implement WsSendReplyMessage.
      webservices: Return HRESULT from insert_string.
      webservices: Store the action header as WS_XML_STRING.
      webservices: Add a mechanism to use the builtin static dictionary in the writer.
      webservices: Also use the dictionary for writing UTF-8 text values.
      webservices: Build a session dictionary for strings not present in the static dictionary.
      webservices: Add support for multiple message descriptions in WsReceiveMessage.
      webservices: Parse the MessageID header.
      webservices: Include a RelatesTo header in reply messages.
      winhttp: Trace errors from send and recv.
      winhttp: Allocate a credential handle for each session.
      winhttp: Implement WINHTTP_OPTION_SECURE_PROTOCOLS.

Hugh McMaster (3):
      reg/tests: Delete the test registry key before starting each test.
      reg/tests: Add basic tests for the export operation.
      setupapi: Recursively remove any subkeys before calling NtDeleteKey().

Huw D. M. Davies (4):
      riched20: Remove an unused parameter.
      riched20: Correctly release the STGMEDIUM.
      riched20: Don't special case the non-stretching case.
      riched20: Don't scale the picture size with dpi.

Jacek Caban (12):
      mshtml: Added IHTMLDocument7::get_characterSet implementation and use it in get_charset.
      mshtml: Added IHTMLDocument7::get_defaultView implementation and use it for get_parentWindow implementation.
      mshtml: Forward common function from IHTMLDocument7 to IHTMLDocument2.
      mshtml: Added implementation of IHTMLDocument7 event handler properties for supported events.
      mshtml: Expose IHTMLDocument7 interface to scripts.
      mshtml: Added IHTMLDocument7::head property implementation.
      mshtml: Added IHTMLDocument7::getElementsByClassName implementation.
      mshtml: Forward IHTMLElement6::get_nodeName to IHTMLDOMNode implementation.
      mshtml: Forward IHTMLElement6::get_tagName to IHTMLElement implementation.
      mshtml: Forward attributes functions from IHTMLElement6 to older interfaces.
      mshtml: Expose IHTMLElement6 to scripts.
      mshtml: Fixed getElementsByTagName for comment elements.

Jonathan Doron (2):
      ntdll: Apply owner and group regardless of the SE_OWNER_DEFAULTED or SE_GROUP_DEFAULTED flags.
      kernel32/tests: Test suspended process states.

Józef Kucia (1):
      d3d11/tests: Add test for conservative depth output.

Marcin Mikołajczak (1):
      po: Update Polish translation.

Martin Storsjo (1):
      msvcrt: Implement setjmp/longjmp on aarch64.

Matteo Bruni (13):
      d3d9/tests: Add a test for "NULL" FourCC format.
      wined3d: Return the up-to-date locations from blitters.
      wined3d: Don't take the upload path for blits to formats requiring conversion.
      wined3d: Restore support for d3d9 extension formats.
      wined3d: Get rid of most of the redundant query flushes.
      d3d9/tests: Trace the current test in test_signed_formats().
      d3d8/tests: Trace the current test in test_signed_formats().
      wined3d: Copy the module handle to a local variable in wined3d_cs_run().
      wined3d: Disable YUV formats when not supported.
      wined3d: Disable the ARBfp blitter on core profile.
      opengl32/tests: Fix typo in ok() condition.
      opengl32: Support a couple new typedefs in the XML.
      opengl32: Update to OpenGL 4.6.

Michael Müller (2):
      wined3d: Recognize conservative depth output registers.
      wined3d: Add conservative depth output information to GLSL pixel shaders.

Nikolay Sivov (22):
      dwrite: Handle 8bpp gray bitmaps for bitmap target.
      dwrite: Validate buffer size passed to CreateAlphaTexture() against analysis texture type.
      dwrite: Use 8bpp bitmaps in grayscale mode.
      d2d1: Use 8bpp text bitmaps for grayscale mode.
      dbgeng: Added DebugCreateEx() stub.
      dwrite: Fix 8bpp bitmap copy.
      msxml3/httpreq: Support HEAD request.
      dwrite: Support DWRITE_TRIMMING_GRANULARITY_WORD mode.
      comctl32/tooltips: Return full toolinfo from TTM_GETCURRENTTOOL.
      comctl32/tooltips: Set current tool before sending TTN_NEEDTEXT.
      comctl32/tooltips: Calm down trace messages.
      qcap: Remove redundant filter state check.
      usp10/tests: Remove special itemization failure test that doesn't happen.
      usp10/tests: Move initialization to a separate function, add another ScriptShape() test.
      usp10/tests: Remove workarounds that are no longer useful.
      shell32: Implement Application() property for Folder and FolderItems.
      dwrite/tests: Added a helper to initialize test text source.
      d2d1: Use better bezier segment bounds approximation when updating figure bounds.
      d2d1: Implement GetBounds() for path geometries.
      d3d9: Ask for texture GetDC() capability GET_DC based on texture format instead of initial swapchain buffer format.
      shell32/tests: Remove workarounds that are no longer relevant.
      shell32: Implement Application property for FolderItem.

Paul Gofman (3):
      d3dx9/tests: Add test for null shaders in effect.
      d3dx9: Return E_FAIL from ValidateTechnique() for techniques with unsupported shaders.
      d3dx9: Fix zero object_id handling in d3dx9_base_effect_get_pass_desc().

Rafał Mużyło (1):
      itss: Fix handling non-ASCII content paths.

Sebastian Lackner (1):
      kernel32: Add stub for GetProcessWorkingSetSizeEx.

Stefan Dösinger (1):
      ntdll: Make RtlDeregisterWaitEx(handle, INVALID_HANDLE_VALUE) thread safe.

Vincent Povirk (9):
      gdiplus: Account for gdi32 transform in SOFTWARE_GdipDrawPath.
      gdiplus: Account for gdi32 transforms in text functions.
      gdiplus: Account for gdi32 transform in GdipSetClipHrgn.
      windowscodecs: Generate a palette for color-keyed grayscale PNG's.
      winex11: Convert process name to lowercase for WM name hint.
      winemenubuilder: Set StartupWMClass for shortcuts to exe files.
      loader/wine.inf: Put 32-bit .ds fakedlls in windows/twain_32.
      sane.ds: Add support for word list options.
      shell32: Stub SHOpenWithDialog.

Zebediah Figura (9):
      msi: Remove ACTION_PerformUIAction().
      msi: Simplify message type processing.
      msi: More fully implement the ExecuteAction action.
      msi: Implement the INSTALL top-level action.
      msi: Perform the given action, or INSTALL, from MsiInstallProduct().
      msi/tests: Some cleanup for external UI tests.
      msi/tests: Add external UI tests for top-level actions.
      ieframe: Parse multiple command-line arguments.
      dsquery: Register CommonQuery coclass.

--
Alexandre Julliard
julliard@winehq.org
