oleaut32: Implement OleLoadPictureFile.
[wine.git] / ANNOUNCE.md
blobe60a548adb191a7d8ed184f04211b9e926a18bd1
1 The Wine team is proud to announce that the stable release Wine 9.0
2 is now available.
4 This release represents a year of development effort and over 7,000
5 individual changes. It contains a large number of improvements that
6 are listed below. The main highlights are the new WoW64 architecture
7 and the experimental Wayland driver.
9 The source is available at <https://dl.winehq.org/wine/source/9.0/wine-9.0.tar.xz>
11 Binary packages for various distributions will be available
12 from <https://www.winehq.org/download>
14 You will find documentation on <https://www.winehq.org/documentation>
16 Wine is available thanks to the work of many people.
17 See the file [AUTHORS][1] for the complete list.
19 [1]: https://gitlab.winehq.org/wine/wine/-/raw/wine-9.0/AUTHORS
22 ## What's new in Wine 9.0
24 ### WoW64
26 - All transitions from Windows to Unix code go through the NT syscall
27   interface. This is a major milestone that marks the completion of the
28   multi-year re-architecturing work to convert modules to PE format and
29   introduce a proper boundary between the Windows and Unix worlds.
31 - All modules that call a Unix library contain WoW64 thunks to enable calling
32   the 64-bit Unix library from 32-bit PE code. This means that it is possible to
33   run 32-bit Windows applications on a purely 64-bit Unix installation. This is
34   called the _new WoW64 mode_, as opposed to the _old WoW64 mode_ where 32-bit
35   applications run inside a 32-bit Unix process.
37 - The new WoW64 mode is not yet enabled by default. It can be enabled by passing
38   the `--enable-archs=i386,x86_64` option to configure. This is expected to work
39   for most applications, but there are still some limitations, in particular:
40   - Lack of support for 16-bit code.
41   - Reduced OpenGL performance and lack of `ARB_buffer_storage` extension
42     support.
44 - The new WoW64 mode finally allows 32-bit applications to run on recent macOS
45   versions that removed support for 32-bit Unix processes.
48 ### Wayland driver
50 - There is an experimental Wayland graphics driver. It's still a work in
51   progress, but already implements many features, such as basic window
52   management, multiple monitors, high-DPI scaling, relative motion events, and
53   Vulkan support.
55 - The Wayland driver is not yet enabled by default. It can be enabled through
56   the `HKCU\Software\Wine\Drivers` registry key by running:
58       wine reg.exe add HKCU\\Software\\Wine\\Drivers /v Graphics /d x11,wayland
60   and then making sure that the `DISPLAY` environment variable is unset.
63 ### ARM64
65 - The completion of the PE/Unix separation means that it's possible to run
66   existing Windows binaries on ARM64.
68 - The loader supports loading ARM64X and ARM64EC modules.
70 - The 32-bit x86 emulation interface is implemented. No emulation library is
71   provided with Wine at this point, but an external library that exports the
72   interface can be used, by specifying its name in the
73   `HKLM\Software\Microsoft\Wow64\x86` registry key. The [FEX emulator][2]
74   implements this interface when built as PE.
76 - There is initial support for building Wine for the ARM64EC architecture, using
77   an experimental LLVM toolchain. Once the toolchain is ready, this will be used
78   to do a proper ARM64X build and enable 64-bit x86 emulation.
80 [2]: https://fex-emu.com
83 ### Graphics
85 - The PostScript driver is reimplemented to work from Windows-format spool files
86   and avoid any direct calls from the Unix side.
88 - WinRT theming supports a dark theme option, with a corresponding toggle in
89   WineCfg.
91 - The Vulkan driver supports up to version 1.3.272 of the Vulkan spec.
93 - A number of GdiPlus functions are optimized for better graphics performance.
96 ### Direct3D
98 - The multi-threaded command stream sleeps instead of spinning when not
99   processing rendering commands. This lowers power consumption in programs which
100   do not occupy the command stream's entire available bandwidth. Power
101   consumption should be comparable to when the multi-threaded command stream is
102   disabled.
104 - Direct3D 10 effects support many more instructions.
106 - Various optimizations have been made to core WineD3D and the Vulkan backend.
108 - The Vulkan renderer properly validates that required features are supported by
109   the underlying device, and reports the corresponding Direct3D feature level to
110   the application.
112 - `D3DXFillTextureTX` and `D3DXFillCubeTextureTX` are implemented.
114 - The legacy OpenGL ARB shader backend supports shadow sampling via
115   `ARB_fragment_program_shadow`.
117 - The HLSL compiler supports matrix majority compilation flags.
119 - `D3DXLoadMeshHierarchyFromX` and related functions support user data loading
120   via `ID3DXLoadUserData`.
123 ### Audio / Video
125 - The foundation of several of the DirectMusic modules is implemented. Many
126   tests are added to validate the behavior of the dmime sequencer and the
127   dmsynth MIDI synthesizer.
129 - DLS1 and DLS2 sound font loading is implemented, as well as SF2 format for
130   compatibility with Linux standard MIDI sound fonts.
132 - MIDI playback is implemented in dmsynth, with the integration of the software
133   synthesizer from the FluidSynth library, and using DirectSound for audio
134   output.
136 - Doppler shift is supported in DirectSound.
138 - The Indeo IV50 Video for Windows decoder is implemented.
141 ### DirectShow
143 - The Windows Media Video (WMV) decoder DirectX Media Object (DMO) is
144   implemented.
146 - The DirectShow Audio Capture filter is implemented.
148 - The DirectShow MPEG‑1 Stream Splitter filter supports video and system streams
149   as well as audio streams.
151 - The DirectShow MPEG‑1 Video Decoder filter is implemented.
154 ### Input devices
156 - DirectInput action maps are implemented, improving compatibility with many old
157   games that use this to map controller inputs to in-game actions.
160 ### Desktop integration
162 - URL/URI protocol associations are exported as URL handlers to the Linux
163   desktop.
165 - Monitor information like name and model id are retrieved from the physical
166   monitor's Extended Display Identification Data (EDID).
168 - In full-screen desktop mode, the desktop window can be closed through the
169   "Exit desktop" entry in the Start menu.
172 ### Internationalization
174 - IME implementation is improved, with better support for native Windows IME
175   implementations. Many tests are added to validate the expected behavior of
176   these custom IMEs.
178 - Linux IME integration is improved, using over-the-spot or on-the-spot input
179   styles whenever possible, and more accurate IME message sequences.
181 - Locale data is generated from the Unicode CLDR database version 44. The
182   following additional locales are supported: `bew-ID`, `blo-BJ`, `csw-CA`,
183   `ie-EE`, `mic-CA`, `prg-PL`, `skr-PK`, `tyv-RU`, `vmw-MZ`, `xnr-IN`, and
184   `za-CN`.
186 - The user interface is translated to Georgian, bringing the total of full
187   translations to 16 languages, with partial translations to another 31
188   languages.
190 - Unicode character tables are based on version 15.1.0 of the Unicode Standard.
192 - The timezone data is generated from the IANA timezone database version 2023c.
194 - Locales using a script name, like `zh-Hans`, are also supported on macOS.
197 ### Kernel
199 - The default Windows version for new prefixes is set to Windows 10.
201 - Address space layout randomization (ASLR) is supported for modern PE binaries,
202   to avoid issues with address space conflicts. Note that the selected load
203   addresses are not yet properly randomized.
205 - The Low Fragmentation Heap (LFH) is implemented for better memory allocation
206   performance.
208 - The virtual memory allocator supports memory placeholders, to allow
209   applications to reserve virtual space.
211 - The 64-bit loader and preloader are built as position-independent executables
212   (PIE), to free up some of the 32-bit address space.
214 - Stack unwinding works correctly across NT syscalls and user callbacks.
217 ### Internet and networking
219 - All builtin MSHTML objects are proper Gecko cycle collector participants.
221 - Synchronous XMLHttpRequest mode is supported in MSHTML.
223 - WeakMap object is implemented in JScript.
225 - The Gecko engine is updated to version 2.47.4.
227 - Network interface change notifications are implemented.
230 ### Cryptography and security
232 - Smart cards are supported in the Winscard dll, using the Unix PCSClite
233   library.
235 - Diffie-Hellman keys are supported in BCrypt.
237 - The Negotiate security package is implemented.
240 ### Mono / .NET
242 - The Mono engine is updated to version [8.1.0][3].
244 [3]: https://github.com/madewokherd/wine-mono/releases/tag/wine-mono-8.1.0
247 ### Builtin applications
249 - The Wine Debugger (winedbg) uses the Zydis library for more accurate x86
250   disassembly.
252 - WineCfg supports selecting old (pre-XP) Windows versions also in 64-bit
253   prefixes, to enable using ancient applications with the new WoW64 mode.
255 - All graphical builtin applications report errors with a message box instead of
256   printing messages on the console.
258 - The `systeminfo` application prints various data from the Windows Management
259   Instrumentation database.
261 - The `klist` application lists Kerberos tickets.
263 - The `taskkill` application supports terminating child processes.
265 - The `start` application supports a `/machine` option to select the
266   architecture to use when running hybrid x86/ARM executables.
268 - Most of the functionality of the `tasklist` application is implemented.
270 - The `findstr` application provides basic functionality.
273 ### Development tools
275 - The WineDump tool supports printing the contents of Windows registry files
276   (REGF format), as well as printing data for both architectures in hybrid
277   x86/ARM64 PE files.
278   
279 - The `composable`, `default_overload`, `deprecated`, and `protected` attributes
280   are supported in the IDL compiler.
282 - The `libwine.so` library is removed. It was no longer used, and deprecated
283   since Wine 6.0. Winelib ELF applications that were built with Wine 5.0 or
284   older will need a rebuild to run on Wine 9.0.
287 ### Bundled libraries
289 - The FluidSynth library version 2.3.3 is bundled and used for DirectMusic.
291 - The math library of Musl version 1.2.3 is bundled and used for the math
292   functions of the C runtime.
294 - The Zydis library version is 4.0.0 is bundled and used for x86 disassembly
295   support.
297 - Vkd3d is updated to the upstream release 1.10.
299 - Faudio is updated to the upstream release 23.12.
301 - LDAP is updated to the upstream release 2.5.16.
303 - LCMS2 is updated to the upstream release 2.15.
305 - LibMPG123 is updated to the upstream release 1.32.2.
307 - LibPng is updated to the upstream release 1.6.40.
309 - LibTiff is updated to the upstream release 4.6.0.
311 - LibXml2 is updated to the upstream release 2.11.5.
313 - LibXslt is updated to the upstream release 1.1.38.
315 - Zlib is updated to the upstream release 1.3.
318 ### External dependencies
320 - The Wayland client library, as well as the xkbcommon and xkbregistry
321   libraries, are used when building the Wayland driver.
323 - The PCSClite library is used for smart card support. On macOS, the PCSC
324   framework can be used as an alternative to PCSClite.
326 - For PE builds, a cross-compiler that supports `.seh` directives for exception
327   handling is required on all platforms except i386.