1 The Wine development release 9.4 is now available.
3 What's new in this release:
4 - Bundled vkd3d upgraded to version 1.11.
5 - Initial OpenGL support in the Wayland driver.
6 - Support for elevating process privileges.
7 - More HID pointer improvements.
10 The source is available at <https://dl.winehq.org/wine/source/9.x/wine-9.4.tar.xz>
12 Binary packages for various distributions will be available
13 from <https://www.winehq.org/download>
15 You will find documentation on <https://www.winehq.org/documentation>
17 Wine is available thanks to the work of many people.
18 See the file [AUTHORS][1] for the complete list.
20 [1]: https://gitlab.winehq.org/wine/wine/-/raw/wine-9.4/AUTHORS
22 ----------------------------------------------------------------
24 ### Bugs fixed in 9.4 (total 25):
26 - #11629 Add optional start menu and taskbar to explorer
27 - #24812 Explorer++ 1.2: right-click menu (in the main listview) degrades to nothing when opened multiple times
28 - #34319 Total Commander 8.x: Context menu does not contain 'paste' entry
29 - #34321 Total Commander 8.x: cut/copy/paste keyboard shortcuts don't work
30 - #34322 Total Commander 8.x: 'cut' works like 'copy'
31 - #44797 Visio 2003 does not read the complete list of fonts present in the system.
32 - #46773 Skype 4 MSI installer fails to create trigger for task using Task Scheduler (unimplemented type 7, TASK_TRIGGER_REGISTRATION)
33 - #48110 Multiple .NET 4.x applications need TaskService::ConnectedUser property (Toad for MySQL Freeware 7.x, Microsoft Toolkit from MS Office 2013)
34 - #48344 Luminance HDR / qtpfsgui 2.6.0: Empty file select dialog
35 - #49877 Minecraft Education Edition shows error during install: Fails to create scheduled task
36 - #52213 Thread crashes when pthread_exit is called in a SIGQUIT handler
37 - #55487 winpcap: pcap_dispatch doesn't capture anything with count argument -1
38 - #55619 VOCALOID AI Shared Editor v.6.1.0 crashes with System.Management.ManagementObject object construction
39 - #55724 mfmediaengine:mfmediaengine sometimes gets a threadpool assertion in Wine
40 - #55821 Desktop Window Manager crashes when launching a WPF app
41 - #56147 Real time Receiving data freezes for 1-5 seconds
42 - #56271 Free Download Manager no longer works after it updated (stuck at 100% CPU, no visible window)
43 - #56299 imm32.dll: CtfImmIsGuidMapEnable could not be located in the dynamic link library
44 - #56334 Page fault when querying dinput8_a_EnumDevices
45 - #56337 battle.net: tray icon is not displayed with wine-9.2
46 - #56345 EA app installer has no text
47 - #56357 Zero sized writes using WriteProcessMemory succeed on Windows, but fail on Wine.
48 - #56360 FoxVox window is rendered as a blank surface instead of expected user interface
49 - #56388 Regression: Fullscreen apps show on wrong monitor and don't respond to mouse events properly
50 - #56401 Some ARM unwinding testcases broken by "ntdll: Use the correct structure for non-volatile registers"
52 ### Changes since 9.3:
55 qwave: Add QOSCloseHandle() stub.
56 qwave: Add tests for QOSCloseHandle().
57 msvcrt: Handle wide specifiers option in __stdio_common_vfscanf().
59 Alexandre Julliard (59):
60 ntdll: Add a wrapper macro for ARM64EC syscalls.
61 win32u: Add a wrapper macro for ARM64EC syscalls.
62 include: Add SEH information to ARM64EC syscalls.
63 ntdll: Add SEH information to ARM64EC breakpoints.
64 winebuild: Remove some no longer used support for ELF ARM platforms.
65 wow64: Update Wow64RaiseException behavior to match i386 hardware exceptions.
66 wow64: Use a .seh handler for the simulation loop.
67 ntdll: Always use .seh handlers on ARM.
68 ntdll: Use a .seh handler in DbgUiRemoteBreakin on ARM64EC.
69 ntdll: Use a .seh handler in RtlUserThreadStart on ARM64EC.
70 ntdll: Implement RtlCaptureContext on ARM64EC.
71 ntdll: Use the exported structures for dll redirection data.
72 ntdll: Move RtlHashUnicodeString constants to a public header.
73 ntdll: Remove no longer needed definitions from the private header.
74 winedump: Print the correct register names for exception info on ARM64.
75 ntdll: Use the official definitions for exception flags.
76 kernelbase: Use the official definitions for exception flags.
77 krnl386.exe: Use the official definitions for exception flags.
78 msvcp90: Use the official definitions for exception flags.
79 msvcrt: Use the official definitions for exception flags.
80 win32u: Use the official definitions for exception flags.
81 winecrt0: Use the official definitions for exception flags.
82 wow64: Use the official definitions for exception flags.
83 winedbg: Use the official definitions for exception flags.
84 widl: Use the official definitions for exception flags.
85 include: Remove the private definitions of the exception flags.
86 include: Move unwinding functions definitions to rtlsupportapi.h.
87 ntdll: Implement RtlVirtualUnwind2.
88 ntdll/tests: Use a proper handler in the RtlRaiseException test on x86-64.
89 ntdll: Implement RtlRaiseException on ARM64EC.
90 kernelbase: Implement RaiseException on ARM64EC.
91 qwave/tests: Remove todo from a succeeding test.
92 ntdll: Port the RtlRaiseException test to ARM64.
93 ntdll: Port the RtlRaiseException test to ARM.
94 ntdll: Always use SEH support on ARM.
95 ntdll: Use the correct structure for non-volatile registers on ARM64.
96 ntdll: Use the correct structure for non-volatile registers on ARM.
97 ntdll: Also copy non-volatile regs on collided unwind.
98 ntdll: Use a common wrapper to call exception handlers on ARM64.
99 ntdll: Use a common wrapper to call exception handlers on ARM.
100 ntdll: Use a common wrapper to call unwind handlers on ARM64.
101 ntdll: Use a common wrapper to call unwind handlers on ARM.
102 ntdll: Allocate the data structure and stack for the ARM64EC emulator.
103 ntdll: Implement exception dispatching on ARM64EC.
104 ntdll: Implement KiUserExceptionDispatcher on ARM64EC.
105 vkd3d: Import upstream release 1.11.
106 ntdll: Use jump buffer definitions from setjmp.h.
107 ntdll: Export _setjmpex.
108 ntdll: Export longjmp.
109 ntdll: Implement _setjmpex on ARM64EC.
110 d3d10_1/tests: Mark a failing test as todo.
111 d3dx9/tests: Mark failing tests as todo.
112 ntdll: Don't copy a missing context in get_thread_context().
113 ntdll: Remove a misleading WARN.
114 ntdll: Support the __os_arm64x_helper functions in the loader.
115 winedump: Dump the __os_arm64x_helper functions.
116 include: Always use _setjmpex on non-i386 platforms.
117 msvcrt: Import setjmp/setjmpex from ntdll.
118 msvcrt: Import longjmp from ntdll for PE builds.
120 Alexandros Frantzis (11):
121 winex11.drv: Remove unused refresh_drawables field.
122 winewayland.drv: Add skeleton OpenGL driver.
123 winewayland.drv: Initialize core GL functions.
124 winewayland.drv: Implement wglGetExtensionsString{ARB,EXT}.
125 winewayland.drv: Implement wglGetProcAddress.
126 winewayland.drv: Implement wglDescribePixelFormat.
127 winewayland.drv: Implement wglSetPixelFormat(WINE).
128 winewayland.drv: Implement OpenGL context creation.
129 winewayland.drv: Implement wglMakeCurrent and wglMakeContextCurrentARB.
130 winewayland.drv: Implement wglSwapBuffers.
131 winewayland.drv: Handle resizing of OpenGL content.
134 po: Update Lithuanian translation.
137 mshtml: Pass DOMEvent instead of nsIDOMEvent during handle_event.
138 mshtml: Use generic event dispatcher for DOMContentLoaded.
139 mshtml/tests: Add test for document mode after InitNew and Load.
140 mshtml: Always use the event target dispex.
141 mshtml: Don't handle special case when doc != node->doc.
144 ntdll: Add native thread renaming for FreeBSD.
145 quartz: Set the name of internal threads.
148 webservices/tests: Fix -Warray-bounds warning on gcc 13.2.0.
149 d3dx9/tests: Add more tests for misaligned compressed surface loading.
150 d3dx9: Use base image pointer when decompressing source image.
151 d3dx9: Split D3DXLoadSurfaceFromMemory functionality into a separate function.
152 d3dx9: Split off image decompression into a helper function.
153 d3dx9: Preserve the contents of unaligned compressed destination surfaces.
156 oleaut32/tests: Add tests for IPersistStream::GetSizeMax.
157 oleaut32: Implement GetSizeMax for empty picture.
158 oleaut32: Implement GetSizeMax for BMPs.
159 ole32: Do not lock storage in read-only deny-write mode.
160 ole32/tests: Remove todo from lock tests.
163 mmdevapi/tests: Add test for AudioClient3_InitializeSharedAudioStream.
164 mmdevapi: Implement IAudioClient3_InitializeSharedAudioStream.
165 mmdevapi: Implement IAudioClient3_GetSharedModeEnginePeriod.
166 mmdevapi/tests: Add test for IDeviceTopology.
167 mmdevapi: Add stub for IDeviceTopology.
170 server: Allow 0-write length in WriteProcessMemory().
171 dbghelp/tests: Add tests for image files lookup.
172 dbghelp/tests: Add tests for SymFindFileInPath for pdb files.
173 dbghelp/tests: Add tests about SymLoadModule and finding pdb files.
174 dbghelp: Don't fail on loading 64bit modules on 32bit applications.
175 dbghelp: Don't search the passed path in SymFindFileInPath.
176 dbghelp/tests: Add more tests for SymLoadModule*.
177 dbghelp: Always use SymGetSrvIndexFileInfo() for files lookup.
178 dbghelp: Rework loading of PDB string table.
179 dbghelp: Get rid of struct pdb_lookup.
180 dbghelp: Return matched information for path_find_symbol_file.
181 dbghelp: Search subdirectories in element path.
182 dbghelp: Relax failure conditions.
183 dbghelp: Change order when trying to load modules.
184 dbghelp: Mimic native behavior for module name.
185 dbghelp: Fix some corner case of virtual module loading.
186 dbghelp/tests: Extend the tests for SymLoadModule().
187 dbghelp: Support SLMFLAG_NO_SYMBOLS in SymLoadModuleEx*().
188 dbghelp: Don't fail in SymAddSymbol for modules without debug information.
189 dbghelp: Fixed module information when unmatched pdb file is loaded.
192 gdiplus: Switch to a struct for gdip_format_string callback args.
193 gdiplus: Pass gdip_format_string_info to font link functions.
194 gdiplus: Restore hdc argument to gdip_format_string.
195 gdiplus: Fix crash in GdipAddPathString.
196 gdiplus: Fix use after free in GdipAddPathString.
197 gdiplus: Implement font linking in GdipAddPathString.
198 mscoree: Implement CLRRuntimeHost_Start.
201 win32u: Move get_awareness_from_dpi_awareness_context.
202 win32u: Refactor get_thread_dpi_awareness to use get_awareness_from_dpi_awareness_context.
203 user32/tests: Add exhaustive tests for Get/SetThreadDpiAwarenessContext.
204 user32: Fix Set/GetThreadDpiAwarenessContext for DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2.
205 user32/tests: Add tests for AreDpiAwarenessContextsEqual.
206 user32: Fix AreDpiAwarenessContextsEqual behavior for DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2.
207 win32u: Sync dpi awareness changes from user32.
210 include: Add TCP_KEEPCNT and TCP_KEEPINTVL definitions.
211 ws2_32/tests: Test TCP_KEEP{ALIVE,CNT,INTVL} options.
212 ws2_32: Implement TCP_KEEP{ALIVE,CNT,INTVL} options.
214 Gabriel Ivăncescu (1):
215 winex11: Set the correct visual even if alpha matches.
218 netprofm: Support NLM_ENUM_NETWORK flags.
219 netprofm: Set return pointer to NULL in networks_enum_Next().
220 wbemprox: Handle implicit property in object path.
221 netprofm/tests: Mark a test result as broken on Windows 11.
222 wbemprox: Use separate critical sections for tables and table list.
225 wined3d: Pass "shader->function" as source to vkd3d_shader_scan() in shader_spirv_scan_shader().
226 wined3d: Slightly adjust an ERR in shader_spirv_compile_shader().
229 configure: Disable -Wmisleading-indentation warnings on GCC.
230 vcomp/tests: Use limits.h macros in for_static_i8_cb.
231 winebuild: Output load config on PE targets.
232 winevulkan: Update to VK spec version 1.3.278.
233 winevulkan: Remove no longer needed spec workarounds.
234 winevulkan: Rename wine_device_memory mapping to vm_map.
235 winevulkan: Use handle map for memory objects.
236 winevulkan: Refactor extra extensions handling in wine_vk_device_convert_create_info.
237 winevulkan: Use VK_EXT_map_memory_placed for memory mapping on wow64.
240 arm64: Expose information about more modern CPU extensions.
243 wine.inf: Register the New menu as a directory background context menu handler.
246 d3dcompiler: Enable semantic names mapping in compatibility mode.
247 d3d10_1/tests: Add a basic test for returned preferred profiles.
248 d3d10_1/tests: Add an effect compilation test using 10.1 features.
251 comctl32/tests: Fix test that fails on Feb 29th.
254 nsiproxy.sys: Fix ipv6 route table parsing on Linux.
255 iphlpapi: Partially fill Ipv4 / Ipv6 metric in GetAdaptersAddresses().
256 wbemprox: Force debug info in critical sections.
257 wmwcore: Force debug info in critical sections.
258 browseui: Force debug info in critical sections.
259 itss: Force debug info in critical sections.
260 mmdevapi: Force debug info in critical sections.
261 ntdll: Mind context compaction mask in context_from_server().
262 ntdll: Don't copy xstate from / to syscall frame in usr1_handler().
263 ntdll: Support generic xstate config in context manipulation functions.
264 msvcp: Force debug info in critical sections.
265 msvcrt: Force debug info in critical sections.
266 netapi32: Force debug info in critical sections.
267 rsaenh: Force debug info in critical sections.
268 wined3d: Force debug info in critical sections.
269 kernelbase: Use KEY_WOW64_64KEY flag when 64 bit registry access is assumed.
270 mciavi32: Force debug info in critical sections.
271 winmm: Force debug info in critical sections.
272 winebus.sys: Force debug info in critical sections.
273 windows.security.credentials.ui.userconsentverifier: Force debug info in critical sections.
274 amstream: Avoid leaking critical section debug info in filter_Release().
275 amstream: Force debug info in critical sections.
276 winexinput.sys: Force debug info in critical sections.
277 comctl32: Force debug info in critical sections.
278 mcicda: Force debug info in critical sections.
279 ole32: Force debug info in critical sections.
280 qcap: Force debug info in critical sections.
281 ntdll: Respect red zone in usr1_handler() on x64.
282 quartz: Force debug info in critical sections.
283 urlmon: Force debug info in critical sections.
284 winegstreamer: Force debug info in critical sections.
285 wmiutil: Force debug info in critical sections.
286 windows.gaming.input: Force debug info in critical sections.
287 windows.media.speech: Force debug info in critical sections.
290 winevulkan: Update to VK spec version 1.3.279.
293 wininet: Fix memory leak when loading proxy information.
296 win32u: Introduce new NtUserSwitchDesktop syscall stub.
297 server: Keep track of the winstation input desktop.
298 server: Send hardware input to the visible input desktop.
299 server: Keep a list of threads connected to each desktop.
300 server: Keep a list of processes that can receive rawinput messages.
301 server: Dispatch rawinput messages using the rawinput process list.
302 winevulkan: Remove unnecessary WINEVULKAN_QUIRK_ADJUST_MAX_IMAGE_COUNT quirk.
303 winevulkan: Succeed VK_KHR_win32_surface procs queries when enabled.
304 winex11: Remove now unnecessary vulkan function name mapping.
305 winemac: Remove now unnecessary vulkan function name mapping.
306 winewayland: Remove now unnecessary vulkan function name mapping.
307 winex11: Remove unnecessary X11DRV_get_vk_* helpers.
308 winemac: Remove unnecessary macdrv_get_vk_* helper.
309 winex11: Remove unnecessary vkDestroySurfaceKHR NULL checks.
310 winemac: Remove unnecessary vkDestroySurfaceKHR NULL checks.
311 winewayland: Remove unnecessary vkDestroySurfaceKHR NULL checks.
312 mfreadwrite/reader: Split source_reader_create_decoder_for_stream helper.
313 mf/topology_loader: Only propagate some media type attributes.
314 mfreadwrite/reader: Call SetOutputType directly on the decoder transform.
315 mfreadwrite/reader: Keep the stream transforms in a list.
316 mfreadwrite/reader: Create and append a converter transform.
317 mfreadwrite/reader: Implement IMFSourceReaderEx_GetTransformForStream.
318 mfreadwrite/reader: Adjust min_buffer_size to be 1s of audio data.
319 win32u: Use NtUserCallHwndParam interface for __wine_send_input.
320 win32u: Use a custom struct hid_input for NtUserSendHardwareInput.
321 dinput/tests: Test the WM_POINTER* message parameter values.
322 mouhid.sys: Send WM_POINTER* messages on contact updates.
323 server: Add support for sending and receiving WM_POINTER* messages.
324 win32u: Add support for sending and receiving WM_POINTER* messages.
325 win32u: Use char array for the device manager context gpuid.
326 win32u: Simplify adapter key path creation from gpu_guid.
327 win32u: Remove unused wine_devpropkey_monitor_adapternameW property.
328 win32u: Use REG_SZ instead of REG_BINARY for some adapter keys.
329 win32u: Remove unnecessary class_guidW double check.
330 win32u: Use set_reg_ascii_value whenever possible.
331 win32u: Introduce and use new reg_(open|create)_ascii_key helpers.
332 winex11: Support XInput2 events on individual windows.
333 winex11: Select XI_Touch* input and translate it to WM_POINTER*.
334 server: Stop waiting on LL-hooks for non-injected input.
335 server: Generate WM_POINTERENTER / WM_POINTERLEAVE messages.
336 server: Continuously send pointer update messages while it's down.
337 server: Send emulated mouse messages on primary pointer updates.
338 win32u: Keep a reference on the adapters gpu.
339 win32u: Load gpus from registry before adapters.
340 win32u: Lookup adapter gpus from their device paths.
341 win32u: Enumerate devices with a dedicated helper.
342 win32u: Split read / write of gpu to registry to separate helpers.
343 win32u: Keep the vulkan GUID on the gpu structure.
344 server: Remove desktop from their winstation list before looking for another input desktop.
347 sapi: Implement ISpeechVoice::{get/put}_Volume.
348 sapi: Implement ISpeechVoice::{get/putref}_Voice.
351 oleaut32: Use scientific notation if it prevents a loss of accuracy.
354 winemac.drv: Exclude the emoji Touch Bar when looking for input methods.
355 win32u: Don't mask keyboard scan codes when processing them for IME.
356 winebus.sys: Only attempt to open joysticks and gamepads in the IOHID backend.
358 Vijay Kiran Kamuju (7):
359 taskschd: Implement ITaskService_get_ConnectedUser.
360 taskschd: Return success from Principal_put_RunLevel.
361 include: Add IRegistrationTrigger definition.
362 taskschd: Add IRegistrationTrigger stub implementation.
363 taskschd: Implement IRegistrationTrigger_putEnabled.
364 taskschd: Implement IRegistrationTrigger_getEnabled.
365 taskschd: Implement TaskService_get_ConnectedDomain.
368 dmband: Move band.c to dmusic.
369 dmime: Better MIDI parsing interface.
370 dmime: Parse MIDI program change events and generate a bandtrack.
371 dmime: Add a stub chordtrack for MIDI segments.
372 dmime: Use linked list for tempotrack.
373 dmime: Implement setting TempoParam for tempotracks.
374 dmime: Parse MIDI Set Tempo meta events and generate a tempotrack.
375 dmime/tests: Call the correct QueryInterface function for DirectMusic track.
376 dmime: Parse note on/off events and generate a seqtrack.
377 dmime: Handle MIDI control events in MIDI files.
379 Zebediah Figura (47):
380 shell32: Also zero-initialize the background menu.
381 wined3d/atifs: Move TEXTUREFACTOR constant loading to arbfp_apply_draw_state().
382 wined3d/atifs: Move texture constant loading to arbfp_apply_draw_state().
383 wined3d/atifs: Move FFP bumpenv constant loading to atifs_apply_draw_state().
384 wined3d/atifs: Move fragment program compilation from set_tex_op_atifs() to atifs_apply_draw_state().
385 shell32: Stub CLSID_NewMenu.
386 shell32: Stub IContextMenu3 on the New menu.
387 shell32: Stub IObjectWithSite on the New menu.
388 shell32: Return an initial "New" menu.
389 wine.inf: Add ShellNew registry entries for Folder.
390 shell32: Enumerate the ShellNew key for Folder.
391 shell32: Implement InvokeCommand() for the new menu.
392 shell32/tests: Add a few more tests for the New menu.
393 msi/tests: Expand costing tests.
394 msi: Round costs up to 4096 bytes instead of clamping.
395 msi: Store component cost in 512-byte units.
396 msi: Multiply by 512 in dialog_vcl_add_drives().
397 shell32: Elevate the child process for the "runas" verb.
398 wine.inf: Set the EnableLUA value to 1.
399 msi: Create the custom action server as an elevated process.
400 shell32/tests: Add tests for context menu copy/paste.
401 shell32: Remove useless and commented out code.
402 shell32: Move DoPaste() up.
403 shell32: Add a get_data_format() helper.
404 shell32: Reimplement pasting from CF_DROP directly.
405 shell32: Respect the parent PIDL when pasting from CFSTR_SHELLIDLIST.
406 shell32: Implement Paste in the item menu.
407 wined3d/nvrc: Move TEXTUREFACTOR constant loading to nvrc_apply_draw_state().
408 wined3d/nvrc: Move FFP bumpenv constant loading to nvrc_apply_draw_state().
409 wined3d/nvrc: Move color ops from nvrc_colorop() to nvrc_apply_draw_state().
410 wined3d/nvrc: Remove now redundant STATE_SAMPLER handlers.
411 wined3d/nvrc: Move alpha op application to nvrc_apply_draw_state().
412 wined3d/nvrc: Remove now redundant WINED3D_TSS_RESULT_ARG handlers.
413 mciwave: Abort the playback thread regardless of state when stopping.
414 shell32/tests: Add more tests for IDataObject.
415 shell32: Do not interpret the direction in IDataObject::EnumFormatEtc().
416 shell32: Reimplement the data object to store a generic array of HGLOBALs.
417 shell32: Implement IDataObject::SetData().
418 shell32: Reimplement pasting from a CIDA without ISFHelper.
419 shell32: Remove the no longer used ISFHelper::CopyItems() helper.
420 shell32: Set the drop effect from the context menu.
421 shell32: Respect the drop effect in do_paste().
422 shell32: Fix a test failure in test_DataObject().
423 winetest: Elevate test processes on Wine.
424 ntdll: Implement NtSetInformationProcess(ProcessAccessToken).
425 ntdll: Elevate processes if requested in the manifest.
426 server: Create processes using a limited administrator token by default.
429 Revert "winex11.drv: Handle X error from vkGetRandROutputDisplayEXT()."
430 rtworkq: Avoid closing a thread pool object while its callbacks are running.
431 rtworkq: Avoid possible scenarios that an async callback could be called twice.
432 advapi32: Check NULL return key pointers when creating registry keys.
433 advapi32/tests: Test creating registry keys with a NULL return key pointer.
434 user32/tests: Add some ReleaseCapture() tests.
435 win32u: Only send mouse input in ReleaseCapture() when a window is captured.
438 mf/tests: Test AvgTimePerFrame for WMV decoder DMO.
439 winegstreamer: Set AvgTimePerFrame in GetOutputType() for WMV decoder.