urlmon: Use the _recalloc function instead of reimplementing it.
[wine.git] / ANNOUNCE
blobe7538c24c4179c5a24dde1df37afaa4f2ca50d9e
1 The Wine team is proud to announce that the stable release Wine 8.0
2 is now available.
4 This release represents a year of development effort and over 8,600
5 individual changes. It contains a large number of improvements that
6 are listed in the release notes below. The main achievement is the
7 completion of the conversion to PE format.
9 The source is available at:
11   https://dl.winehq.org/wine/source/8.0/wine-8.0.tar.xz
13 Binary packages for various distributions will be available from:
15   https://www.winehq.org/download
17 You will find documentation on https://www.winehq.org/documentation
19 You can also get the current source directly from the git
20 repository. Check https://www.winehq.org/git for details.
22 Wine is available thanks to the work of many people. See the file
23 AUTHORS in the distribution for the complete list.
25 ----------------------------------------------------------------
27 What's new in Wine 8.0
28 ======================
30 *** PE modules
32 - After 4 years of work, the PE conversion is finally complete: all modules can
33   be built in PE format. This is an important milestone on the road to supporting
34   various features such as copy protection, 32-bit applications on 64-bit hosts,
35   Windows debuggers, x86 applications on ARM, etc.
36   However, some modules still perform direct calls between the PE and the Unix
37   part, instead of going through the NT system call interface. The remaining
38   direct calls will be removed during the Wine 8.x development phase.
40 - A special syscall dispatcher is used for PE -> Unix transitions, to avoid the
41   overhead of a full NT system call. This minimizes the performance impact of the
42   new architecture, in particular for the OpenGL and Vulkan libraries.
44 - Building mixed Windows/Unix libraries in ELF format (.dll.so libraries) is
45   still supported for use in Winelib applications. However, such applications
46   won't support features enabled by the NT syscall interface, such as WoW64
47   without 32-bit libraries.
50 *** WoW64
52 - WoW64 thunks are implemented for essentially all Unix libraries, enabling a
53   32-bit PE module to call a 64-bit Unix library. Once the remaining direct
54   PE/Unix calls have been removed, this will make it fully possible to run
55   32-bit Windows applications without any 32-bit Unix library.
57 - When the 32-bit Wine loader isn't found, 32-bit applications are started in
58   the new experimental "Windows-like" WoW64 mode (where 32-bit code runs inside
59   a 64-bit host process). This mode can be enabled by building with the
60   '--enable-archs' configure option. This is still under development and not yet
61   recommended for general use. Since in case of configuration errors it is
62   possible for it to be triggered inadvertently, applications started in this
63   mode print the warning "starting in experimental wow64 mode".
66 *** Graphics
68 - The "Light" theme is enabled in the default configuration, for a more modern
69   look. Other themes can still be configured through WineCfg.
71 - The graphics drivers (winex11.drv, winemac.drv, wineandroid.drv) are converted
72   to run on the Unix side of the syscall boundary, and interface with the Unix
73   side of the Win32u library.
75 - The Print Processor architecture is implemented. This will be used to avoid
76   direct PE<->Unix calls in the printer driver.
78 - Effects are supported in Direct2D, including description parsing and a number
79   of core objects.
81 - Command lists recording and playback are implemented in Direct2D.
83 - The Vulkan driver supports up to version 1.3.237 of the Vulkan spec.
86 *** Direct3D
88 - Many optimizations related to streaming map acceleration are implemented, in
89   common code as well as in the GL renderer. Depending on the application, this
90   may result in major performance improvements.
92 - Adapter video memory budget change notifications are implemented.
94 - The Vulkan renderer supports setting multiple viewports and scissor rectangles.
96 - Several Direct3D 10 and 11 features, which were already implemented, are
97   accurately reported through capability flags:
98   - Per-format support for vertex and index buffers.
99   - Per-format support for all capabilities via D3D11_FEATURE_FORMAT_SUPPORT.
100   - No-overwrite maps on shader resources and constant buffers.
101   - Partial range binding of constant buffers.
103 - For convenience, a new WINE_D3D_CONFIG environment variable may be used instead
104   of modifying the HKEY_CURRENT_USER\Software\Wine\Direct3D registry key. The
105   value is a comma- or semicolon-separated list of key-value pairs, e.g.:
107       WINE_D3D_CONFIG="renderer=vulkan;VideoPciVendorID=0xc0de"
109   If an individual setting is specified in both the environment variable and the
110   registry, the former takes precedence.
112 - The Direct3D graphics card database recognizes more graphics cards.
114 - The Vulkan renderer limits the maximum Direct3D feature level based on
115   available Vulkan features.
118 *** Direct3D helper libraries
120 - A new HLSL compiler is implemented using the vkd3d-shader library.
122 - A new HLSL disassembler is implemented using the vkd3d-shader library.
124 - The HLSL preprocessor is reimplemented using the vkd3d-shader HLSL
125   preprocessor.
127 - The D3DX 10 Thread Pump is implemented.
129 - Many more expressions are supported in Direct3D 10 effects.
131 - Cubemap projection is implemented in the D3DX 9 helper library.
134 *** Audio / Video
136 - The MPEG-1 audio decoder filter for layers 1 and 2, and the separate filter for
137   layer 3, are both implemented on top of GStreamer.
139 - The ASF reader filter is implemented.
141 - The OpenAL32.dll wrapper library is removed, in favor of the native
142   OpenAL32.dll library shipped by Windows applications.
145 *** Media Foundation
147 - Content type resolution is improved in the Media Foundation Player.
149 - Rate control is implemented.
151 - The Enhanced Video Renderer default mixer and presenter are better supported.
153 - The DirectShow filter is implemented in the Enhanced Video Renderer.
155 - An initial framework is implemented for the Writer encoding API.
157 - The topology loader is better supported.
160 *** Input devices
162 - Controller hotplug support is greatly improved, and controller removal and
163   insertion are correctly dispatched to applications.
165 - Driving wheel device detection and reporting is better implemented, using the
166   SDL library and HID usages as hints for the device types.
168 - Force feedback effect support is improved, specifically with driving wheel
169   controllers.
171 - The HID Haptics specification is used for left / right motor rumble and trigger
172   rumble. It makes it possible for device drivers to expose haptics support over
173   HidRaw, and overcome EvDev limitations.
175 - The Joystick Control Panel is redesigned, with new graphics and a dedicated
176   view for XInput gamepads.
178 - Sony DualShock and DualSense controllers are supported when the hidraw backend
179   is used, and exposed to applications in the same way as they are on Windows.
181 - The Windows.Gaming.Input module is introduced, one of the first WinRT modules
182   in Wine, implementing a new programming interface to access gamepads, joysticks
183   and driving wheel devices.  For this new input API, hotplug notifications are
184   also implemented, as well as force feedback effects and haptics. This API is
185   the first one to support trigger rumble.
188 *** Internationalization
190 - A proper locale database, in Windows locale.nls format, is generated from the
191   Unicode CLDR database. The list of supported locales is essentially identical
192   to that of the latest Windows version.
194 - Unicode string comparison is based on the Windows Sortkey database and
195   algorithms instead of the Unicode Collation Algorithm, yielding more compatible
196   results.
198 - Characters from high Unicode planes (in UTF-16 encoding) are supported in most
199   functions, in particular for case mappings, BiDi formatting, and character
200   shaping.
202 - The UTF-8 encoding is supported as Ansi codepage. It is enabled when requested
203   by the application's manifest.
205 - Unicode character tables are based on version 15.0.0 of the Unicode Standard.
207 - The timezone data is generated from the IANA timezone database version 2022g.
210 *** Text and fonts
212 - Font linking is enabled for most system fonts, which should fix missing glyphs
213   in CJK locales.
215 - Font fallback in DirectWrite is reworked, with additional support for an large
216   number of scripts.
219 *** Kernel
221 - The ApiSetSchema database is implemented, replacing all the api-ms-* forwarding
222   modules. This reduces both disk space and address space usage.
224 - DOS file attributes are persistent, and stored on disk using the filesystem's
225   extended attributes, in a format compatible with Samba.
228 *** Internet and networking
230 - The Online Certificate Status Protocol (OCSP) is implemented.
232 - More EcmaScript features are supported in JScript standard-compliant mode.
234 - The JScript garbage collector is implemented.
236 - Accessibility support is enabled in Wine Gecko package.
238 - Web Storage, Performance object and more event objects are implemented in
239   MSHTML.
242 *** Mono / .NET
244 - The Mono engine is updated to version 7.4.0. The list of changes can be viewed
245   at https://github.com/madewokherd/wine-mono/releases/tag/wine-mono-7.4.0
248 *** Builtin applications
250 - All the builtin applications use Common Controls version 6, which enables
251   theming and high-DPI rendering by default.
253 - The Wine Debugger (winedbg) prints thread names in the 'info thread' listing,
254   for applications that set the names of their threads. All internal Wine threads
255   also set their own name.
257 - The QWORD type is supported in the REGEDIT and REG registry tools.
259 - Notepad has a status bar displaying the current cursor position. The Goto Line
260   functionality is also implemented.
262 - The builtin console programs print data in the OEM codepage, for better
263   compatibility with applications reading their output.
265 - The Service Control tool (sc.exe) supports the 'query' command.
268 *** Development tools
270 - The PE conversion has made it necessary to implement a new mechanism to run
271   static C++ constructors in Winelib ELF applications. Unfortunately, this
272   requires the corresponding modules to be rebuilt with Wine 8.0.  The rebuilt
273   modules will still run correctly on older Wine versions, but older modules will
274   no longer execute static constructors when run on Wine 8.0.
276 - In regression tests, individual checks can be marked as "flaky". This is useful
277   for checks that depend on external factors such as network timings. The errors
278   are still reported but not counted as failures.
280 - Test failure messages can be printed in color by setting the WINETEST_COLOR
281   environment variable, to make them easier to spot in the test log.
283 - The Resource Compiler (WRC) and Message Compiler (WMC) use the locale.nls
284   database to detect languages and codepages, and thus support all the Windows
285   locales.
287 - The WineDump tool supports printing the contents of Enhanced Metafile spool
288   files, as well as more contents from PDB files.
291 *** Build infrastructure
293 - PE binaries can be built for multiple architectures from the same build tree,
294   using the '--enable-archs' option to configure, for example
295   '--enable-archs=i386,x86_64'. This can be used to enable the experimental
296   WoW64 mode, where 32-bit applications can run without any 32-bit host
297   libraries. Note that this mode is still under development and not yet
298   recommended for general use.
300 - Data types that are defined as 'long' on Windows are defined as 'long' instead
301   of 'int' on all platforms with a 32-bit long type. This is more compatible, but
302   it can cause printf format warnings with Unix compilers. In Winelib code, it
303   can be disabled by defining WINE_NO_LONG_TYPES.
305 - Import libraries can be generated without using dlltool, by passing the
306   '--without-dlltool' option to winebuild. This is used to avoid dlltool bugs
307   with delay import libraries.
309 - Libraries that contain only resources and no code can be built with the
310   '--data-only' option to winegcc, which makes them smaller and more efficient to
311   load.
314 *** Bundled libraries
316 - Faudio is updated to the upstream release 22.11.
318 - LCMS2 is updated to the upstream release 2.14.
320 - LibJPEG is updated to the upstream release 9e.
322 - LibMPG123 is updated to the upstream release 1.31.1.
324 - LibPng is updated to the upstream release 1.6.39.
326 - LibTiff is updated to the upstream release 4.4.0.
328 - LibXml2 is updated to the upstream release 2.10.3.
330 - LibXslt is updated to the upstream release 1.1.37.
332 - Zlib is updated to the upstream release 1.2.13.
335 *** Platform-specific features
337 - The experimental WoW64 architecture is supported on macOS versions from 10.15.
339 - 64-bit time_t is supported on 32-bit Linux with recent Glibc versions.
341 - Exception unwinding on ARM platforms is extended with EHABI support on ARM32
342   and Dwarf support on ARM64.
345 *** Miscellaneous
347 - RSA encryption and the RSA-PSS signing algorithm are implemented.
349 - An initial version of the UI Automation API is implemented.
351 - Function name demangling supports various C++11 features.
354 *** External dependencies
356 - The vkd3d and LDAP libraries are bundled in the source tree and built as
357   PE. The corresponding Unix libraries are no longer needed.
359 - The OpenAL library is no longer used.