diff --git a/ANNOUNCE b/ANNOUNCE
index cfc83fb..122ebeb 100644
--- a/ANNOUNCE
+++ b/ANNOUNCE
@@ -1,26 +1,17 @@
-The Wine team is proud to announce that the stable release Wine 1.4
-is now available.
+The Wine development release 1.5.0 is now available.
 
-This release represents 20 months of development effort and over
-16,000 individual changes. The main highlights are the new DIB
-graphics engine, a redesigned audio stack, and full support for
-bidirectional text and character shaping.
-
-It also contains a lot of improvements across the board, as well as
-support for many new applications, notably Microsoft Office 2010. See
-the release notes below for a summary of the major changes.
-
-This release is dedicated to the memory of Gé (Greg) van Geldorp, who
-passed away in May 2011. Greg single-handedly designed, built, and
-maintained the Wine Testbot, which has become a cornerstone of our
-development process. The high quality of this release owes a lot to
-his work. He is greatly missed by us all.
-
+What's new in this release (see below for details):
+  - New version of the Gecko engine.
+  - Partial support for using the Trash on Mac OS X.
+  - Support for path gradients in GdiPlus.
+  - Various MSXML improvements.
+  - Fixes to 64-bit exception handling.
+  - Various bug fixes.
 
 The source is available from the following locations:
 
-  http://ibiblio.org/pub/linux/system/emulators/wine/wine-1.4.tar.bz2
-  http://prdownloads.sourceforge.net/wine/wine-1.4.tar.bz2
+  http://ibiblio.org/pub/linux/system/emulators/wine/wine-1.5.0.tar.bz2
+  http://prdownloads.sourceforge.net/wine/wine-1.5.0.tar.bz2
 
 Binary packages for various distributions will be available from:
 
@@ -36,457 +27,504 @@
 
 ----------------------------------------------------------------
 
-What's new in Wine 1.4
-======================
+Bugs fixed in 1.5.0:
 
-*** Graphics
+   1347  Screen is wiped/blanked on usage of DirectDraw (black screen/desktop)
+   2784  Mouse movement slows down game
+   6604  Ship icons for wine tools that can be used in .desktop files
+   6951  Library MSVCP60.dll not found when running Sony ericsson Theme Creator 3.06
+   8433  After Burner 3D 1.0 Game  - crashes in loding Screen
+   8531  Run-time error 91 in Senstools
+  10650  PhotoFiltre take much time to fill empty a draw
+  12694  Air Rival Crashes after login
+  13294  Halo 2 fails to start (won't recognize msvcr80 / msvcp80)
+  13612  Graphics glitches in the Sam and Max games (just with nVidia?)
+  13615  Imperium Galactica 2, Solarian & Shinari Campaign, Spying & Trading Crashes
+  14219  Yarxi starts with errors
+  15184  Septerra Core crashes due to failed assert
+  15280  After minimizing Guild Wars and restoring, the mouse is not respondig correctly
+  15963  Warcraft III: The Frozen Throne crashes when joining a DotA game
+  16370  iTunes hangs, spams console with unsupported ioctl errors
+  19074  Error message "Module not found" should be more obvious
+  19362  Far Cry - Enabling shadow maps produces visual distortions
+  19685  Women's Murder Club: Death in Scarlet misses (almost) all texts
+  19853  Texture corruption in guild war with fglrx 9.8
+  19905  windowscodec: compiler warnings on OS X
+  19946  make wine report correctly the graphic chip model when using non nvidia and non fglrx drivers
+  20033  ApexDC++ 1.2.1 exception
+  20118  Oblivion slows down with sound
+  21243  Namco All-Stars Pac-Man demo crashes on startup
+  21308  Labels not transparent in Microsoft Security Essentials for XP
+  21508  GURPS Character Assistant Data Update - gca4dataupdate crashes
+  22031  Age Of Empires III: Sound is muted once the game is started
+  22214  Portable Apps Thunderbird loses ability to display text
+  22451  Polybius crashes while loading a new game.
+  22920  Missing typedef keywords in ws2ipdef.h resulting in multiply-defined symbols
+  24255  iTunes 10.x does not install correctly
+  24319  Portable Thunderbird 3.1.3 : Thunderbird can't retrieve new emails from server
+  24377  Blade Runner does not install.
+  24551  Cannot install Windows Server 2003 Administration Tools Pack
+  24697  Explorer++: missing gradient on the display window
+  24776  Starcraft 2: Installer text does not show
+  25371  iTunes 10.1 hangs on installation, wineserver must be killed
+  25465  SolarWinds Engineers Toolkit (SWET) v10 installer fails to register SNMPv50.ocx (needs Microsoft SNMP management API library "mgmtapi.dll")
+  25604  Faerie Solitaire [Steam]: mouse clicks don't register in the menu
+  26278  Sims 3 edge smoothing option does nothing
+  26417  Starcraft 2 - DirectX Mouse Capture broken (fullscreen and windowed)
+  26730  iTunes: crashes when opening about dialog
+  26771  Skype 5.3 install freezes
+  26882  Portal 2: black texture when opening portals with antialiasing enabled
+  27000  Counter Strike 1.6 - d3d flickering
+  27349  SafeDisc v2.x API entry analyzer flags Wine's user32.dll as "bad" (too many exports with PIC loads in prolog code) (SimCity 4, IL-2 FB, NFSU)
+  27560  Runaway 3 "A Twist of Fate" fails to recognize media on Wine 64Bits (WoW64-aware SecuROM 7.x tries to disable registry redirection/missing advapi32.dll RegDisableReflectionKey)
+  27596  Font selection dialog appearance is slightly broken
+  27631  Trucks and Trailers demo launcher shows raw html code
+  27757  Igneous crashes when opened.
+  27970  cmd's attrib command doesn't accept multiple attributes
+  28401  .NET Framework 3.0 installation interrupted prematurely
+  28724  PortableApps Starter Fail
+  28852  Star Trek Online, sound distorted/stutters
+  28962  Mount & Blade: WFAS texture quality slider isn't moving
+  29507  Rainbow Six Rogue Spear - Mouse pointer movement very slow during mission briefing
+  29717  IE4 setup wants inetcpl.cpl.DllInstall
+  29721  makecert from Windows Platform SDK 7.1 crashes due to unimplemented function mssign32.dll.PvkGetCryptProv
+  29742  Microsoft .NET Framework 4.5 Developer Preview installer crashes due to missing "wevtapi.dll"
+  29765  Synful Orchestra 2.5.x tpkd.sys driver crashes due to unimplemented function ntoskrnl.exe.IoStartNextPacket
+  29891  Symantec VIP Access can not be activated
+  29894  LibreOffice: sdraw.exe runs out of GDI object handles and crashes on a particular VSD file
+  29956  Unable to create an empty Jet database file.
+  30000  iw4mp (Call of Duty MW2 mod) loader crashes because some kernel32.dll API entries are not hotpatchable (DECLSPEC_HOTPATCH missing)
+  30001  iw4mp (Call of Duty MW2 mod) loader crashes due to iphlpapi.dll GetAdaptersAddresses not hotpatchable (DECLSPEC_HOTPATCH missing)
+  30005  Acrobat 8: installer action text for INSTALLMESSAGE_ACTIONDATA is not deformated
+  30011  Paragon Alignment Tool needs kernel32.dll.DeleteVolumeMountPointW
+  30012  MS Project 2010 crashes at shutdown
+  30022  Google Earth 5.1 installer crashes
+  30074  Microsoft .NET Framework 4.5 Developer Preview installer needs stub wusa.exe
+  30075  Microsoft .NET Framework 4.x CLR needs kernel32.dll WerRegisterRuntimeExceptionModule (returning S_OK) to run .NET apps
+  30108  Ratatouille demo crashes
+  30115  Perfect World: Skills and items icons messed up
+  30117  Rig-n-roll2: SetCooperativelevel handles mutually exclusive flags incorrectly
+  30138  Amazon MP3 Downloader fails to install (single instance test through OpenMutex fails due to incorrect lasterror value)
+  30146  Xmlhttp sample app doesn't work anymore
+  30159  Font replacement doesn't work
+  30171  World of Warcraft 64-bit client deadlocks at start
+  30182  SuperPower 2 demo installation aborted
 
-- There is a new graphics engine for rendering into Device Independent
-  Bitmaps (DIB). DIB rendering no longer requires access faults or
-  round-trips to the X server, which yields large performance gains in
-  DIB-intensive applications.
+----------------------------------------------------------------
 
-- The DIB engine can also be used for fall-back implementations of
-  some graphics primitives, like alpha blending, when the display
-  driver doesn't support them directly.
+Changes since 1.4:
 
-- All possible color formats are supported by the DIB engine, so DIB
-  operations are no longer limited by the color resolution of the
-  display. Rendering of the various palette formats is also improved.
+Akihiro Sagawa (7):
+      kernel32/tests: Add more tests for WriteConsole.
+      msvcrt/tests: Add tests for fflush on input stream.
+      msvcrt: Add support for fflush to clear an input buffer.
+      msvcrt: Add a helper function to flush all buffers.
+      msvcrt: Add support for _flushall to clear all input buffer.
+      msvcrt: Add semi stub _mbcjmstojis implementation.
+      msvcrt: Implement _mbcjmstojis.
 
-- Custom styles of dashed lines are supported.
+Alessandro Pignotti (1):
+      oleaut32: Avoid converting variants if it is not needed.
 
-- Cosmetic pens using hashes or patterns are supported.
+Alexander Morozov (1):
+      ntoskrnl.exe: Fix a typo.
 
-- Gradients use dithering on low color resolution devices for a nicer
-  appearance.
+Alexandre Julliard (23):
+      wine.inf: Avoid creating empty registry values.
+      winex11: Ignore FocusOut event on destroyed windows.
+      gdi32: Fix rounding error for odd ellipse sizes in CreateRoundRectRgn.
+      msvcrt: Export __C_specific handler in other msvcrt versions too.
+      server: Create some kernel notification events.
+      kernel32: Implement the memory resource notification functions.
+      winex11: Never try to clip the cursor if we don't have XInput2.
+      ntdll: Use the context argument as working variable instead of making a copy in RtlUnwindEx.
+      ntdll: Restore the original context for the last frame instead of the result of the unwind handler.
+      ntdll: Set the TARGET_UNWIND flag when calling the unwind handler for the target frame.
+      ntdll: Trace the exception extra information also in RtlUnwindEx.
+      ntdll: Add support for the special STATUS_UNWIND_CONSOLIDATE exception code.
+      ntdll: Add support for rep;ret instruction in function epilogs.
+      ntdll: Add support for jump instructions in function epilogs.
+      winevdm: Try DOSBox first for running DOS applications.
+      comdlg32: Implement WM_CHOOSEFONT_GETLOGFONT in the font dialog.
+      ntdll: Properly follow jumps when checking a function epilog.
+      msvcrt: Create an i386-specific file for exception handling.
+      msvcrt: Move more i386-specific exception code to except_i386.c.
+      msvcrt: Add a new file for the x86_64 exception handling.
+      msvcrt: Add entry points for the C++ exception functions on x86_64.
+      msxml3: Avoid building code that isn't used without libxml.
+      dbghelp: Add support for jump instructions in function epilogs on x86_64.
 
-- The XRender extension is used for gradients when supported.
+Alistair Leslie-Hughes (6):
+      advapi32: Correct tests under WOW64.
+      mscoree: Add CoEEShutDownCOM stub.
+      mssign32: Add stubs PvkFreeCryptProv, PvkGetCryptProv, PvkPrivateKeyAcquireContextFromMemory.
+      advapi32: Assign a default value (clang).
+      ole32/tests: Assign a default value (clang).
+      mscoree: Better support RUNTIME_INFO_UPGRADE_VERSION in GetRequestedRuntimeInfo.
 
-- PostScript output quality is improved, particularly for bitmaps and
-  paths.
+Andrew Eikum (2):
+      winmm: Remove unused define.
+      mciqtz: Actually assign result to the output structure.
 
-- Rotated text works better for all output device types.
+André Hentschel (18):
+      kernel32: Make GetModuleHandleA hotpatchable.
+      kernel32: Make Sleep hotpatchable.
+      iphlpapi: Make GetAdaptersAddresses hotpatchable.
+      include: Add more error codes.
+      dbghelp: Add arm_fetch_minidump_thread implementation.
+      dbghelp: Silence arm_fetch_minidump_module.
+      winedbg: Use copy of be_i386_fetch_float for be_arm_fetch_float (except of long double).
+      winemaker: Abort on unhandled file formats.
+      winemaker: Fix conversion of C++ filenames into object names.
+      winedbg: Respect Thumb mode when adjusting PC on ARM.
+      kernel32: Forward RtlPcToFileHeader to ntdll also on ARM.
+      kernel32: Forward RtlRaiseException to ntdll on ARM.
+      ntdll: Add support for dynamically generated stub entry points on ARM.
+      ddraw: Fix a typo.
+      inetcpl: Add stub for DllInstall.
+      d3drm/tests: Add tests for IDirect3DRMFrameArray_GetElement.
+      d3drm/tests: Add GetParent NULL pointer test.
+      windowscodecs: Add stub for DllCanUnloadNow.
 
-- GdiPlus supports more image formats, including formats that are not
-  supported through GDI.
+Aric Stewart (3):
+      strmbase: Move the MediaSeekingPassThru functions from quartz into strmbase.
+      strmbase: Rename MediaSeekingPassThru to RendererPosPassThru to match standard strmbase naming.
+      wineqtdecoder: Ignore requests for IID_IAMFilterMiscFlags, we do not need to implement it.
 
-- More image codecs are implemented, including support for TGA and CMYK
-  JPEG decoding, as well as BMP, TIFF, PNG, and ICNS encoding.
+Aurimas Fišeras (1):
+      po: Update Lithuanian translation.
 
+Austin English (6):
+      ntoskrnl.exe: Add a stub for IoStartNextPacket.
+      advapi32: Add a stub for RegDisableReflectionKey.
+      kernel32: Add a stub for WerRegisterRuntimeExceptionModule.
+      wusa: Add stub program.
+      kernel32: Add stubs for DeleteVolumeMountPointA/W.
+      wevtapi: Add stub dll.
 
-*** Audio
+Carlo Bramini (1):
+      shlwapi: Implemented StrToInt64ExA/W.
 
-- The audio stack is completely redesigned, based on the Vista
-  model. WinMM and DirectSound are implemented on top of the new
-  MMDevAPI library.
+Cheer Xiao (1):
+      po: Update simplified Chinese translation.
 
-- The Alsa, OSS, and CoreAudio drivers have been rewritten to use the
-  new model. They now serve as back-ends to the MMDevAPI dll, which no
-  longer needs to rely on the OpenAL library.
+Christian Costa (33):
+      d3dxof: Make SaveTemplates stub return DXFILE_OK.
+      d3dxof: Make sure the returned object pointer is null when there are no more children.
+      d3dxof/tests: Do not print the string when GetName returned 0 byte.
+      d3dxof/tests: Improve some messages.
+      d3dxof: Check the right offset before dereferencing next byte.
+      configure: Check if version of msgfmt (from gettext) is recent enough.
+      d3dxof: Do not allow separator to terminate the string. Only the double quote can do that.
+      d3drm: Turn some FIXME into TRACE.
+      d3drm: Fix leakage of This->pCoords2d when releasing object.
+      d3drm: Fix leakage of pData2 on error.
+      amstream: Initialize MultiMediastream before creating the source filter.
+      amstream: Remove duplicate GraphBuilder member.
+      amstream: Add source filter to the filtergraph before loading the file.
+      amstream: Free all used resources when releasing MultiMediaStream object.
+      devenum: Reset moniker pointer before calling IFilterMapper2_RegisterFilter.
+      d3dx9_36: Make D3DXVec3Unproject support omission of world matrix + test.
+      attrib: Make command accept several arguments.
+      d3drm: Fix some tests conditions.
+      d3drm: Get data from the right objects (sub-objects).
+      d3drm: Complete Load method by adding normals indices and terminating null DWORD to faces data + tests.
+      strmbase: Allow constructor function to be NULL but display an error saying we don't implement the CLSID.
+      amstream: Rewrite OpenFile flow in a more readable manner by using SUCCEEDED macro.
+      amstream: Don't create the source filter. AddSourceFilter does it already.
+      amstream: Don't load the stream file. AddSourceFilter does it already.
+      amstream: Use 'Source' filter name for file source filter as in native.
+      amstream: Retrieve some interfaces needed to control the stream.
+      amstream: Create MediaStream filter when initialising AMMutiMediaStream.
+      amstream: Get and store event for streams render completion.
+      d3drm: Remove "partial stub" mention of forwarded methods.
+      d3drm: Texture callback cannot be passed directly. Texture object argument is different so disable it for now.
+      d3drm: Add refcount info to AddRef and Release traces.
+      d3drm: If there is no texture coordinates in loaded mesh, generate default texture coordinates for each vertex.
+      d3drm: Implement SetTextureCoordinates.
 
-- The Jack, NAS, AudioIO, and ESD audio subsystems are no longer
-  supported. Version 3 of the OSS subsystem is no longer supported
-  either, version 4 is required.
+Dmitry Timoshkov (9):
+      kernel32: Fix file test compilation with PSDK headers.
+      kernel32: Add some CreateFile disposition and access tests.
+      gdiplus: Create GDI brush only when needed.
+      kernel32: Make CreateFile called with creation == 0 work when opening a vxd in win9x mode.
+      gdiplus: Create GDI bitmap only when needed.
+      server: OpenMutex should perform a real access check instead of validating access flags.
+      gdiplus: Implement GdipCreateMetafileFromEmf.
+      advapi32: Add some mutex security tests.
+      advapi32: Fix failures in the security tests compiled with PSDK headers.
 
-- The Audio tab in the Wine Configuration tool has been redesigned for
-  the new audio subsystem. The appropriate driver is automatically
-  selected and no longer needs to be configured manually.
+Eduardo García (2):
+      po: Update Spanish translation.
+      po: Update Spanish translation.
 
+Erich Hoover (1):
+      ntdll: Fix mapping sections for applications that map over the section headers.
 
-*** Input devices
+Francois Gouget (1):
+      mssign32: Add a trailing '\n' to a few FIXME() messages.
 
-- The XInput 2 extension is used to provide better mouse control in
-  games and other full-screen applications.
+Frédéric Delanoy (2):
+      winecfg: Avoid unneeded ellipsis in combo box item.
+      po: Update French translation.
 
-- The mouse is automatically clipped to prevent it from leaving a
-  full-screen window when running in desktop mode. Switching to a
-  different application with Alt-Tab releases the mouse. Clipping can
-  be disabled through the Wine Configuration tool.
+Hans Leidekker (11):
+      advapi32: Implement CredMarshalCredential and CredUnmarshalCredential.
+      winhttp: Fix up headers with wrong termination.
+      msiexec: Support the "b!" UI option.
+      msi: Deformat the description field of INSTALLMESSAGE_ACTIONDATA messages.
+      msi: Implement MsiEnumProductsEx.
+      msi: Reimplement MsiEnumProducts on top of MsiEnumProductsEx.
+      msi: Perform a case insensitive match on filenames from cabinets.
+      msi: Fix deleting services on installation.
+      include: Add the IAssemblyName interface.
+      sxs: Add a stub implementation of IAssemblyName.
+      msi: Restrict the match on files from cabinets to files that have not been installed.
 
-- Animated mouse cursors are fully supported.
+Hasan Kiran (1):
+      po: Update Turkish translation.
 
-- Joystick action mapping is supported, including a configuration dialog.
+Henri Verbeet (35):
+      wined3d: Remove a transformed vertex loading hack in load_vertex_data().
+      wined3d: Don't use floating point for surface height scaling.
+      wined3d: Remove an outdated comment in state_zwritenable().
+      wined3d: Remove an outdated comment from load_vertex_data().
+      ddraw: Trace color keys in hex.
+      d3dx9: Implement loading luminance/alpha data in D3DXLoadSurfaceFromMemory().
+      d3dx9/tests: Add some tests for loading luminance/alpha data.
+      wined3d: Use ARB_texture_rg for WINED3DFMT_R16G16_UNORM textures when available.
+      wined3d: Remove a texture dimension check in state_alpha().
+      ddraw: Get rid of IDirectDrawImpl.
+      wined3d: Pass correctly offset pointers to surface_cpu_blt_compressed().
+      wined3d: surface_cpu_blt() should always receive valid source and destination rectangles.
+      wined3d: Also recognise the "classic" Mesa Nouveau driver for GeForce 4 and earlier cards.
+      wined3d: GL_MAX_TEXTURE_COORDS_ARB is not available without ARB_fragment_program.
+      ddraw: Get rid of IDirectDrawSurfaceImpl.
+      d3d9: Cleanup IDirect3D9Impl_QueryInterface().
+      d3d9/tests: Fix a couple of return value checks.
+      d3d8/tests: Fix a couple of return value checks.
+      ddraw/tests: Fix a couple of return value checks.
+      ddraw: Get rid of IDirectDrawPaletteImpl.
+      ddraw: Don't return a pointer to the implementation in ddraw7_QueryInterface().
+      ddraw: Don't return a pointer to the implementation in IDirect3DDeviceImpl_7_QueryInterface().
+      ddraw: Don't return a pointer to the implementation in IDirect3DMaterialImpl_QueryInterface().
+      ddraw: Don't return a pointer to the implementation in IDirectDrawClassFactoryImpl_QueryInterface().
+      ddraw: Get rid of IDirect3DLightImpl.
+      d3d8: Don't return a pointer to the implementation in IDirect3DVolumeTexture8Impl_QueryInterface().
+      d3d8: Don't return a pointer to the implementation in IDirect3DVolume8Impl_QueryInterface().
+      d3d8: Don't return a pointer to the implementation in IDirect3DTexture8Impl_QueryInterface().
+      d3d8: Don't return a pointer to the implementation in IDirect3DSwapChain8Impl_QueryInterface().
+      ddraw: Get rid of IDirect3DViewportImpl.
+      wined3d: The current WGL DC should never be NULL in wined3d_adapter_init_gl_caps().
+      wined3d: Introduce a separate function for parsing the GL extension string.
+      wined3d: Use the same code for parsing the WGL extension string as for the regular GL extension string.
+      wined3d: Move the WGL extension detection code to the same place as regular GL extension detection.
+      ddraw: Get rid of IDirect3DMaterialImpl.
 
+Huw Davies (2):
+      gdi32: Correctly propagate the enumproc's return value.
+      gdi32: Remove unused variable.
 
-*** Internationalization
+Hwang YunSong (1):
+      po: Update Korean translation.
 
-- Bidirectional text rendering is fully supported.
+Igor Paliychuk (1):
+      po: Update Ukrainian translation.
 
-- Font shaping and reordering is supported for all the scripts
-  specified in the Unicode standard.
+Jacek Caban (55):
+      mshtml: Get rid of no longer used silent argument of load_gecko.
+      wininet: Added default fallback for setting handle options and use it for INTERNET_OPTION_CALLBACK.
+      wininet: Use separate function for setting global options.
+      wininet: Added INTERNET_OPTION_MAX_CONNS_PER_SERVER and INTERNET_OPTION_MAX_CONNS_PER_1_0_SERVER options setting implementation.
+      wininet: Added separated function for querying global options.
+      wininet: Added more connection limit options tests.
+      include: Added msident.idl.
+      widl: Removed unused idfile_token.
+      widl: Make headers guards compatible with midl.
+      jscript: Added IVariantChangeType stub implementation.
+      jscript: Properly handle NULL strings in add_eval.
+      jscript: Pass proper caller argument to InvokeEx.
+      jscript: Removed no longer needed caller argument of disp_call function.
+      jscript: Removed no longer needed disp_propget caller argument.
+      jscript: Removed no longer needed disp_propput caller argument.
+      mshtml: Recognize UTF-8 BOM.
+      msident: Added stub DLL.
+      jscript: Added ChangeType implementation.
+      jscript: Added QueryService(SID_VariantConversion) implementation.
+      jscript: Added VARIANT conversion tests.
+      jscript: Removed no longer needed caller argument from jsdisp_call_value.
+      jscript: Removed no longer needed caller argument from jsdisp_call_name.
+      jscript: Removed no longer needed caller argument from jsdisp_propput_name and jsdisp_propget.
+      jscript: Removed no longer needed caller argument from jsdisp_propput_idx.
+      jscript: Removed no longer needed caller argument from jsdisp_propget_name.
+      jscript: Removed no longer needed caller argument from jsdisp_get_idx.
+      msident: Added DLL registration implementation.
+      msident: Added CLSID_UserIdentityManager object stub implementation.
+      msident: Added IUserIdentityManager::EnumIdentities implementation.
+      jscript: Store bytecode_t in exec_ctx_t.
+      jscript: Simplify compile_subscript_stat.
+      jscript: Compile all function from given source in one run.
+      jscript: Call script_parse from compile_script, not the other way around.
+      jscript: Don't store compiler_ctx_t in parser_ctx_t.
+      jscript: Store script context in exec_ctx_t.
+      jscript: Store parser_ctx_t in bytecode_t instead of other way around.
+      jscript: Removed no longer needed ref counting in parser_ctx_t.
+      mshtml: Store more info about properties in func_info_t.
+      mshtml: Don't use ITypeInfo for InvokeEx(DISPATCH_PROPERTYGET) implementation.
+      mshtml: Don't use ITypeInfo for InvokeEx(DISPATCH_PROPERTYPUT) implementation.
+      mshtml: Use caller for argument convertion in builtin_propput if available.
+      mshtml: Added property value conversion type tests.
+      jscript: Get rid of no longer needed caller argument from builtin_invoke_t.
+      mshtml: Wine Gecko 1.5 release.
+      mshtml: Get rid of PRBool in nsiface.idl.
+      mshtml: Get rid of PRBool from nsio.c.
+      mshtml: Get rid of PRBool from nsembed.c and nsservice.c.
+      mshtml: Get rid of remaining PRBool usages.
+      msxml3: Avoid BAD_CAST in schemasInit.
+      ieframe: Use Custom IEnumOLEVERBVtbl implementation in IOleObject::EnumVerbs.
+      ieframe: Added EnumVerbs tests.
+      mshtml: Store filter in HTMLElement object.
+      mshtml: Added IHTMLCurrentStyle2::get_filter implementation.
+      mshtml: Added IHTMLCurrentStyle2::get_filter tests.
+      mshtml: Don't overwrite type of result if property type is VT_VARIANT.
 
-- Bidirectional text editing is supported in the standard edit
-  control.
+Jaka Kranjc (1):
+      po: Preserve the previous msgid on change as a hint to translators.
 
-- Vertical fonts (e.g. for Japanese) are supported.
+Jozef Kucia (2):
+      d3dx9/tests: Don't leak D3DXBuffer.
+      d3dx9/tests: Don't leak D3DXBuffer in D3DXWeldVertices tests.
 
-- Mirroring of windows, menus, and window controls for right-to-left
-  languages is fully supported.
+Julian Rüger (1):
+      po: Update German translation.
 
-- All resources (strings, menus, dialogs, accelerators) contained in
-  Wine can be translated through standard gettext-style po files.
+Józef Kucia (2):
+      wpp: Reset lexer state after unexpected end of file.
+      d3dcompiler/tests: Add test for comments containing quotation marks.
 
-- The Unicode character data tables have been updated to version 6.0
-  of the Unicode standard.
+Keith Bowes (1):
+      po: Update Esperanto Translation.
 
-- Wine is translated to French, German, Spanish, Italian, Dutch,
-  Swedish, Finnish, Portuguese, Catalan, Hungarian, Polish, Russian,
-  Slovenian, Lithuanian, Japanese, and Korean. It has partial
-  translations for another fifteen languages.
+Ken Thomases (3):
+      ntdll: Fix status returned for too-long registry value names.
+      gdi.exe16: Eliminate a couple of dead stores.
+      shell32: Partially implement Mac Trash backing for the Recycle Bin.
 
+Kusanagi Kouichi (7):
+      gdi32: Add a helper function to find font link.
+      gdi32: Move font signature of font link from Face to SYSTEM_LINKS.
+      gdi32: Add a helper function to create a full name from a family name and a style name.
+      gdi32: Add a helper function to get face list from family.
+      gdi32: Simplify font replacement loading.
+      gdi32: Remove unused parameters and code, and a useless wrapper function.
+      gdi32: find_face_from_filename() needs to take font replacements into account.
 
-*** User interface
+Lauri Kenttä (3):
+      cryptui: Use the same string in import and export wizards.
+      cryptui: Use (*.ext) instead of (.ext) in file format strings.
+      po: Update Finnish translation.
 
-- The new Vista style of file dialogs is supported.
-
-- Common controls are improved, particularly the calendar, tree view,
-  system link, and image list controls.
-
-- Parts of the Game Explorer API are implemented.
-
-- Wine can take advantage of the GStreamer framework for audio and
-  video playback. This makes it possible to support all formats that
-  have a GStreamer codec. On Mac OS X, the QuickTime framework is used
-  for the same purpose.
-
-
-*** Desktop integration
-
-- System tray notification balloons are implemented.
-
-- The system tray is displayed as a task bar at the bottom of the
-  screen in desktop mode.
-
-- The system tray is automatically registered again when the Unix tray
-  manager is restarted.
-
-- The standard mouse cursors are remapped to the cursor theme of the
-  Unix desktop.
-
-- Drag & drop of OLE objects across applications is supported.
-
-- Icons for menu entries are exported in multiple sizes and in PNG
-  format.
-
-- Icons are displayed for the Unix desktop "Open with..." menu
-  entries.
-
-
-*** Internet and networking
-
-- The built-in Internet Explorer has a user interface, including a
-  menu, an address bar, a tool bar, and configuration dialogs.
-
-- There is an "Internet Settings" control panel that allows
-  configuring various aspects of web browsing, as well as managing
-  security certificates.
-
-- The VBScript language is fully supported.
-
-- The built-in (Gecko-based) web browser engine supports ActiveX.
-
-- The Gecko engine has been updated to the version from Firefox 8.
-
-- The Gecko engine is packaged as an MSI file, and its installation
-  can be managed from the "Add/Remove Programs" control panel.
-
-- The Gecko engine is available on 64-bit.
-
-- Persistent HTTP connections are supported.
-
-- HTTP proxies are better supported, including PAC scripts.
-
-- Changing network passwords is supported.
-
-- The HTML Help support is improved, including a nicer user interface
-  and better navigation support.
-
-- Asynchronous I/O on network socket is improved, particularly
-  asynchronous accepts. This helps with various networked games.
-
-
-*** Direct3D
-
-- Reloading sRGB textures uses either EXT_texture_sRGB_decode or FBO
-  blits when available. This is much faster. This affects Source
-  Engine games and Unreal Engine 3 games in particular.
-
-- WineD3D supports multisample anti-aliasing.
-
-- D3D8 and D3D9 properly support v-sync / swap intervals.
-
-- The WineD3D blitter code is improved both for correctness and
-  performance.
-
-- The WineD3D graphics card database has been updated to recognize new
-  graphics cards and Mesa drivers.
-
-- WineD3D no longer uses COM for its implementation. This makes it
-  much nicer to work with.
-
-- The context management code is improved. The window being destroyed
-  while the WineD3D device is still active in particular is handled
-  much better.
-
-- There have been some performance improvements related to WineD3D
-  state management and resource updates.
-
-- Focus and device window handling work better for D3D8 and D3D9. This
-  mostly affects things like changing graphics settings, switching
-  from full-screen to windowed and back, etc.
-
-- NVDB is supported on cards that support GL_EXT_depth_bounds_test.
-
-- The INTZ and NULL formats are supported.
-
-- Depth surface blits are implemented in WineD3D.
-
-- Depth bias handling is improved. This fixes flickering shadows and
-  decals in a couple of games, like Mass Effect 2 and Unreal
-  Tournament 2004.
-
-- GL_ARB_draw_elements_base_vertex is supported. This allows draws to
-  be more efficient in some cases.
-
-- GL_ARB_map_buffer_alignment is supported. This allows for more
-  efficient mapping of textures and buffers in some cases.
-
-- Handling projected textures works better in early shader model
-  versions.
-
-- Shaders are strictly checked against the hardware capabilities. This
-  means we won't try to create e.g. a shader model 3 shader on shader
-  model 2 hardware.
-
-- D3D9EX texture creation from system memory is supported. This
-  affects some Source Engine games like Team Fortress 2.
-
-- The D3DX9 shader assembler is mostly finished. It is now part of the
-  new d3dcompiler dll.
-
-- Various parts of D3DX9 are more complete, including:
-  - The surface / texture loading functions.
-  - The mesh creation and manipulation functions.
-  - The vertex declaration handling functions.
-  - The effects framework, binary effect parsing in particular.
-
-
-*** DirectDraw
-
-- OpenGL is used by default for DirectDraw as well, just like D3D8 and
-  D3D9. For most applications this is an improvement, but nevertheless
-  the old GDI renderer may still work better for specific applications
-  or if the graphics driver's OpenGL implementation is inadequate.
-
-- Flips are properly supported. The back buffer now contains the front
-  buffer contents after a flip instead of being undefined.
-
-- Improved support for viewports in early versions of DirectDraw that
-  include an extra clipspace transformation. This affects the original
-  Half-Life.
-
-- Fixes for cooperative levels and associated window handling and mode
-  changes.
-
-- DirectDraw clippers are supported.
-
-
-*** Kernel
-
-- DOSBox is used to run DOS applications on platforms that don't
-  support vm86 mode.
-
-- The Windows console is emulated as best as possible on Unix
-  terminals without requiring switching into curses mode.
-
-- Volume label and serial number can be retrieved from UDF filesystems
-  (used on DVDs).
-
-- Side-by-side manifests are installed for a number of built-in
-  libraries to make them more compatible with applications using
-  manifest resources.
-
-- The Wine preloader is also used on 64-bit for a more compatible
-  address space layout.
-
-
-*** Installer support
-
-- Applying installer patches is supported. This is needed for various
-  Service Pack installers, particularly for the .NET ones.
-
-- Installing side-by-side assemblies is supported.
-
-- Rollbacks of failed installs is supported.
-
-- Installing services is better supported.
-
-- MSI installers can be created entirely under Wine, using the
-  'cabarc' and 'winemsibuilder' tools.
-
-
-*** Build environment
-
-- The IDL compiler (widl) can generate format strings for both
-  old-style and new-style COM interpreted stubs.
-
-- Registrations for dlls and typelibs are based on scripts generated
-  at compile time, for faster Wine prefix creation and updates.
-
-- The Resource Compiler (wrc) and Message Compiler (wmc) can generate
-  translated resources from po files, as well as create po files from
-  existing translated resources.
-
-- Fake PE dlls are generated and installed for all built-in dlls,
-  since many applications expect to find the PE dlls on disk.
-
-- The ARM platform is supported by the Wine tool chain.
-
-- The windows.h header can now be used in Wine code, the compile time
-  gains are no longer worth the header incompatibilities.
-
-- Some headers have been modified to make them easier to share with
-  the Mingw-w64 project.
-
-
-*** Platform-specific changes
-
-- Wine compiles on ARM platforms.
-
-- On Mac OS X, the secure channel implementation uses the Security
-  framework instead of the GnuTLS library.
-
-- On Linux, dynamic device management can use the new UDisks service
-  in addition to HAL.
-
-- Stubless OLE proxies are supported also on 64-bit platforms.
-
-
-*** Built-in applications
-
-- The new 'cabarc' program allows manipulation of cabinet files,
-  including creation of new cabinets.
-
-- The new 'wscript' program implements the Windows Script Host, to run
-  VBScript and JavaScript scripts.
-
-- The new 'taskkill' program allows killing Windows processes by name
-  or process id.
-
-- The new 'ipconfig' program displays the IP configuration seen by
-  Windows programs.
-
-- The new 'hostname' program displays the hostname seen by Windows
-  programs.
-
-- The 'explorer' program implements a shell namespace explorer instead
-  of launching the file manager.
-
-- The 'view' program can display enhanced metafiles.
-
-- The 'dxdiag' tool outputs real information about the system.
-
-- The new 'winemsibuilder' tool allows creating MSI installers; it is
-  used to build the Gecko add-on package.
-
-- Almost all built-in applications are fully Unicode.
-
-- All applications installed to /usr/bin have a manual page.
-
-
-*** Quality assurance & debugging
-
-- The test suite no longer attempts to support Win9x platforms, this
-  was too much effort for little benefit.
-
-- The Wine debugger offers to save crash information to a file, to
-  make it easier to provide good information in bug reports.
-
-- Parsing of debugging information from various object file formats is
-  improved, which should yield better quality crash information,
-  particularly for 64-bit.
-
-
-*** Miscellaneous
-
-- XML support is improved, including support for schemas, namespaces,
-  MSXML version 6, and an XML file writer. This is particularly useful
-  for the new Microsoft Office XML-based document formats.
-
-- The new "secure" versions of the C runtime functions are almost all
-  implemented.
-
-- There is an initial implementation of the Microsoft C++ standard
-  class libraries, including string, locale, and stream classes.
-
-- Creation of compressed cabinet files is supported.
-
-- There is an implementation of the OpenCL library, as a wrapper
-  around the equivalent Unix library.
-
-- Print jobs are submitted to CUPS directly instead of requiring the
-  'lpr' command-line tool.
-
-- There is support for managing multiple .NET runtime versions and
-  their corresponding Mono versions.
-
-
-*** New external dependencies
-
-- The XInput 2 library is used for mouse control in games.
-
-- The libopencl library is used by the OpenCL wrapper dll.
-
-- The libgettextpo library is optionally used at build time to update
-  po files from the rc sources.
-
-- The msgfmt tool (from the gettext library) is used at build time to
-  compile po files.
-
-- The zlib library is used to implement cabinet file compression.
-
-- The libfreetype library needs to be at least version 2.2, older
-  versions are no longer supported.
-
-- The libdbus library is used for the UDisks device support on Linux.
-
-- The smbpasswd tool (part of Samba) is used for changing network
-  passwords.
-
-- DOSBox is used to run DOS applications. It is recommended to use the
-  latest SVN version of DOSBox since it contains some Wine-specific
-  improvements.
+Matteo Bruni (5):
+      wined3d: Clamp fog coordinate in the vertex shader.
+      wined3d: Clamp fog coordinate in the ARB backend too.
+      d3d9/tests: Reenable a VS fog test.
+      d3d8/tests: Port fog_with_shader_test() from d3d9 tests.
+      d3d9/tests: Add shader model 2 fog tests.
 
+Michael Stefaniuc (2):
+      riched20: Drop the WINE_ prefix from a FIXME.
+      mmsystem.dll16: Drop the WINE_ prefix from a FIXME.
 
-*** Useful configuration options
+Nicolas Le Cam (1):
+      msvcp90/tests: Don't redefine __thiscall.
 
-Note: More details abouts these and other configuration options can be
-      found at http://wiki.winehq.org/UsefulRegistryKeys
+Nikolay Sivov (17):
+      msxml3: Add stub support of ISAXDeclHandler for MXWriter.
+      msxml3: Support element declaration output in MXWriter.
+      msxml3: Check for unsafe cast in addCollection().
+      msxml3: Stub support for IMXAttributes.
+      msxml3: Add stub ISAXAttributes for MXAttributes implementation.
+      msxml3: Accept names in predicate expressions for XSLPattern queries.
+      comctl32: Update thumb position on WM_MOUSEMOVE instead of deferring it.
+      comctl32: Update thumb position on autopage instead of deferring it.
+      msxml3: Implement IMXAttributes::addAttribute().
+      msxml3: Implement ISAXAttributes::getLength() for MXAttributes.
+      msxml3: Implement ISAXAttributes_getQName() for MXAttributes.
+      msxml3: Implement getValue() for MXAttributes.
+      msxml3: Implement getType() for MXAttributes.
+      msxml3: Implement getIndexFromQName() for MXAttributes.
+      po: Update Russian translation.
+      msxml3: Implement getValueFromQName() for MXAttributes.
+      msxml3: Added IVBSAXAttributes for MXAttributes.
 
-- The correct audio driver is detected automatically, but can still be
-  overridden through the HKCU\Software\Wine\Drivers\Audio key like in
-  previous versions. It is recommended to delete this key entirely to
-  enable the auto-detection.
+Owen Rudge (8):
+      comctl32/monthcal: Check both min and max ranges in IsDateInValidRange.
+      comctl32/tests: Add test for DTM_SETSYSTEMTIME outside range limit.
+      comctl32/datetime: Check dates are within range in SetSystemTime.
+      comctl32/datetime: Ensure up/down/home/end increments remain within bounds.
+      comctl32/datetime: Don't allow an invalid year to be typed in.
+      comctl32/datetime: Don't check box if no valid date set.
+      comctl32/datetime: Allow entering 'AM' or 'PM' via keyboard.
+      comctl32/datetime: Fix AM/PM handling with 12-hour fields.
 
-- Multisample anti-aliasing can be disabled by setting "Multisampling"
-  to "disabled" under HKCU\Software\Wine\Direct3D.
+Petr Kočandrle (1):
+      po: Update Czech translation.
 
-- Setting "AlwaysOffscreen" to "enabled" under
-  HKCU\Software\Wine\Direct3D simplifies sharing depth / stencil
-  surfaces between on-screen and off-screen render targets in
-  WineD3D. This will likely become the default for the next release.
+Piotr Caban (29):
+      include: Added IXMLGenericParse interface definition.
+      mshtml: Set proposed MIME to text/html on main document.
+      mshtml/tests: Test HTMLDocument without MIME type reported.
+      urlmon: Added CopyBindInfo implementation.
+      urlmon/tests: Added CopyBindInfo tests.
+      urlmon: Use CopyBindInfo in InternetBindInfo_GetBindInfo.
+      shlwapi: Lowercase schemes in UrlCombine function.
+      urlmon: Added text/xml filter.
+      urlmon: Reorganize FindMimeFromData implementation.
+      urlmon/tests: Added text/xml mime filer tests.
+      urlmon/tests: Mark results returned by older urlmon broken in FindMimeFromData tests.
+      urlmon/tests: Show that text/plain and application/octet-stream mimes suggestions are ignorred.
+      msxml3: Added XMLView class stub.
+      msxml3/tests: Added XMLView QueryInterface tests.
+      msxml3: Added internal function for loading xml from IMoniker.
+      urlmon: Added missing memcpy in CopyBindInfo.
+      msvcrt: Fixed printf behaviour on hexadecimal, zero-padded numbers.
+      msxml3/tests: Skip tests when XMLView object fails to create.
+      msxml3: Added partial XMLView IPersistMoniker_Load implementation.
+      msxml3: Added XMLView IPersistMoniker_Load test.
+      urlmon: Use wine lists to store namespaces and MIME filters.
+      urlmon: Clean session related data in free_session function.
+      urlmon: Search for MIME filters defined in registry in get_mime_filter.
+      urlmon: Added GetBindResult implementation.
+      urlmon/tests: Added GetBindResult tests.
+      urlmon: Stop binding when OnDataAvailable fails.
+      urlmon: Make name spaces comparison case insensitive.
+      urlmon: Add mime handler layer before data is processed.
+      urlmon/tests: Test PI_MIMEVERIFICATION when MIME filter is in use.
 
-- The DirectDraw renderer can be switched back to the old GDI mode by
-  setting "DirectDrawRenderer" to "gdi" under HKCU\Software\Wine\Direct3D.
+Stefan Dösinger (1):
+      d3d8/tests: Port the depth blit test to d3d8.
 
+Stefan Leichter (1):
+      mgmtapi: New stub dll.
 
-*** Known issues
+Thomas Faber (2):
+      msvcp60: Fix build with MSVC.
+      msvcp90: Fix build with MSVC.
 
-- Support for PulseAudio is improved, but very recent versions of
-  PulseAudio (>= 1.0) and alsa-plugins (>= 1.0.25) are required for
-  good results, since older versions contain various bugs.
-  See http://wiki.winehq.org/Sound for details.
+Vincent Povirk (13):
+      gdiplus: Rewrite SOFTWARE_GdipFillRegion to call brush_fill_pixels less.
+      gdiplus: Store a real path in path gradient brushes.
+      gdiplus: Add stub GdipGetPathGradientPath with tests.
+      gdiplus: Set path gradient center points based on the path's bounding rect.
+      gdiplus: Add tests for path gradient center point functions.
+      gdiplus: Fill path gradients with a solid color.
+      gdiplus: Do some actual color blending when drawing path gradients.
+      gdiplus: Add fixme's for unimplemented path gradient features.
+      gdiplus: Add test for GdipGetPathGradientSurroundColorsWithCount.
+      gdiplus: Don't add control points to the result in GdipFlattenPath.
+      gdiplus: Test SetSurroundColors with fewer colors than points on the path.
+      gdiplus: Implement path gradient surround color accessors.
+      gdiplus: Use the surround colors in path gradient rendering.
 
 --
 Alexandre Julliard
diff --git a/VERSION b/VERSION
index 2864cb9..022123e 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-Wine version 1.4
+Wine version 1.5.0
diff --git a/configure b/configure
index d28b52a..8f0ed91 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for Wine 1.4.
+# Generated by GNU Autoconf 2.68 for Wine 1.5.0.
 #
 # Report bugs to <wine-devel@winehq.org>.
 #
@@ -560,8 +560,8 @@
 # Identity of this package.
 PACKAGE_NAME='Wine'
 PACKAGE_TARNAME='wine'
-PACKAGE_VERSION='1.4'
-PACKAGE_STRING='Wine 1.4'
+PACKAGE_VERSION='1.5.0'
+PACKAGE_STRING='Wine 1.5.0'
 PACKAGE_BUGREPORT='wine-devel@winehq.org'
 PACKAGE_URL='http://www.winehq.org'
 
@@ -1380,7 +1380,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures Wine 1.4 to adapt to many kinds of systems.
+\`configure' configures Wine 1.5.0 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1449,7 +1449,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of Wine 1.4:";;
+     short | recursive ) echo "Configuration of Wine 1.5.0:";;
    esac
   cat <<\_ACEOF
 
@@ -1594,7 +1594,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-Wine configure 1.4
+Wine configure 1.5.0
 generated by GNU Autoconf 2.68
 
 Copyright (C) 2010 Free Software Foundation, Inc.
@@ -2112,7 +2112,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by Wine $as_me 1.4, which was
+It was created by Wine $as_me 1.5.0, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
   $ $0 $@
@@ -16149,7 +16149,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by Wine $as_me 1.4, which was
+This file was extended by Wine $as_me 1.5.0, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -16220,7 +16220,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-Wine config.status 1.4
+Wine config.status 1.5.0
 configured by $0, generated by GNU Autoconf 2.68,
   with options \\"\$ac_cs_config\\"
 
