The Wine development release 1.7.27 is now available.

What's new in this release (see below for details):
  - Some more work on Direct2D support.
  - Various improvements to RichEdit interfaces.
  - Initial support for ICMP version 6.
  - Various bug fixes.

The source is available from the following locations:

  http://prdownloads.sourceforge.net/wine/wine-1.7.27.tar.bz2
  http://mirrors.ibiblio.org/wine/source/1.7/wine-1.7.27.tar.bz2

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 1.7.27 (total 22):

  12659  Preferences window missing all user-modifiable settings in Acrobat V7.0 Pro (MSAA AccPropServices implementation needed)
  13424  msi winetests requires != limited user
  15013  Thunder:Can't finish any task.
  21917  SC2 'LazyLaunch' v2.0 fails with 'Exception frame is not in stack limits => unable to dispatch exception.' (TLS callbacks can taint EBP, needs assembly wrapper)
  25112  AT4RE FastScanner v3.0 hangs when clicking "Minimize"
  25585  Release key event is lost during lags in some games
  26414  World of warcraft crashes while changing the display resolution
  29055  Skyrim freezes on loading screen
  29509  Visual Studio 2005 trial crashes quickly building Wine
  32194  Multiple games and applications need bcrypt.dll.BCryptGetFipsAlgorithmMode (Chess Position Trainer, Terraria, .NET System.Security.Cryptography)
  34642  Adobe Premiere Pro 2.0 exits silently on startup ('GetMenuItemInfo' must zero out 'cch' if mask doesn't specify 'MIIM_TYPE')
  35134  Multiple game installers wait indefinitely for cmd.exe during execution of batch files (argv[0] is not 'cmd.exe') (Shroud of the Avatar: Forsaken Virtues, Aura Kingdom)
  35421  BetterInstaller (Somoto Ltd) variant of CheatEngine 6.3 installer crashes
  35842  Sentinel HASP hardlock.sys kernel driver (bundled with Kompas-3D v14) tries to access to DR7 (not handled in ntoskrnl emulate_instruction)
  36063  prince of persia 2008 game crashes
  36109  Magic & Mayhem 2: The Art of Magic sometimes fails to run without native dplay
  36800  XMP failed to start, services.exe has crashed
  36974  Iexplore cookie related crashes
  37163  WiX Toolset v3.8 installer doesn't open with Wine-Mono (unimplemented CorBindToCurrentRuntime)
  37224  msvcmaker generated wine.dsw fails to load with Visual Express 2005
  37239  Adobe Premiere Pro 2 deadlocks when opening additional windows (glu32 wrapper functions not sufficient)
  37253  dlls/wbemprox/builtin.c fails to build on NetBSD 6.1.4

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

Changes since 1.7.26:

Akihiro Sagawa (1):
      reg: Add reg.exe test suite.

Alexandre Julliard (2):
      kernel32: Pass the correct completion values in ReadFileScatter and WriteFileGather.
      dpnet: Add a missing coclass registration.

Alistair Leslie-Hughes (4):
      dpnet: Stub interface IDirectPlay8LobbyClient.
      cmd: Dont assume cmd.exe is the first argument.
      hnetcfg: Allow NetFwOpenPort to be created.
      hnetcfg: Add typeinfo support to INetFwOpenPort.

André Hentschel (4):
      rasapi32: Fix a typo in a comment.
      msvcmaker: Allow hyphens in dll names.
      msvcmaker: Allow ocx tests.
      winedbg: Respect TMPDIR environment variable.

Aric Stewart (1):
      dwrite: Break fontfamily data into its own structure.

Austin English (3):
      ws2_32: Don't assume AI_V4MAPPED is available.
      wbemprox: Include winsock.h earlier for NetBSD.
      wineconsole: Only use getmouse when HAVE_MOUSEMASK is defined.

Daniel Lehman (1):
      ntdll: Use the configured CriticalSection timeout in RtlpWaitForCriticalSection.

Eric Kohl (2):
      advapi32/tests: Fix typos in test_LsaLookupNames2.
      rpcrt4: Fix buffer size calculation for arrays with embedded pointers.

François Gouget (2):
      dpnet/tests: Make test_lobbyclient() static.
      msvcrt: Prefix _set_output_format() with MSVCRT_ to avoid a collision with MinGW.

Hans Leidekker (3):
      msi: Improve support for advertized shortcuts.
      winhttp: Verify the async parameter type in IWinHttpRequest::Open.
      rsaenh: Fix typos in SHA-384/SHA-512 OIDs.

Hao Peng (1):
      svchost: Add LOAD_WITH_ALTERED_SEARCH_PATH flag when loading the dll.

Henri Verbeet (30):
      widl: Handle aggregate returns in a MSVC compatible way.
      d2d1: Implement d2d_d3d_render_target_GetSize().
      d2d1: Implement d2d_d3d_render_target_Clear().
      d2d1: Implement initial clipping support.
      d2d1/tests: Add a basic clipping test.
      d2d1: Simplify clip stack handling.
      dxgi: Get rid of IWineDXGIAdapter.
      dxgi: Get rid of IWineDXGIFactory.
      dxgi: Call wined3d_device_init_3d() on device creation.
      d2d1: Implement d2d_factory_CreateWicBitmapRenderTarget().
      d2d1: Implement d2d_d3d_render_target_CreateMesh().
      d2d1: Implement d2d_d3d_render_target_CreateBitmap().
      d2d1: Implement d2d_d3d_render_target_CreateBitmapFromWicBitmap().
      d3d10core: Create wined3d views for shader resource views.
      d3d10core: Implement d3d10_device_VSSetShaderResources().
      d3d10core: Implement d3d10_device_VSGetShaderResources().
      d3d10core: Implement d3d10_device_GSSetShaderResources().
      d3d10core: Implement d3d10_device_GSGetShaderResources().
      d3d10core: Implement d3d10_device_PSSetShaderResources().
      d3d10core: Implement d3d10_device_PSGetShaderResources().
      d3d10: Also store the depth/stencil state in the stateblock.
      wined3d: Do not increment the reference count of the returned buffer in wined3d_device_get_stream_source().
      wined3d: Set the initial primitive type to WINED3D_PT_UNDEFINED.
      d3d10core: Set the initial blend factors to 1.0f.
      d3d10core: Set the initial sample mask to D3D10_DEFAULT_SAMPLE_MASK.
      d3d10core: Create wined3d queries for queries.
      d3d10core: Implement d3d10_device_SetPredication().
      d3d10core: Implement d3d10_device_GetPredication().
      wined3d: Never pass a surface to wined3d_resource_is_offscreen().
      wined3d: Use the texture resource in wined3d_surface_depth_fill().

Hugh McMaster (1):
      user32: Fix spelling in a comment.

Jacek Caban (12):
      mshtml: Bind events to document node instead of body element.
      mshtml: Added semi-stub IHTMLElement4::onmousewheel propery implementation.
      oleacc: Added DllRegisterServer and DllUnregisterServer implementations.
      oleacc: Register CAccPropServices class.
      oleacc: Added CAccPropServices stub implementation.
      mshtml: Added IHTMLElement::get_sourceIndex implementation.
      jscript: Add DISPATCH_PROPERTYGET flag only for DISPATCH_METHOD call in disp_call_value.
      wininet: Moved critical section locking to get_cookie callers so that cookie_set_t is also protected.
      wininet: Properly clean up in InternetGetCookieExW if no cookies were found.
      mshtml: Don't include leading '?' in nsIURL::GetSearch implementation.
      mshtml: Make listStyle tests less strict about value order.
      mshtml: Don't use nsIDOMHTMLParamElement.

Jactry Zeng (16):
      mshtml/tests: Fix typo.
      mshtml: Add IHTMLTableCell::bgColor property implementation.
      mshtml: Return E_POINTER when p is NULL in get_nsstyle_pixel_val.
      mshtml: Add IHTMLStyle::get_pixelWidth implementation.
      mshtml: Add IHTMLStyle::pixelHeight property implementation.
      mshtml: Add IHTMLStyle::pixelTop property implementation.
      riched20: Stub for ITextRange interface and implement ITextDocument::Range.
      mshtml: Add IHTMLCurrentStyle::get_textTransform implementation.
      riched20: Avoid invalid memory access.
      riched20: Implement ITextRange::GetChar.
      riched20: Implement ITextSelection::GetChar.
      riched20: Implement ITextRange::GetStart and ITextRange::GetEnd.
      riched20: Implement ITextSelection::GetStart and ITextSelection::GetEnd.
      riched20: Implement ITextRange::GetDuplicate.
      riched20: Implement ITextRange::Collapse.
      riched20: Implement ITextSelection::Collapse.

Marcus Meissner (2):
      ntoskrnl.exe: Emulate some more mov eax -> drX.
      shell32: Added stub for SHEnumerateUnreadMailAccountsW.

Marko Hauptvogel (4):
      winsock: Add icmpv6 protocol.
      iphlpapi: Implement icmpv6 create function.
      iphlpapi/tests: Fix typo.
      iphlpapi: Add icmpv6 send stub.

Michael Müller (2):
      user32: Also set cch member in GetMenuItemInfo when passing a null pointer.
      bcrypt: Add semi-stub for BCryptGetFipsAlgorithmMode.

Nikolay Sivov (2):
      msvcrt: Added __dstbias() export.
      dwrite: Added IDWriteTypography implementation.

Piotr Caban (1):
      msvcp90: Fix FMTFLAG_showpoint handling in num_put_char__Ffmt.

Qian Hong (3):
      mshtml/tests: Fixed typo.
      mshtml: Handle DISPATCH_PROPERTYPUT | DISPATCH_PROPERTYPUTREF in invoke_builtin_prop.
      mshtml: Added IHTMLDOMAttribute::put_nodeValue implementation.

Sebastian Lackner (4):
      ntdll: Save more registers in call_dll_entry_point on i386.
      ntdll: Use call_dll_entry_point to execute TLS callbacks.
      user32/tests: Add an additional test for GetMenuItemInfo with NULL pointer as TypeData.
      glu32: Fix wrapper function for glu[Begin|End]Polygon and gluNextContour.

Vincent Povirk (3):
      mscoree: Implement CorBindToCurrentRuntime.
      gdiplus: Skip resampling when drawing a bitmap with no scaling/rotation.
      gdiplus: Use integer math to apply color matrices.

YongHao Hu (2):
      msvcp90: Improve complex_float_pow.
      msvcp90: Fix comment typo.

--
Alexandre Julliard
julliard@winehq.org
