1 The Wine development release 8.10 is now available.
3 What's new in this release:
4 - All PE->Unix transitions go through the syscall interface.
5 - Mouse cursor clipping improvements.
6 - Support for virtual memory placeholders.
7 - Locale and timezone data updates.
10 The source is available at:
12 https://dl.winehq.org/wine/source/8.x/wine-8.10.tar.xz
14 Binary packages for various distributions will be available from:
16 https://www.winehq.org/download
18 You will find documentation on https://www.winehq.org/documentation
20 You can also get the current source directly from the git
21 repository. Check https://www.winehq.org/git for details.
23 Wine is available thanks to the work of many people. See the file
24 AUTHORS in the distribution for the complete list.
26 ----------------------------------------------------------------
28 Bugs fixed in 8.10 (total 13):
30 - #18889 Multiple isolation-aware applications fail to load (MSN Messenger Live 2009, Lync 2010, Adobe Premiere Pro CS3, Quicken 201X)(embedded PE manifest search should support ISOLATIONAWARE_MANIFEST_RESOURCE_ID)
31 - #24946 uTorrent 2.2.0 hangs on startup (FD_WRITE event is reported over and over in WSAEnumNetworkEvents for a bound UDP socket)
32 - #27827 Creo Elements/Direct Modeling Express 4.0/6.0 loader failure due to missing msvcrt.dll dependency (native netapi32.dll imports msvcrt functions)
33 - #47808 Cygwin's mintty.exe crashes with a stack overflow
34 - #52868 TwitchTest crashes on unimplemented function IPHLPAPI.DLL.GetPerTcpConnectionEStats
35 - #53092 Animated Puzzles crashes on start
36 - #54410 .NET 3.5 Checkbox checkmarks should be black instead of "Foreground" color
37 - #54599 Honeygain crashes on unimplemented function IPHLPAPI.DLL.GetCurrentThreadCompartmentId
38 - #54810 PmxEditor 0.2.7.5 doesn't start after Wine 8.4.
39 - #54913 ntdll: NtDuplicateToken has wrong prototype
40 - #54949 user32:msg gets an extra WM_NCPAINT in ShowWindow(child, SW_SHOW)
41 - #54991 Chinese IME no longer works in Naver LINE since Wine 8.9
42 - #55008 wininet:http - test_secure_connection() fails on Windows and Wine
44 ----------------------------------------------------------------
49 winex11: Ignore BadWindow errors caused by XConfigureWindow.
52 iphlpapi: Add GetCurrentThreadCompartmentId stub and a test.
53 iphlpapi: Add GetPerTcpConnectionEStats stub.
54 bcrypt/tests: Don't allocate inside todo_wine and free outside of it.
55 iphlpapi/tests: Use ~0u instead of ~0ul in testGetIpNetTable.
56 winegstreamer: Pass a QWORD pointer to IMFByteStream_GetLength.
57 wusa: Fix double free on error path in read_update_package (scan-build).
58 mscms: Fix double free on error path in EnumColorProfilesA (scan-build).
59 msi: Return ERROR_OUTOFMEMORY if calloc fails in TransformView_Create (scan-build).
60 msi: Make TransformView_Create static.
61 msi: Fix memory leak in ready_media (scan-build).
62 wbemprox: Fix memory leak on error path in create_view (scan-build).
63 jscript: Fix memory leak on error path in String_replace (scan-build).
64 jscript: Remove unnecessary call to malloc in strbuf_ensure_size.
65 conhost: Fix memory leak on error path in edit_line_move_to_history (scan-build).
66 localspl: Fix memory leak in lpr_start_doc (scan-build).
67 msvcrt: Use 'else if' in _wgetcwd.
68 wineusb: Fix memory leaks on error paths in usb_submit_urb (scan-build).
69 kerberos: Fix memory leaks in (wow64_)query_ticket_cache (scan-build).
70 dnsapi: Fix memory leak on error path in do_query_netbios (scan-build).
71 hhctrl: Fix memory leak on error path in resolve_filename (scan-build).
72 wldap32: Fix memory leak on error path in ldap_start_tls_sW (scan-build).
73 jscript: Fix memory leak on error path in regexp_string_match (scan-build).
74 vbscript: Fix memory leak on error path in RegExp2_Execute (scan-build).
75 wininet: Fix memory leaks on error paths in INTERNET_LoadProxySettings (scan-build).
76 vbscript: Fix memory leak on error path in alloc_vbscode (scan-build).
77 rpcrt4: Replace RPCRT4_strndupA with strdup.
78 winhttp: Fix double free on error path in queue_task (scan-build).
79 msi: Fix memory leak on error path in MSI_ProcessMessage (scan-build).
80 regedit: Fix memory leak on error path in GetItemPath (scan-build).
82 Alexandre Julliard (46):
83 include: Don't align the stack for PE builds.
84 ntdll: Use x18 for the TEB on ARM64.
85 ntdll: Use nameless unions/structs for loader data.
86 ntdll: Use nameless unions/structs for CPU-related data.
87 ntdll: Use nameless unions/structs for IO_STATUS_BLOCK.
88 include: Only enable the non-inline NtCurrentTeb() on the Unix side.
89 wineps: Don't use CDECL for private functions.
90 win32u: Don't use WINAPI for the font enumeration function.
91 win32u: Don't use WINAPI for private functions.
92 ntdll: Don't pass arguments on the stack for user callbacks on ARM64.
93 ntdll: Don't pass arguments on the stack for user callbacks on x86-64.
94 ntdll: Don't pass arguments on the stack for user callbacks on i386.
95 ntdll: Don't pass arguments on the stack for user callbacks on ARM.
96 ntdll: Don't use WINAPI for KeUserModeCallback().
97 ntdll: Store the PE function pointers as simple void pointers.
98 include: Only declare __wine_unix_call() on the PE side.
99 ntdll: Use the sysv ABI for the %fs allocation function.
100 ntdll: Use the sysv ABI for setjmp/longjmp on the Unix side.
101 ntdll: Use the default ABI for all functions on the Unix side.
102 kernelbase: Update timezone data to version 2023c.
103 nls: Update locale data to CLDR version 43.
104 xslt: Import upstream release 1.1.38.
105 xml2: Import upstream release 2.11.4.
106 kernelbase: Use nameless unions/structs for loader data.
107 kernelbase: Use nameless unions/structs for CPU-related data.
108 kernelbase: Use nameless unions/structs for IO_STATUS_BLOCK.
109 kernel32: Use nameless unions/structs.
110 server: Send the APC call data as vararg in the queue_apc request.
111 server: Send the APC call data as vararg in the select request.
112 wininet/tests: Update expected WineHQ certificate.
113 ntdll: Support adding overlapping ranges in mmap_add_reserved_area().
114 ntdll: Add a helper function to unmap memory above the user space limit.
115 ntdll: Reimplement unmap_area() to avoid recursion and callbacks.
116 ntdll: Reimplement map_fixed_area() to avoid recursion and callbacks.
117 ntdll: Reimplement allocation inside a reserved area without using a callback.
118 ntdll: Reimplement allocation of the virtual heap without using a callback.
119 ntdll: Reimplement fill_basic_memory_info() without using a callback.
120 ntdll: Reimplement virtual_release_address_space() without using a callback.
121 ntdll: Report the remaining part of the 64K after a view as free.
122 ntdll: Use the full 4Gb for large address aware applications on Wow64.
123 ntdll: Update the reserved range on 64-bit to match the preloader.
124 ntdll: Use the sysv ABI for __wine_syscall_dispatcher_return().
125 winebuild: Set a 64-bit base address for generated 64-bit dlls.
126 winebuild: Update target-dependent characteristics after option parsing.
127 winedump: Dump version resources in a more structured way.
128 winedump: Dump manifest resources in a more structured way.
130 Alistair Leslie-Hughes (5):
131 xactengine: Correct interfaces for IXACT3Cue.
132 include: Use STDMETHOD when returning HRESULT.
133 krnl386.exe16: Don't overflow when calculating size.
134 xactengine: Correct XACTNOTIFICATIONTYPE_MAX value.
135 xactengine: IXACT3EngineImpl_CreateSoundBank isn't a stub.
138 wow64: Ignore Thumb flag when parsing ARM syscall number.
141 po: Update Lithuanian translation.
144 mf/tests: Remove duplicate call to MFStartup().
146 Bernhard Übelacker (1):
147 comdlg32: Avoid crash in RemoveControlItem.
150 configure: Stash host LDFLAGS when configuring cross-compilers.
153 uiautomationcore: Put general purpose helper functions into separate source file.
154 uiautomationcore: Add global interface table helper functions.
155 uiautomationcore: Respect ProviderOptions_UseComThreading on advise events interfaces.
156 uiautomationcore: Get IRawElementProviderAdviseEvents interfaces from embedded fragment root providers.
159 msi: Release record instead of free.
160 riched20: Update paragraph position in marked tree.
163 gdiplus: Handle Windows style newline.
165 Davide Beatrici (38):
166 wined3d: Fix uninitialized variable warning.
167 winepulse: Move AudioClient3 into mmdevapi.
168 winealsa: Use mmdevapi's AudioClient3.
169 winecoreaudio: Use mmdevapi's AudioClient3.
170 wineoss: Use mmdevapi's AudioClient3.
171 winepulse: Move AudioClient2 into mmdevapi.
172 winealsa: Use mmdevapi's AudioClient2.
173 winecoreaudio: Use mmdevapi's AudioClient2.
174 wineoss: Use mmdevapi's AudioClient2.
175 winepulse: Always initialize ref to 1 in session wrapper.
176 winepulse: Move session_wrapper_create into mmdevapi.
177 winealsa: Use mmdevapi's session_wrapper_create.
178 winecoreaudio: Use mmdevapi's session_wrapper_create.
179 wineoss: Use mmdevapi's session_wrapper_create.
180 winepulse: Lock sessions in AudioClient's GetService.
181 winepulse: Move AudioClient's GetService into mmdevapi.
182 winealsa: Use mmdevapi's AudioClient's GetService.
183 winecoreaudio: Use mmdevapi's AudioClient's GetService.
184 wineoss: Use mmdevapi's AudioClient's GetService.
185 winepulse: Move AudioClient's SetEventHandle, Reset, Stop into mmdevapi.
186 winealsa: Use mmdevapi's AudioClient's SetEventHandle, Reset, Stop.
187 winecoreaudio: Use mmdevapi's AudioClient's SetEventHandle, Reset, Stop.
188 wineoss: Use mmdevapi's AudioClient's SetEventHandle, Reset, Stop.
189 winepulse: Lock sessions in AudioClient's Start.
190 winecoreaudio: Lock sessions in AudioClient's Start.
191 winepulse: Move AudioClient's Start into mmdevapi.
192 winealsa: Use mmdevapi's AudioClient's Start.
193 winecoreaudio: Use mmdevapi's AudioClient's Start.
194 wineoss: Use mmdevapi's AudioClient's Start.
195 winepulse: Move AudioClient's GetDevicePeriod, GetMixFormat, IsFormatSupported into mmdevapi.
196 winealsa: Use mmdevapi's AudioClient's GetDevicePeriod, GetMixFormat, IsFormatSupported.
197 winecoreaudio: Use mmdevapi's AudioClient's GetDevicePeriod, GetMixFormat, IsFormatSupported.
198 wineoss: Use mmdevapi's AudioClient's GetDevicePeriod, GetMixFormat, IsFormatSupported.
199 winepulse: Move AudioClient's GetCurrentPadding, GetStreamLatency, GetBufferSize into mmdevapi.
200 winealsa: Use mmdevapi's AudioClient's GetCurrentPadding, GetStreamLatency, GetBufferSize.
201 winecoreaudio: Use mmdevapi's AudioClient's GetCurrentPadding, GetStreamLatency, GetBufferSize.
202 wineoss: Use mmdevapi's AudioClient's GetCurrentPadding, GetStreamLatency, GetBufferSize.
203 mmdevapi: Handle CreateThread() failure in AudioClient's Start.
206 dbghelp: Better handle very long C++ qualified identifiers in dwarf.
207 dbghelp/tests: Fix process kind detection on old Windows machines.
208 dbghelp/tests: Review old-wow64 expected values.
209 dbghelp/tests: Add more tests for module imagename handling.
210 dbghelp: Reimplement EnumerateLoadedModules().
212 Gabriel Ivăncescu (6):
213 mshtml: Fix classList toggle() when return value pointer is NULL.
214 jscript: Return undefined for empty RegExp captures in ES5+ mode.
215 jscript: Throw proper error for unexpected quantifiers in RegExp.
216 jscript: Throw proper error for out of memory conditions in RegExp.
217 mshtml/tests: Test RegExp.toString on object with separate RegExp flag props.
218 mshtml: Handle protocols with no ports when checking target origin.
221 winevulkan: Update to VK spec version 1.3.251.
223 Giovanni Mascellani (6):
224 dxgi: Document some struct d3d12_swapchain fields.
225 dxgi: Rename d3d12_swapchain_prepare_command_buffers().
226 dxgi: Store Vulkan formats in the swapchain object.
227 dxgi: Factor out d3d12_swapchain_create_image_resources().
228 dxgi: Move non-Vulkan-specific code out of d3d12_swapchain_create_vulkan_swapchain().
229 dxgi: Move Vulkan-specific code to d3d12_swapchain_create_vulkan_swapchain().
232 win32u: Use syscall interface for all ntuser functions.
233 win32u: Implement NtGdiIcmBrushInfo and use it instead of __wine_get_brush_bitmap_info.
234 win32u: Extend NtGdiSetDIBitsToDeviceInternal for SetDIBits implementation.
235 win32u: Don't return full OUTLINETEXTMETRICW from __wine_get_file_outline_text_metric.
236 win32u: Use syscall interface for all exports.
237 ntdll: Get rid of hacks for direct unix calls.
238 wineps: Don't include gdi_driver.h from PE module.
239 win32u: Don't use CDECL for gdi_dc_funcs entries.
242 kernel32/tests: Remove test for ACTCTX_FLAG_HMODULE_VALID with hModule = NULL case.
243 kernel32/tests: Test setting lpResourceName to NULL for CreateActCtxW.
244 ntdll: Move ACTCTX lpResourceName validation to RtlCreateActivationContext.
245 kernel32/tests: Test loading assembly manifest resource inside dependencies.
246 ntdll: Don't hard-code DLL manifest resource ID when looking up dependency assembly.
247 user32/tests: Test for update region after showing a child window.
248 server: Update parent window region when exposing previously invisible window.
251 winevulkan: Include function name in asserts.
254 include: Fix the use of __getReg for aarch64/msvc mode.
256 Michael Stefaniuc (3):
257 ws2_32/tests: Remove superfluous casts to self.
258 wmvcore: Remove superfluous casts to self.
259 dbghelp: Remove superfluous casts to self.
262 ole32/antimoniker: Use CRT allocation functions.
263 ole32/antimoniker: Fix Enum() return error code.
264 ole32/classmoniker: Use CRT allocation functions.
265 ole32/pointermoniker: Use CRT allocation functions.
266 ole32/itemmoniker: Use CRT allocation functions.
267 ole32/compositemoniker: Use CRT allocation functions.
268 ole32/filemoniker: Use CRT allocation functions.
269 ole32/git: Use CRT allocation functions.
272 ntdll: Support MEM_COALESCE_PLACEHOLDERS in NtFreeVirtualMemory().
273 ntdll: Factor out unmap_view_of_section() function.
274 kernelbase/tests: Add tests for MEM_PRESERVE_PLACEHOLDER with UnmapViewOfFile2().
275 ntdll: Validate flags in NtUnmapViewOfSectionEx().
276 ntdll: Support MEM_PRESERVE_PLACEHOLDER in NtUnmapViewOfSectionEx().
277 winegstreamer: Don't pre-check sample size in wg_transform_read_mf().
278 kernelbase: Don't modify non-volatile regs in RaiseException() on x64.
279 ws2_32: Make wait in accept() alertable.
280 ws2_32: Make wait in connect() alertable.
281 ws2_32: Make wait in WSAPoll() alertable.
282 ws2_32: Test wait alertability in WSAGetOverlappedResult().
283 winegstreamer: Implement MFT_MESSAGE_COMMAND_DRAIN for the H264 decoder.
284 winegstreamer: Implement MFT_MESSAGE_COMMAND_FLUSH for the H264 decoder.
287 msvcr100: Fix next writer unblocking in reader_writer_lock::unlock.
288 msvcr100: Use Context to store critical_section owner.
289 msvcr100: Use Context blocking functions in critical_section class.
290 make_unicode: Don't use Türkiye as it can't be encoded in some locales.
291 msvcr100: Use Context blocking functions in event class.
292 msvcr100: Use Context blocking functions in Concurrency::wait().
293 localspl: Don't pass original document name to cupsStartDocument.
294 msvcr100: Fix use after free in critical_section::try_lock_for().
295 msvcr100: Add support for COOPERATIVE_TIMEOUT_INFINITE timeout in critical_section.
296 msvcr100: Use block_context_for helper in Concurrency::wait().
297 msvcr100: Use block_context_for helper in event::wait().
298 msvcr100: Use Context blocking functions in _Condition_variable class.
301 winegstreamer: Forbid vaapidecodebin when looking for a specific element.
302 winegstreamer: Only warn on wg_transform input buffer push errors.
303 winegstreamer: Set the default H264 caps profile to "baseline".
304 server: Assume the internal clip message to be WM_WINE_CLIPCURSOR.
305 server: Move set_cursor desktop local variable to wider scope.
306 win32u: Rename user driver CreateDesktopWindow entry to SetDesktopWindow.
307 win32u: Call SetDesktopWindow when desktop window is successfully created.
308 explorer: Load graphics driver before calling CreateDesktopW.
309 explorer: Use root window if driver doesn't implement create_desktop.
310 explorer: Don't call driver create_desktop if desktop name is "root".
311 explorer: Call user driver through a new CreateDesktop callback.
312 wineandroid: Use the user driver interface to create host desktops.
313 winex11: Use the user driver interface to create host desktops.
314 explorer: Remove now unnecessary wine_create_desktop entry.
315 imm32: Query the new input context in ImmAssociateContextEx / IACE_DEFAULT.
316 server: Use get_hardware_msg_bit consistently to classify messages.
317 win32u: Move some window functions to window.c.
318 win32u: Move cursor clipping functions to input.c.
319 win32u: Add a separate function to process WM_WINE_CLIPCURSOR.
320 win32u: Use WM_WINE_CLIPCURSOR / TRUE for empty clipping rect.
321 user32: Remove now unused virtual screen helpers.
322 mf/tests: Add H264 decoder tests with concatenated streams.
323 winegstreamer: Use an IMFMediaType for the internal stream type.
324 winegstreamer: Generate H264 timestamps using the input type frame rate.
325 winegstreamer: Use the output wg_format in CAPS sink query.
326 user32/tests: Zero-initialize keyboard state array.
327 user32/tests: Add a helper to run a test in a process.
328 user32/tests: Test more ClipCursor reset scenarios.
329 winegstreamer: Pass desired output plane alignment to wg_transform_create.
330 winegstreamer: Pass desired input queue length to wg_transform_create.
331 winegstreamer: Implement MF_LOW_LATENCY attribute and latency query.
332 win32u: Reset cursor clipping rectangle on display mode change.
333 winex11: Rely on win32u to reset clipping on display mode change.
334 winex11: Reset clipping by calling NtUserClipCursor directly.
335 server: Don't reset cursor clipping on foreground thread exit.
336 kernelbase: Comment out DECLSPEC_HOTPATCH for ConvertThreadToFiber.
337 evr/tests: Test IMFVideoDisplayControl_GetCurrentImage orientation.
338 evr: Respect RGB format stride in GetCurrentImage.
339 win32u: Add a reset parameter to WM_WINE_CLIPCURSOR and driver ClipCursor.
340 server: Use the helper to reset the clip rect when the desktop size changes.
341 server: Use a separate helper to merge WM_MOUSEMOVE messages.
342 server: Queue a hardware WM_WINE_CLIPCURSOR message to the foreground thread.
343 win32u: Asynchronously apply or reset ClipCursor from the hardware message.
344 winex11: Remove now unnecessary ClipCursor forwarding to foreground thread.
347 riched20: Call ME_UpdateRepaint instead of editor_ensure_visible in set_selection.
350 sapi: Implement ISpObjectToken::CreateKey.
351 sapi: Partially reimplement ISpObjectTokenEnumBuilder storing a token array.
352 sapi: Implement token filtering and sorting in ISpObjectTokenEnumBuilder.
353 sapi: Add SpMMAudioOut stub.
354 sapi: Implement ISpMMSysAudio::Get/SetDeviceId.
355 sapi: Add GUIDs SPDFID_Text/WaveFormatEx.
356 include: Add sperror error code SPERR_UNSUPPORTED_FORMAT.
357 sapi: Implement ISpMMSysAudio::Get/SetFormat.
360 loader: Reserve some space for 32-bit top-down allocations on 64-bit.
362 Zebediah Figura (10):
363 winebuild: Use segment prefixes in 16-bit stack switching code instead of writing out byte values.
364 winebuild: Use the lretw mnemonic in wine_call_to_16().
365 wow32: Use spec file imports.
366 ntdll: Do not throw deadlock exceptions for Wine critical sections.
367 ntdll: Simplify critical section timeout logic.
368 xaudio2/tests: Add a couple of helpers to abstract the difference between versions.
369 xaudio2: Move CreateAudioVolumeMeter() and CreateAudioReverb() to xapo.c.
370 xaudio2: Create XAPO objects directly from CreateAudioVolumeMeter() and CreateAudioReverb().
371 xaudio2: Use the preprocessor to modify definitions in xaudio2.idl and xaudio2fx.idl.
372 xaudio2/tests: Fix the IID_IXAPO query.
375 gdiplus/tests: Add pen custom line cap record and play back tests.
376 gdiplus: Support recording pen custom start line cap.
377 gdiplus: Support recording pen custom end line cap.
378 gdiplus: Support playing back pen custom start line cap.
379 gdiplus: Support playing back pen custom end line cap.
380 winegstreamer: Fix check for non-zero padding in mf_media_type_from_wg_format_video().
383 mf/tests: Test input type for WMA decoder DMO.
384 mf/tests: Test output type for WMA decoder DMO.
385 mf/tests: Split input type tests from test_wmv_decoder_media_object.
386 mf/tests: Split output type tests from test_wmv_decoder_media_object.
387 mf/tests: Split size info tests from test_wmv_decoder_media_object.