Pages

Wednesday, January 25, 2023

Wine stable release 8.0 is now available for Linux FreeBSD and macOS

The Wine team is proud to announce that the stable release Wine 8.0 is now available.

This release represents a year of development effort and over 8,600 individual changes. It contains a large number of improvements that are listed in the release notes below. The main achievement is the completion of the conversion to PE format.

The source is available now. Binary packages are in the process of being built, and will appear soon at their respective download locations.


What's new in Wine 8.0
======================

*** PE modules

- After 4 years of work, the PE conversion is finally complete: all modules can
  be built in PE format. This is an important milestone on the road to supporting
  various features such as copy protection, 32-bit applications on 64-bit hosts,
  Windows debuggers, x86 applications on ARM, etc.
  However, some modules still perform direct calls between the PE and the Unix
  part, instead of going through the NT system call interface. The remaining
  direct calls will be removed during the Wine 8.x development phase.

- A special syscall dispatcher is used for PE -> Unix transitions, to avoid the
  overhead of a full NT system call. This minimizes the performance impact of the
  new architecture, in particular for the OpenGL and Vulkan libraries.

- Building mixed Windows/Unix libraries in ELF format (.dll.so libraries) is
  still supported for use in Winelib applications. However, such applications
  won't support features enabled by the NT syscall interface, such as WoW64
  without 32-bit libraries.


*** WoW64

- WoW64 thunks are implemented for essentially all Unix libraries, enabling a
  32-bit PE module to call a 64-bit Unix library. Once the remaining direct
  PE/Unix calls have been removed, this will make it fully possible to run
  32-bit Windows applications without any 32-bit Unix library.

- When the 32-bit Wine loader isn't found, 32-bit applications are started in
  the new experimental "Windows-like" WoW64 mode (where 32-bit code runs inside
  a 64-bit host process). This mode can be enabled by building with the
  '--enable-archs' configure option. This is still under development and not yet
  recommended for general use. Since in case of configuration errors it is
  possible for it to be triggered inadvertently, applications started in this
  mode print the warning "starting in experimental wow64 mode".


*** Graphics

- The "Light" theme is enabled in the default configuration, for a more modern
  look. Other themes can still be configured through WineCfg.

- The graphics drivers (winex11.drv, winemac.drv, wineandroid.drv) are converted
  to run on the Unix side of the syscall boundary, and interface with the Unix
  side of the Win32u library.

- The Print Processor architecture is implemented. This will be used to avoid
  direct PE<->Unix calls in the printer driver.

- Effects are supported in Direct2D, including description parsing and a number
  of core objects.

- Command lists recording and playback are implemented in Direct2D.

- The Vulkan driver supports up to version 1.3.237 of the Vulkan spec.


*** Direct3D

- Many optimizations related to streaming map acceleration are implemented, in
  common code as well as in the GL renderer. Depending on the application, this
  may result in major performance improvements.

- Adapter video memory budget change notifications are implemented.

- The Vulkan renderer supports setting multiple viewports and scissor rectangles.

- Several Direct3D 10 and 11 features, which were already implemented, are
  accurately reported through capability flags:
  - Per-format support for vertex and index buffers.
  - Per-format support for all capabilities via D3D11_FEATURE_FORMAT_SUPPORT.
  - No-overwrite maps on shader resources and constant buffers.
  - Partial range binding of constant buffers.

- For convenience, a new WINE_D3D_CONFIG environment variable may be used instead
  of modifying the HKEY_CURRENT_USER\Software\Wine\Direct3D registry key. The
  value is a comma- or semicolon-separated list of key-value pairs, e.g.:

      WINE_D3D_CONFIG="renderer=vulkan;VideoPciVendorID=0xc0de"

  If an individual setting is specified in both the environment variable and the
  registry, the former takes precedence.

- The Direct3D graphics card database recognizes more graphics cards.

- The Vulkan renderer limits the maximum Direct3D feature level based on
  available Vulkan features.


*** Direct3D helper libraries

- A new HLSL compiler is implemented using the vkd3d-shader library.

- A new HLSL disassembler is implemented using the vkd3d-shader library.

- The HLSL preprocessor is reimplemented using the vkd3d-shader HLSL
  preprocessor.

- The D3DX 10 Thread Pump is implemented.

- Many more expressions are supported in Direct3D 10 effects.

- Cubemap projection is implemented in the D3DX 9 helper library.


*** Audio / Video

- The MPEG-1 audio decoder filter for layers 1 and 2, and the separate filter for
  layer 3, are both implemented on top of GStreamer.

- The ASF reader filter is implemented.

- The OpenAL32.dll wrapper library is removed, in favor of the native
  OpenAL32.dll library shipped by Windows applications.


*** Media Foundation

- Content type resolution is improved in the Media Foundation Player.

- Rate control is implemented.

- The Enhanced Video Renderer default mixer and presenter are better supported.

- The DirectShow filter is implemented in the Enhanced Video Renderer.

- An initial framework is implemented for the Writer encoding API.

- The topology loader is better supported.


*** Input devices

- Controller hotplug support is greatly improved, and controller removal and
  insertion are correctly dispatched to applications.

- Driving wheel device detection and reporting is better implemented, using the
  SDL library and HID usages as hints for the device types.

- Force feedback effect support is improved, specifically with driving wheel
  controllers.

- The HID Haptics specification is used for left / right motor rumble and trigger
  rumble. It makes it possible for device drivers to expose haptics support over
  HidRaw, and overcome EvDev limitations.

- The Joystick Control Panel is redesigned, with new graphics and a dedicated
  view for XInput gamepads.

- Sony DualShock and DualSense controllers are supported when the hidraw backend
  is used, and exposed to applications in the same way as they are on Windows.

- The Windows.Gaming.Input module is introduced, one of the first WinRT modules
  in Wine, implementing a new programming interface to access gamepads, joysticks
  and driving wheel devices.  For this new input API, hotplug notifications are
  also implemented, as well as force feedback effects and haptics. This API is
  the first one to support trigger rumble.


*** Internationalization

- A proper locale database, in Windows locale.nls format, is generated from the
  Unicode CLDR database. The list of supported locales is essentially identical
  to that of the latest Windows version.

- Unicode string comparison is based on the Windows Sortkey database and
  algorithms instead of the Unicode Collation Algorithm, yielding more compatible
  results.

- Characters from high Unicode planes (in UTF-16 encoding) are supported in most
  functions, in particular for case mappings, BiDi formatting, and character
  shaping.

- The UTF-8 encoding is supported as Ansi codepage. It is enabled when requested
  by the application's manifest.

- Unicode character tables are based on version 15.0.0 of the Unicode Standard.

- The timezone data is generated from the IANA timezone database version 2022g.


*** Text and fonts

- Font linking is enabled for most system fonts, which should fix missing glyphs
  in CJK locales.

- Font fallback in DirectWrite is reworked, with additional support for an large
  number of scripts.


*** Kernel

- The ApiSetSchema database is implemented, replacing all the api-ms-* forwarding
  modules. This reduces both disk space and address space usage.

- DOS file attributes are persistent, and stored on disk using the filesystem's
  extended attributes, in a format compatible with Samba.


*** Internet and networking

- The Online Certificate Status Protocol (OCSP) is implemented.

- More EcmaScript features are supported in JScript standard-compliant mode.

- The JScript garbage collector is implemented.

- Accessibility support is enabled in Wine Gecko package.

- Web Storage, Performance object and more event objects are implemented in
  MSHTML.


*** Mono / .NET

- The Mono engine is updated to version 7.4.0. The list of changes can be viewed
  at https://github.com/madewokherd/wine-mono/releases/tag/wine-mono-7.4.0


*** Builtin applications

- All the builtin applications use Common Controls version 6, which enables
  theming and high-DPI rendering by default.

- The Wine Debugger (winedbg) prints thread names in the 'info thread' listing,
  for applications that set the names of their threads. All internal Wine threads
  also set their own name.

- The QWORD type is supported in the REGEDIT and REG registry tools.

- Notepad has a status bar displaying the current cursor position. The Goto Line
  functionality is also implemented.

- The builtin console programs print data in the OEM codepage, for better
  compatibility with applications reading their output.

- The Service Control tool (sc.exe) supports the 'query' command.


*** Development tools

- The PE conversion has made it necessary to implement a new mechanism to run
  static C++ constructors in Winelib ELF applications. Unfortunately, this
  requires the corresponding modules to be rebuilt with Wine 8.0.  The rebuilt
  modules will still run correctly on older Wine versions, but older modules will
  no longer execute static constructors when run on Wine 8.0.

- In regression tests, individual checks can be marked as "flaky". This is useful
  for checks that depend on external factors such as network timings. The errors
  are still reported but not counted as failures.

- Test failure messages can be printed in color by setting the WINETEST_COLOR
  environment variable, to make them easier to spot in the test log.

- The Resource Compiler (WRC) and Message Compiler (WMC) use the locale.nls
  database to detect languages and codepages, and thus support all the Windows
  locales.

- The WineDump tool supports printing the contents of Enhanced Metafile spool
  files, as well as more contents from PDB files.


*** Build infrastructure

- PE binaries can be built for multiple architectures from the same build tree,
  using the '--enable-archs' option to configure, for example
  '--enable-archs=i386,x86_64'. This can be used to enable the experimental
  WoW64 mode, where 32-bit applications can run without any 32-bit host
  libraries. Note that this mode is still under development and not yet
  recommended for general use.

- Data types that are defined as 'long' on Windows are defined as 'long' instead
  of 'int' on all platforms with a 32-bit long type. This is more compatible, but
  it can cause printf format warnings with Unix compilers. In Winelib code, it
  can be disabled by defining WINE_NO_LONG_TYPES.

- Import libraries can be generated without using dlltool, by passing the
  '--without-dlltool' option to winebuild. This is used to avoid dlltool bugs
  with delay import libraries.

- Libraries that contain only resources and no code can be built with the
  '--data-only' option to winegcc, which makes them smaller and more efficient to
  load.


*** Bundled libraries

- Faudio is updated to the upstream release 22.11.

- LCMS2 is updated to the upstream release 2.14.

- LibJPEG is updated to the upstream release 9e.

- LibMPG123 is updated to the upstream release 1.31.1.

- LibPng is updated to the upstream release 1.6.39.

- LibTiff is updated to the upstream release 4.4.0.

- LibXml2 is updated to the upstream release 2.10.3.

- LibXslt is updated to the upstream release 1.1.37.

- Zlib is updated to the upstream release 1.2.13.


*** Platform-specific features

- The experimental WoW64 architecture is supported on macOS versions from 10.15.

- 64-bit time_t is supported on 32-bit Linux with recent Glibc versions.

- Exception unwinding on ARM platforms is extended with EHABI support on ARM32
  and Dwarf support on ARM64.


*** Miscellaneous

- RSA encryption and the RSA-PSS signing algorithm are implemented.

- An initial version of the UI Automation API is implemented.

- Function name demangling supports various C++11 features.


*** External dependencies

- The vkd3d and LDAP libraries are bundled in the source tree and built as
  PE. The corresponding Unix libraries are no longer needed.

- The OpenAL library is no longer used.

Run Microsoft Windows Applications and Games on Mac, Linux or ChromeOS save up to 20% off  CodeWeavers CrossOver+ today.

 

 

Monday, January 23, 2023

Wine development release 8.0-rc5 is now available for Linux FreeBSD and macOS

The Wine development release 8.0-rc5 is now available. This is expected to be the last release candidate before the final 8.0.

What's new in this release:

  • Bug fixes only, we are in code freeze.

The source is available now. Binary packages are in the process of being built, and will appear soon at their respective download locations.

 

Bugs fixed in 8.0-rc5 (total 9):

 - #26822  Double click the icon in the title bar should close the window
 - #32643  getsockopt() does not indicate WSAEFAULT when setting optlen too small
 - #45542  WeGame hangs after login.
 - #50351  Slow text rendering in dofus linked to fnIMLangFontLink2_GetCharCodePages calling WideCharToMultiByte with CP_UNICODE
 - #51227  urlmon:url breaks the wininet:http test on Windows 10 1709+ (7 failures)
 - #51906  Multiple games fail to play videos (War Mongrels, The Medium, Sherlock Holmes Chapter One)
 - #53408  Dark Souls: Remastered has slow performance with OpenGL renderer
 - #53761  Broken rendering in Mafia III: Definitive Edition
 - #54283  dinput:force_feedback - test_windows_gaming_input() sometimes crashes on Windows

Run Microsoft Windows Applications and Games on Mac, Linux or ChromeOS save up to 20% off  CodeWeavers CrossOver+ today.

 

Saturday, January 14, 2023

Wine development release 8.0-rc4 is now available for Linux FreeBSD and macOS

The Wine development release 8.0-rc4 is now available.

What's new in this release:

  • Bug fixes only, we are in code freeze.

The source is available now. Binary packages are in the process of being built, and will appear soon at their respective download locations.

Bugs fixed in 8.0-rc4 (total 25):

 - #48553  Catia (CAD software) refuse to run installation on newest wine   (<=4.18)
 - #51268  Assembler messages: Error: no such instruction: `xsavec (%esp)'
 - #51301  Any action that locks the cursor into place inside the Roblox Client window causes the cursor to freeze
 - #51420  Running any program in Wine causes 100% cpu usage in Xorg
 - #52089  d2d1:d2d1 fails in test_draw_geometry() on Wine
 - #52152  comctl32:edit gets unexpected heights in test_text_position_style() on Windows 10 1809+
 - #52429  Guild Wars: login not possible
 - #52557  GetNetworkParams loops forever on musl
 - #52749  winetricks dotnet35sp1: printfilterpipelinesvc.exe crashes in background
 - #52932  comctl32:edit & user32:edit have test_char_from_pos() failures on Windows with the UTF-8 codepage
 - #52994  mstask:task_trigger - test_GetNextRunTime() fails in Wine on date change
 - #53382  Slow rendering when connected to external monitor
 - #53536  ntdll:rtl - The 32-bit RtlUlonglongByteSwap() breaks test_RtlDecompressBuffer() on Windows
 - #53583  FindNLSStringEx reimplementation doesn't match native
 - #53671  No objects are being rendered in any DX10/11 apps with older GPU drivers
 - #53837  HS_hevo_gc 8.6.1.2 fails to install
 - #54045  ntdll:rtl - test_RtlIpv6StringToAddress() fails on Windows 11
 - #54151  xactengine3_7:xact3 crashes when no speaker is connected
 - #54172  ddraw:ddraw1, ddraw:ddraw2, ddraw:ddraw4, ddraw:ddraw7 - test_window_position() gets the size of the wrong screen in Wine
 - #54180  Petz 4 has corrupt .pet files at startup
 - #54210  Wine fails to compile with Linux 4.11 headers (use of undefined AT_HWCAP2)
 - #54218  RTLD_SELF use breaks musl build since 8.0-rc1
 - #54263  Build of 7.22 fails with mingw-w64 10.0
 - #54264  Hyperdimension Neptunia Re;Birth1 crashes on exit in xactengine notification callback
 - #54287  wineconsole: alternate screen buffer does not work

Run Microsoft Windows Applications and Games on Mac, Linux or ChromeOS save up to 20% off  CodeWeavers CrossOver+ today.

 

Saturday, January 7, 2023

Wine development release 8.0-rc3 is now available for Linux FreeBSD and macOS

The Wine development release 8.0-rc3 is now available.

What's new in this release:

  • Bug fixes only, we are in code freeze.

The source is available now. Binary packages are in the process of being built, and will appear soon at their respective download locations.

 
Bugs fixed in 8.0-rc3 (total 28):

 - #35126  AirBuccaneers hangs on exit
 - #41339  Minor regression: Wine loads with "/wine/dlls/ntdll/loader.c: loader_section" errors when creating a new prefix or running an application
 - #47438  Bloodstained: Ritual of the Night freeze at whitescreen
 - #47536  Can't aim in Overwatch after alt-tabbing
 - #47828  regedit: Random crashes on selecting an entry (thread-related?)
 - #48322  World of Warcraft Classic: Mouse movement can block keydown events from registering
 - #49164  Call of Cthulhu: Dark Corners of the Earth crashes after start
 - #50519  Adobe Digital Editions 4.5 crash on Wine 6.0
 - #52563  d3d11:d3d11 fails in test_dynamic_map_synchronization() on cw-rx460 in Wine
 - #52903  Resizing Dn-FamiTracker fails to redraw pattern editor and status bar
 - #53101  Public Peer silently exits
 - #53403  winegstreamer "flush" removal breaks radio in fallout 3
 - #53627  Max Payne: mouse scroll behaves erratically
 - #53640  Bully: Scholarship Edition hangs on loading screen and doesn't play intros
 - #53680  urlmon:url - test_BindToStorage() fails on Windows <= 8.1
 - #53743  Vivisector has graphical glitches
 - #53748  Sacred Gold (GOG): missing audio in .wmv videos
 - #53752  Rayman 3: glitched graphics (black textures)
 - #53785  Need for Speed: Payback crashes on launch with OpenGL renderer
 - #53863  Tsui no Stella = Stella of the End: doesn't launch anymore (GL_INVALID_OPERATION)
 - #53908  Comptes.exe errors with "dxLockMessage fails"
 - #53995  d2d1:d2d1 runs out of GL memory and crashes on the debian 11 VM
 - #54023  d3d11:d3d11 - test_dynamic_map_synchronization() fails on w11pro64_nv
 - #54049  ddraw:ddraw2 test_texture_wrong_caps test triggers use after free bug
 - #54170  20XX: invisible character
 - #54184  Multiple applications fail http requests when WinHttpSendRequest() doesn't contain full request data
 - #54191  Agarest 1 stopped showing Videos after implementing ASF Reader filter
 - #54268  Moving the separator in regedit don't repaint listview

Run Microsoft Windows Applications and Games on Mac, Linux or ChromeOS save up to 20% off  CodeWeavers CrossOver+ today.