The Wine development release 1.5.22 is now available.

What's new in this release (see below for details):
  - New version of the Gecko engine.
  - Beginnings of the Mac graphics driver.
  - Support for ARM64 platforms.
  - Fixes for RTL text in Uniscribe.
  - Various bug fixes.

The source is available from the following locations:

  http://prdownloads.sourceforge.net/wine/wine-1.5.22.tar.bz2
  http://mirrors.ibiblio.org/wine/source/1.5/wine-1.5.22.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.5.22 (total 50):

   8292  RemoveFontResourceEx not implemented - certain games go into infinite loop (Fifa Manager 2007, Neuro Hunter, Prince of Persia 3D)
  14775  Visere fails to run
  15672  getpagesize() is deprecated, sysconf(_SC_PAGE_SIZE) should be used instead
  16371  Evernote treeview icons black
  16942  Call of Duty 5: World at war has no sound (no FLOAT support in DSound)
  20699  TeamViewer 3 - characters repeat in the chat window
  21370  TeamViewer: Minor drawing error: background offset by 1 pixel
  21440  Teamviewer: crashes before starting remote connection
  22078  Icon error in tree windows of CSPRO 4.0
  25023  StoneQuest crashes without d3dx9_25 that is supplied
  25063  _pclose should wait for the command processor to terminate and return it's exit status
  25292  Galcon Fusion: Steam overlays don't work in the game
  25898  World of Tanks: Menu buttons disappear
  26941  No tab shown under treelist on CSPRO 4
  27806  fopen() CRT functions should recognize the unicode encoding modifier in mode string (CCS=xxx)
  28715  msvcrt/locale.ok triggers uninitialised read in MSVCRT__create_locale
  28743  Pathologic fails to start: 'Error creating renderer'
  28929  Sins of a solar empire Trinity requires D3DXCreateVolumeTextureFromFileW
  29396  Artrage starter fail to start
  29731  Corrupted 3d overlay graphics in Temple of Elemental Evil.
  31286  Visual Studio 2005 Trial needs atl80.dll.AtlWaitWithMessageLoop when using "Server Explorer"
  31749  King's Bounty: The Legend crashes when the spell "Poison Skull" is cast in combat
  31887  QQDownload crash at start
  32016  QuickTime Player 7.7.1 crashes on exit
  32340  View NX2 does not launch
  32364  CMDcenter: 'Run-time error '445': Object doesn't support this action' when opening a form
  32447  GetFileVersion is unimplemented
  32485  1nsane: graphical issues when 'skid marks' enabled
  32513  PPTV needs unimplemented atl100.dll.AtlGetObjectSourceInterface
  32519  Civilization V: water rendering issue with built-in d3dx9_36
  32526  Darksiders crashes on start without native d3dx9_36
  32535  Microsoft SQL Server Management Studio Express 2008 installer fails due to unimplemented function msi.dll.MsiQueryFeatureStateExW
  32546  cmd: crash when dividing by zero in 'set /a'
  32549  Visual Studio 2010 (10.0) Express Edition needs windowscodecs ComponentFactory_CreateBitmapFromMemory impl
  32561  Visual Studio 2010 (10.0) Express Edition needs windowscodecs ComponentFactory_CreateBitmapFromHICON impl
  32573  Torchlight fails to start due to corrupted local_settings.txt (CSS=unicode)
  32659  Saxobank Trader litClientStation2 needs TimeZoneInformation registry entries (HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation)
  32685  Batman: Arkham Asylum Demo doesn't launch
  32687  Win7 psdk fails to install: "SDKSetup encountered an error: Parameter is not valid."
  32691  VisualDSP setup fails when registering application files
  32693  The installer for Medieval: Total War crashes on second disc
  32698  Elven Legacy crashes during the tutorial mission, needs msvcp80.dll.??$arg@M@std@@YAMABV?$complex@M@0@@Z (purist)
  32702  The Incredible Machine Contraptions & Even More Contraptions Crash
  32704  Batman: Arkham Asylum Demo needs wmiutils path_GetClassName()
  32708  Post Mortem crashes on start with built-in msvcrt
  32716  Batman: Arkham Asylum Demo needs wmiutils path_GetInfo()
  32727  Batman: Arkham Asylum Demo needs wmiutils path_SetServer()
  32729  Morrowind crashes before loading a game
  32733  Disciples: Sacred Lands crashes on start
  32737  Batman: Arkham Asylum Demo needs wmiutils path_RemoveAllNamespaces

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

Changes since 1.5.21:

Akihiro Sagawa (1):
      po: Update Japanese translation.

Alexandre Julliard (32):
      configure: Cope with sys/un.h requiring sys/socket.h.
      configure: Allow pthread_create to be in the C library.
      winedbg: Use an if instead of a switch in case some float types have the same size.
      ntdll: Make the page_size variable global.
      krnl386.exe: Retrieve the page size from ntdll.
      vmm.vxd: Hardcode the x86 page size.
      winedevice: Retrieve the page size from ntdll.
      kernel32: Retrieve the system info from ntdll on startup.
      dbghelp: Use sysconf() instead of getpagesize().
      server: Use sysconf() instead of getpagesize().
      libwine: Use sysconf() instead of getpagesize().
      configure: Get rid of the check for getpagesize.
      configure: Get rid of the check for strings.h.
      make_makefiles: Add support for Objective-C sources.
      configure: Try readelf before ldd to determine a library soname.
      msvcrt: Fix incorrect use of the system wctomb function.
      gdi32: Avoid creating a family object just to retrieve the font data.
      gdi32: Add ref counting to the face and family objects.
      gdi32: Store the full flags in the face object, and add a flag for fonts added through AddFontResource.
      gdi32: Store the vertical flag together with the other font flags.
      gdi32: Add helper functions to compute font paths for AddFontResource.
      gdi32: Keep the main font cache key open.
      gdi32: Implement RemoveFontResource.
      gdi32: Add support for .fot files in RemoveFontResource.
      gdi32: Support for hidden flag of CreateScalableFontResource.
      gdi32: Initialize fontconfig even when fonts are cached.
      libport: Implemented the interlocked_cmpxchg128 function for ARM64.
      libport: Always include the interlocked_cmpxchg128 fallback.
      winex11: Check the bpp instead of the depth in the R8G8B8 format test.
      winex11: Fallback to the standard cursor font when XCursor is missing.
      d3dx9_36/tests: Remove useless casts.
      fusion: Remove an unneeded file.

Andrew Eikum (1):
      ieframe: Strip 'file://' from file URLs in BEFORENAVIGATE2 callbacks.

Andrew Talbot (9):
      ddraw: Avoid signed-unsigned integer comparisons.
      dinput: Avoid signed-unsigned integer comparisons.
      dbghelp: Avoid signed-unsigned integer comparisons.
      dsound: Avoid signed-unsigned integer comparisons.
      dmusic: Avoid signed-unsigned integer comparisons.
      dmstyle: Avoid signed-unsigned integer comparisons.
      gdi.exe16: Avoid signed-unsigned integer comparisons.
      fusion: Avoid signed-unsigned integer comparisons.
      explorerframe: Avoid signed-unsigned integer comparisons.

André Hentschel (22):
      winedbg: Add shifted register dataprocessing operators to Thumb2 disassembler.
      winedbg: Use a switch-case style implementation in thumb2_disasm_dataprocessing.
      ipconfig: Distinguish between IPv4 and IPv6 addresses.
      netstat: Implement -a option.
      netstat: Don't translate strings only translated in German.
      netstat: Implement -e option.
      tools: Upgrade the config.guess/config.sub scripts.
      include: Add ARM64 endianness.
      libwine: Implemented the wine_call_on_stack function for ARM64.
      libport: Implemented the interlocked_cmpxchg128 function for ARM64.
      winebuild: Add ARM64 support.
      winegcc: Add ARM64 support.
      widl: Add ARM64 support.
      wrc: Add ARM64 support.
      include: Add ARM64 context.
      server: Add ARM64 support.
      ntdll: Add ARM64 signal handling.
      ntdll: Add ARM64 cpu info.
      kernel32/tests: Add ARM64 support.
      dbghelp: Add ARM64 support.
      winedbg: Add ARM64 support.
      winetest: Add ARM64 support.

Aric Stewart (6):
      usp10: Correct issues if a feature tag is duplicated between GSUB and GPOS.
      usp10: Add GSUB ccmp feature to Hebrew.
      usp10: Implement GPOS MarkToLigature Attachment Positioning Subtable.
      ups10: Mark to Base, Mark and Ligature are not cumulative offsets.
      usp10: Implement GPOS Cursive Attachment Positioning Subtable.
      usp10: MarkToMark calculations may need to happen even if the offset is 0.

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

Austin English (3):
      include: Add D3D_DRIVER_TYPE to d3dcommon.idl.
      wine.inf: Add HKLM, System\CurrentControlSet\Control\TimeZoneInformation\{StandardName, TimeZoneKeyName} registry keys.
      shell32: Add a stub for SHGetSetFolderCustomSettings.

Bruno Jesus (1):
      ws2_32/tests: Add SO_ERROR [set|get]sockopt tests.

Charles Davis (2):
      kernel32: Make CopyFile() call CopyFileEx() instead of the other way around.
      kernel32: Make CopyFile(Ex)() succeed even if the source file is delete-locked.

Christian Costa (14):
      d3drm: Avoid LP stuff and rename some variables.
      d3dx9_36: Add support for RT_BITMAP resource type since it is in DIB format D3DXIFF_DIB.
      d3dx9_36: Implement partially ID3DXFileImpl_CreateEnumObject with stubbed ID3DXFileEnumObject interface.
      d3drm: Avoid LP stuff and rename some variables.
      d3dx9_36: Finish implementation of ID3DXFileImpl_CreateEnumObject and add stubbed interface for ID3DXFileData.
      dmusic: COM cleanup of IDirectMusicDownload.
      d3dx9_36: Implement ID3DXFileEnumObjectImpl_GetChildren and ID3DXFileEnumObjectImpl_GetChild.
      d3dx9_36: Implement ID3DXFileDataImpl_GetType.
      d3dx9_36: Implement ID3DXFileDataImpl_GetName.
      d3dx9_36: Implement ID3DXFileDataImpl_GetId.
      winealsa.drv: Fix F0 and F7 byte insertion + memory leak and remove LP stuff in modLongData.
      d3dx9_36: Initialize properly object in CreateEnumObject.
      d3dx9_36: Implement ID3DXFileDataImpl_Lock and ID3DXFileDataImpl_Unlock + tests.
      d3dx9_36: Make variables static in xfile tests.

Damjan Jovanovic (7):
      shell32: Fix non-BOOL returns in BOOL functions.
      qcap: Use libv4l1.h when available, instead of linux/videodev.h which is deprecated/obsolete.
      strmbase: Store and use the chosen IMemAllocator instead of getting it from the input pin.
      qcap: Use the BaseOutputPin's IMemAllocator.
      winegstreamer: return the IMemAllocator so the BaseOutputPin can store it and use it, avoiding a NULL pointer crash.
      Return the IMemAllocator so the BaseOutputPin can store it and use it, avoiding a NULL pointer crash.
      quartz: return the IMemAllocator so the BaseOutputPin can store it and use it, avoiding a NULL pointer crash.

Daniel Jelinski (6):
      comctl32/listview: Fix calculating item height.
      comctl32/listview: Redraw items after insert/delete.
      comctl32/listview: Update item height when changing font.
      comctl32/listview: Fix subitem drawing.
      comctl32/listview: Support header images.
      comctl32/tests: Add tests for listview header image list.

Detlef Riekenberg (2):
      include: Add definitions for SHGetStockIconInfo.
      ntdll/tests: Fix SYSTEM_CACHE_INFORMATION failures.

Dmitry Timoshkov (13):
      windowscodecs: Add a test for loading a .bmp file with BITMAPINFOHEADER.
      windowscodecs: BMP decoder should always return valid image resolution.
      windowscodecs: Add a test for CreateBitmapFromHICON.
      wineps.drv: Default page dimensions are part of DEVMODE, remove an old hack.
      wineps.drv: Don't cast away 'const' from DEVMODE provided as input.
      windowscodecs: Implement CreateBitmapFromHICON.
      qcap: Fix compilation on older systems.
      windowscodecs: Fix reading the mask bits in CreateBitmapFromHICON.
      gdiplus: Fix reading the mask bits in GdipCreateBitmapFromHICON.
      gdiplus: Avoid not necessary memory allocation for palette entries.
      gdiplus: Avoid not necessary memory allocation for BITMAPINFO.
      gdiplus: Avoid not necessary memory allocation in GdipCreateBitmapFromHICON.
      windowscodecs: Add a test for CreateBitmapFromHBITMAP.

Eric Pouech (1):
      Various background processes must be launched detached from current console (if any).

Francois Gouget (5):
      msvcrt/tests: Add a trailing '\n' to a win_skip() call.
      Assorted spelling fixes.
      netstat: Fix compilation on systems that don't support nameless unions.
      urlmon: Fix the message warning about installing ActiveX components.
      d3dx9_36: Make error_dxfile_to_d3dxfile() and test_templates() static.

Frédéric Delanoy (1):
      po: Update French translation.

Hans Leidekker (18):
      msi: Extend registry helpers to support opening the features key for a specific user.
      msi: Implement MsiQueryFeatureStateExA/W.
      wbemprox: Both signature parameters are optional in IWbemClassObject::GetMethod.
      wbemprox: Implement Win32_Process::GetOwner.
      ws2_32: Set SO_REUSEPORT in addition to SO_REUSEADDR on MacOS.
      wmiutils: Implement IWbemPath::GetClassName.
      wmiutils: Implement IWbemPath::GetServer.
      wmiutils: Implement IWbemPath::GetInfo.
      advapi32: Improve the stub for CreateRestrictedToken.
      wmiutils: Implement IWbemPath::SetServer.
      wmiutils: Implement IWbemPath::SetClassName.
      wmiutils: Implement IWbemPath::GetNamespaceAt.
      wmiutils: Implement IWbemPath::RemoveAllNamespaces.
      wmiutils: Implement IWbemPath::RemoveNamespaceAt.
      wmiutils: Implement IWbemPath::SetNamespaceAt.
      wbemprox: Reject empty queries.
      fusion: No longer prefer native.
      wmiutils: Add locking to the path object.

Henri Verbeet (50):
      ddraw: Avoid LPD3DVIEWPORT2.
      ddraw: Avoid LPD3DVIEWPORT7.
      wined3d: Remove a redundant condition in the indexbuffer() state handler.
      wined3d: Get rid of the user_stream field from wined3d_state.
      ddraw: Get rid of some redundant code in IDirect3DImpl_GetCaps().
      ddraw: Avoid LPD3DTRANSFORMDATA.
      ddraw: Avoid LPD3DLIGHTINGELEMENT.
      ddraw: Cleanup ddraw7_QueryInterface() a bit.
      d3d8/tests: Merge d3d8_main.c into device.c.
      d3d8/tests: Merge volume.c into device.c.
      ddraw: Avoid LPD3DMATERIAL.
      ddraw: Avoid LPD3DMATERIAL7.
      d3d8/tests: Merge buffer.c into device.c.
      d3d8/tests: Merge texture.c into device.c.
      d3d8/tests: Merge surface.c into device.c.
      ddraw: Avoid LPD3DLIGHT.
      ddraw: Avoid LPD3DLIGHT7.
      d3d9/tests: Merge volume.c into device.c.
      d3d9/tests: Merge buffer.c into device.c.
      d3d9/tests: Merge query.c into device.c.
      ddraw: Avoid LPD3DLIGHT2.
      ddraw: Avoid LPD3DLIGHTDATA.
      d3d9/tests: Merge shader.c into device.c.
      d3d9/tests: Merge texture.c into device.c.
      d3d9/tests: Merge surface.c into device.c.
      ddraw: Avoid LPD3DINSTRUCTION.
      ddraw: Avoid LPD3DPICKRECORD.
      ddraw: Only check dwFlags if we actually have a D3DLIGHT2 structure in d3d_light_SetLight().
      ddraw: Get rid of dump_light().
      ddraw: Explicitly create a wined3d object without 3D capabilities when creating a normal wined3d object fails.
      ddraw: Avoid LPD3DSTATE.
      ddraw: Avoid LPD3DPROCESSVERTICES.
      ddraw: Add a small tests for SetCooperativeLevel() calls with different windows.
      ddraw: Only modify the ddraw destination window at the end of ddraw7_SetCooperativeLevel().
      ddraw: Get rid of the local "window" variable in ddraw7_SetCooperativeLevel().
      ddraw: Avoid LPD3DTRIANGLE.
      ddraw: Avoid LPD3DBRANCH.
      wined3d: Initialize the various backends in wined3d_adapter_init_nogl() as well.
      ddraw: Update DefaultSurfaceType if we had to fallback to a wined3d object without 3D support.
      wined3d: Get rid of the surface_type parameter to wined3d_swapchain_create().
      ddraw: Avoid LPD3DSTATUS.
      ddraw: Avoid LPD3DCLIPSTATUS.
      wined3d: Get rid of the surface_type parameter to wined3d_surface_create().
      wined3d: Get rid of the surface_type parameter to wined3d_check_device_format().
      wined3d: Get rid of the "opengl" field in struct wined3d_adapter.
      ddraw: Avoid LPD3DSTATS.
      ddraw: Avoid LPD3DEXECUTEDATA.
      wined3d: Introduce a separate function for intializing the adapter's framebuffer configs.
      wined3d: Replace InitAdapters() with a function to initialize a single adapter.
      wined3d: Get rid of vs_selected_mode / ps_selected_mode from struct wined3d_device.

Huw Davies (10):
      usp10: Simplify the offset calculation by always using ETO_PDY.
      usp10: Simplify the reordering of glyphs.
      usp10: Handle an offset of the first glyph.
      usp10: Fix the offset calculations for rtl display.
      usp10: Don't invert the y-offsets in RTL mode.
      usp10: Propagate the script analysis to the GPOS lookup functions.
      usp10: Fix MarkToBase offset for RTL text.
      usp10: Don't compute a pair adjustment for the last glyph.
      usp10: Fix pair adjustment for RTL text.
      usp10: Fix MarkToMark offset for RTL text.

Jacek Caban (26):
      mshtml: Added IHTMLStyle::get_pixelLeft implementation.
      mshtml: Added IHTMLStyle::put_pixelLeft implementation.
      mshtml: Fixed leak in get_nsstyle_pos.
      wininet: Fixed handling NULL buffer in INTERNET_OPTION_PROXY queries.
      vbscript: Added support for a few more constants.
      mshtml: Wine Gecko 1.9 release.
      atl80: Skip NULL map entries in AtlComModuleRegisterServer.
      atl100: Added AtlWaitWithMessageLoop implementation.
      mshtml: Added support for non-integer values in get_nsstyle_pixel_val.
      atl100: Added AtlComModuleUnregisterServer implementation.
      vbscript: Added support for more constants.
      atl100: Added AtlGetObjectSourceInterface implementation.
      atl100: Added AtlGetObjectSourceInterface tests.
      atl100: Don't leak TLIBATTR in AtlComModuleUnregisterServer.
      mshtml: Don't check if script element was already parsed in doc_insert_script.
      mshtml: Added IHTMLScriptElement::put_text implementation.
      mshtml: Added IHTMLScriptElement::put_text tests.
      mshtml: Remove duplicated property entries in preprocess_dispex_data.
      atl100: Added stubs for AtlAxDialogBox[AW].
      mshtml: Added support for DOCUMENT_TYPE_NODE in nsnode_to_nsstring_rec.
      mshtml: Treat doctype nodes as comment nodes.
      mshtml: Don't use PRInt32 in nsio.c.
      mshtml: Don't use PRInt32 in htmlelem*.
      mshtml: Don't use PRInt32 in property getters implementations.
      mshtml: Get rid of remaining PRInt32 usage.
      mshtml: Get rid of PRInt16 type.

Jason Edmeades (2):
      cmd: Avoid division by zero in set /a with %.
      cmd: Add beginnings of support for delayed expansion.

Julian Rüger (1):
      po: Update German translation.

Ken Thomases (16):
      winemac: Implement CreateDesktopWindow().
      libwine: Call the Mac Multi-Processing Services lib from the main thread first.
      loader: On Mac, embed Info.plist in (__TEXT, __info_plist) section.
      winemac: Add a custom NSApplication subclass, WineApplication.
      winemac: Convert main thread to Cocoa main loop on process attach.
      winemac: Implement basic window functionality.
      libwine: Use rpath-based install name and library references for libwine on Mac.
      winemac: Implement support for WS_DISABLED windows.
      winemac: Implement support for no-activate windows.
      winemac: Implement support for WS_EX_TOPMOST windows.
      winemac: Implement support for owned windows.
      winemac: Translate presence in Windows task bar to participation in Exposé and window cycling.
      winemac: Implement the Mac "Window" menu.
      winemac: Implement window surface rendering.
      winemac: Implement SetWindowRgn.
      winemac: Implement layered windows: SetLayeredWindowAttributes() and UpdateLayeredWindow().

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

Ludger Sprenker (4):
      windowscodecs: Introduce 24bppRGB PixelFormat.
      windowscodecs: Support conversions of the 24bpp PixelFormats.
      windowscodecs: Test conversions of the 24bpp PixelFormats.
      windowscodecs: Support 24bppRGB in tiff encoder.

Marcus Meissner (15):
      oledb32: Avoid leaking propsets on error paths (Coverity).
      advapi32: Close hTemp on error (Coverity).
      winedbg: Free snapshot handle in error path (Coverity).
      kernel32: Improve condition variable test case.
      oledb32: Check start for NULL before strstrW (Coverity).
      comctl32: Free the selection ranges (Coverity).
      advpack: Avoid using sessions uninitialized (Coverity).
      dmsynth: Remove now useless NULL ptr check (Coverity).
      advapi32: Close scm_handle on error exit (Coverity).
      dplayx: Check return of CoCreateInstance (Coverity).
      dmloader: Check return of CoCreateInstance (Coverity).
      oleaut32: Mark various symbols as hidden.
      comctl32: Avoid leak of hShell32 (Coverity).
      crypt32: Free the encoded msg (Coverity).
      comctl32: Initialize SYSTEMTIME structs (Coverity).

Michael Stefaniuc (2):
      atl100: Fix a mem leak on an error path (Smatch).
      winmm: Add missing LeaveCriticalSection on error paths (Smatch).

Nikolay Sivov (21):
      xmllite: Implement PI parsing.
      xmllite: Support streams starting with comments, simplify tests.
      xmllite: Support name reporting for comments and PIs.
      xmllite: Report node value for comment nodes.
      xmllite: Report value for PI nodes.
      xmllite: Explicitly set value and names to empty for xml decl node.
      comctl32/listview: Fix focus index update when item is deleted.
      comctl32/listview: Use LVM_SETITEMSTATE directly in tests.
      comctl32/listview: Always send LVN_ITEMCHANGING notification even if nothing changed.
      comctl32/listview: Add a special case for deselect all attempt when nothing is selected.
      comctl32/listview: Update focus index when new item data is already there.
      comctl32/listview: Remove some dead code.
      xmllite: Add a stub function for DTD parsing.
      xmllite: Support whitespace nodes reporting.
      xmllite: Initial implementation of DTD external id parsing.
      xmllite: Added IXmlResolver definition.
      qmgr: COM cleanup of IBackgroundCopyJob2 interface.
      qmgr: COM cleanup for IBackgroundCopyFile interface.
      qmgr: Remove separate release helpers.
      xmllite: Initial support for start tag parsing.
      po: Update Russian translation.

Piotr Caban (38):
      msvcrt: Don't duplicate wfsopen functionality in wfrepopen.
      msvcrt: Added support for unicode open mode in msvcrt_get_flags function.
      msvcrt: Added support for unicode text mode in open functions family.
      msvcrt: Call _wsopen_s function in _sopen_s.
      msvcrt: Added fopen_s test with ccs option.
      msvcrt: Added support for unicode mode in write function.
      msvcrt: Added write tests on unicode files.
      msvcrt: Fixed handling of '\r' when it's the last character in the buffer in read.
      msvcrt: Call ftell function in fgetpos.
      msvcrt: Simplify fseek implementation.
      msvcrt: Improved ftell implementation.
      msvcrt: Added unicode modes support _setmode function.
      msvcrt: Added _setmode tests.
      msvcrt: Added more read tests.
      msvcrt: Added UTF16 support to read function.
      msvcrt: Added UTF8 support to read function.
      msvcrt: Added read tests on unicode files.
      msvcrt: Make fputwc encoding aware.
      msvcrt: Added fputwc tests.
      msvcrt: Use fputwc to output characters to file in fprintf functions.
      msvcrt: Don't add '\r' character in fputws function.
      msvcrt: Fixed ftell behaviour when file is opened for writing in text mode.
      msvcrt: Added fwprintf tests.
      msvcrt: Be less strict while parsing file open mode in fopen function.
      msvcp90: Added complex<{float, double, long double}> constructors implementation.
      msvcp90: Added operators working on complex numbers.
      msvcp90: Added basic complex numbers tests.
      msvcp90: Added std::arg(complex) implementation.
      tools: Update make_specfiles script.
      msvcp70: Remove forwards to msvcp80.
      cmd: Even if FindExecutable fails wait for process to finish in non-interactive mode.
      msvcrt: Added support for commit flag in fopen.
      msvcrt: Return child exit code in _pclose function.
      msvcrt: Added basic _popen tests.
      msvcp: Sync implementations.
      widl: Make it possible to set typelib resource id with id attribute.
      vbscript: Added VBScript.RegExp version 5.5 typelib.
      vbscript: Added VBScript.RegExp version 1.0 typelib.

Rico Schüller (15):
      d3dx9: Handle invalid byte code in D3DXFindShaderComment().
      d3dx9: Always set the table = NULL in D3DXGetShaderConstantTableEx().
      d3dx9: Handle invalid byte code in D3DXGetShaderConstantTableEx().
      d3dx9: Use sizeof variable, not type.
      d3dx9: Constify some variables.
      d3dx9: Remove unused variable.
      d3dx9: Introduce a function for filling a texture.
      d3dx9: Shift only as much as needed.
      d3dx9: Use all 32 bits as mask.
      d3dx9: Add support for D3DFMT_A16B16G16R16F.
      d3dcompiler43/tests: Don't use IUnknown_Release().
      d3dx9: Use lowercase hexadecimal values.
      d3dx9: Add support for D3DFMT_A32B32G32R32F.
      d3dx9: Add support for D3DFMT_A16B16G16R16.
      d3dx9/tests: Use D3DXFloat16To32Array() instead of a custom function.

Stefan Dösinger (9):
      ddraw: Don't discard buffers that haven't been used in draws.
      d3d9: Return D3D_OK from the palette setters.
      d3d8: Return D3D_OK from the palette setters.
      wined3d: Shadow buffers in sysmem when software vertexprocessing is used.
      d3d9/tests: Add a software vertexprocessing buffer discard test.
      d3d8/tests: Add a software vertexprocessing buffer discard test.
      d3d9/tests: Create a plain DS surface in test_reset_resources.
      d3d8/tests: Create a plain DS surface in test_reset_resources.
      ddraw/tests: Add basic tests for DrawIndexedPrimitiveStrided.

Vincent Povirk (2):
      windowscodecs: Don't copy extra data from the end of a row.
      winex11.drv: Don't join INCR data until the transfer finishes.

--
Alexandre Julliard
julliard@winehq.org
