Wine release 10.12
The Wine development release 10.12 is now available.
What's new in this release:
- Optional EGL backend in the X11 driver.
- Support for Bluetooth Low Energy services.
- More support for generating Windows Runtime metadata in WIDL.
- ARM64 builds enabled in Gitlab CI.
- Various bug fixes.
The source is available at ( https://dl.winehq.org/wine/source/10.x/wine-10.12.tar.xz)
Binary packages for various distributions will be available from the respective [download sites][1].
You will find documentation [here][2].
Wine is available thanks to the work of many people. See the file [AUTHORS][3] for the complete list.
[1]: https://gitlab.winehq.org/wine/wine/-/wikis/Download
[2]: https://gitlab.winehq.org/wine/wine/-/wikis/Documentation
[3]: https://gitlab.winehq.org/wine/wine/-/raw/wine-10.12/AUTHORS
![]()
Bugs fixed in 10.12 (total 17):
- #19561 Very large memory leak when doing overlapped reads
- #38337 clang compiling warnings
- #42882 HDX server software: rs232 port access not working
- #52720 Speed up cmd.exe:batch in Wine
- #55776 Some game use video as intro will stock after video is finished
- #57204 after enable winedmo, Little Witch Nobeta video wont play anymore
- #57244 Train capacity 300% 2 will crash after enable the winedmo
- #57489 GetPointerPenInfo not located in USER32.dll when attempting to run Clip Studio Paint 3.0
- #57790 FindVUK doesn't show drive details
- #58263 Wine Internet Settings crashes on unimplemented function shdocvw.dll.ParseURLFromOutsideSourceW
- #58422 Soldier of Fortune II crashes on start
- #58423 Flickering in games using dxvk/vkd3d-proton on sway
- #58429 Betfair Poker setup never gets past the splash screen
- #58435 winepath -w conversion outputs wrong filenames
- #58436 x11, kotor keeps minimizing
- #58437 Total Commander 11.55 complains "Access denied" for EVERY file >= 1 MB in "Compare files by content"
- #58475 Wine Mono corlib tests cause wineserver to assert
Changes since 10.11:
Adam Markowski (1):
po: Update Polish translation.
Akihiro Sagawa (1):
po: Update Japanese translation.
Alex Henrie (3):
ntdll: Don't skip synchronous read when serial read timeout is infinite.
inetcpl: Restore parse_url_from_outside implementation.
ntdll: Detect the optical disc type on Linux using a SCSI command.
Alexandre Julliard (16):
server: Always use the thread Unix id in ptrace().
rpcrt4: Silence compiler warnings about pointer wraparound.
gitlab: Build an arm64 image.
ntdll: Remove duplicate backslashes in get_unix_full_path().
winevulkan: Skip a couple of unneeded conversion functions.
gitlab: Add an ARM64 build.
faudio: Import upstream release 25.07.
gitlab: Update sarif-converter URL.
ntdll: Get rid of the wine_unix_to_nt_file_name syscall.
ntdll: Unify the Unix to NT path conversion helpers.
gitlab: Add a daily test run for new wow64 mode.
winetest: Use compiler macros to generate the compiler version info.
winex11: Disable more wintab code when support is missing.
oleaut32: Use DOUBLE type where appropriate to match the PSDK.
include: Use aligned int64 types where possible.
setupapi/tests: Don't test an uninitialized value.
Alexandros Frantzis (2):
winewayland: Use system cursor shapes when possible.
winewayland: Support layered windows with per-pixel alpha.
Alfred Agrell (1):
include: Enable __uuidof(IUnknown).
Alistair Leslie-Hughes (2):
shell32: Avoid closing a handle twice.
msado15: Implement _Connection::get_version.
Anton Baskanov (1):
quartz: Decommit the allocator before entering the streaming CS in AVIDec.
Arkadiusz Hiler (1):
cfgmgr32: Preserve registry casing when getting device interface list.
Aurimas Fišeras (1):
po: Update Lithuanian translation.
Bernhard Übelacker (1):
dxcore/tests: Skip tests when there is no display available.
Brendan McGrath (3):
winegstreamer: Remove 'au' alignment for h264.
winegstreamer: Signal eos on disconnect.
winegstreamer: Don't hold lock during wg_parser_stream_get_buffer.
Connor McAdams (2):
d3dx9: Replace txc_fetch_dxtn with bcdec.
d3dx9: Replace txc_compress_dxtn with stb_dxt.
Daniel Lehman (3):
ucrtbase/tests: Add tests for expf.
ucrtbase/tests: Move exp tests from msvcr120.
include: Add _wcstod_l declaration.
Dmitry Timoshkov (1):
ntdll: Initialization of XState features should not depend on AVX support.
Elizabeth Figura (5):
kernel32/tests: Test opening a directory with ReOpenFile().
kernelbase: Use FILE_NON_DIRECTORY_FILE in ReOpenFile().
ntdll/tests: Add comprehensive reparse point tests.
kernel32/tests: Test CreateSymbolicLink().
xaudio2: Do not register classes from xapofx or x3daudio dlls.
Eric Pouech (7):
cmd: Introduce struct batch_file to hold information about a .cmd file.
cmd: Add a cache for the labels lookup.
cmd/tests: Add tests about .cmd file alteration while executing it.
widl: Fix segfault when inheriting from an incomplete interface.
widl: Remove unneeded condition.
widl: Ensure inherited interface is declared before using it.
include: Remove duplicated declarations in .idl files.
Esme Povirk (3):
comctl32: Implement OBJID_QUERYCLASSNAMEIDX for status controls.
comctl32: Implement OBJID_QUERYCLASSNAMEIDX for toolbars.
comctl32: Implement OBJID_QUERYCLASSNAMEIDX for progress bars.
Gabriel Ivăncescu (4):
mshtml: Clear the document before opening it for writing.
mshtml: Implement document.linkColor.
mshtml: Implement document.vLinkColor.
mshtml: Don't add HTMLDOMNode props to the NodeList.
Hans Leidekker (16):
widl: Add rows for the static attribute.
widl: Add TYPE_ATTR_ABSTRACT flag if a runtime class has no member interfaces.
widl: Add rows for the default attribute.
widl: Add rows for the activatable attribute.
widl: Add rows for the threading attribute.
widl: Add rows for the marshalingbehavior attribute.
widl: Relax check on runtimeclass definitions.
widl: Store a variable pointer instead of a declaration in expressions.
widl: Store the runtimeclass for constructor interfaces.
widl: Factor out an add_member_interfaces() helper.
widl: Add rows for static interfaces.
widl: Include version in activatable attribute value.
widl: Add rows for activation interfaces.
widl: Add rows for the composable attribute.
widl: Add rows for composition interfaces.
widl: Skip writing metadata if winrt_mode is not set.
Huw D. M. Davies (1):
kernel32: Use the correct buffer length.
Jacek Caban (8):
webservices: Don't assume that enum is unsigned in WsInitializeMessage.
dmime/tests: Use ceil instead of round.
configure: Build PEs with -ffp-exception-behavior=maytrap.
d3dcompiler: Don't assume that enum is unsigned in d3dcompiler_get_blob_part.
d3dcompiler: Handle all D3D_BLOB_PART values in d3dcompiler_get_blob_part validation.
d3dcompiler: Use __WINE_CRT_PRINTF_ATTR.
wined3d: Use __WINE_CRT_PRINTF_ATTR.
widl: Rename metadata stream type enum values to avoid conflict with Cygwin limits.h.
Joe Souza (3):
cmd: COPY should output file names as they are copied.
cmd/tests: Add tests to verify COPY command output.
cmd: Allow '+' as delimiter for tab-completion, e.g. 'copy file+file2'.
Mike Kozelkov (1):
urlmon: Add PersistentZoneIdentifier COM object stubs.
Nikolay Sivov (2):
kernel32: Add a stub for CreateBoundaryDescriptorA().
include: Remove duplicated CreateBoundaryDescriptorW() definition.
Owen Rudge (1):
mshtml: Implement document.aLinkColor.
Paul Gofman (5):
user32/tests: Add tests for STARTF_USESHOWWINDOW.
win32u: Respect STARTF_USESHOWWINDOW in show_window().
winepulse.drv: Avoid hangs on exit when pulse main loop thread gets killed.
winebus.sys: Check for udev_device_get_subsystem() error in udev_add_device().
winebus.sys: Close fd if device is not handled in udev_add_device().
Ryan Houdek (1):
wineboot: Detect TSC frequency on Arm64.
Rémi Bernon (64):
winex11: Release the GL drawable on creation failure.
win32u: Keep window GL drawables in a global linked list.
win32u: Notify the drivers when GL drawables are detached.
win32u: Update opengl drawables with window state.
win32u: Update the window state in more places.
winewayland: Drop now unnecessary GL drawable tracking.
winex11: Remove now unnecessary drawable tracking.
winewayland: Remove unnecessary context config.
wineandroid: Remove unnecessary context config.
win32u: Move EGL context creation out of the drivers.
winewayland: Only detach/attach client surface if it is different.
opengl32: Do not filter legacy extensions.
opengl32: Add a helper to read OpenGL registry options.
opengl32: Add an EnabledExtensions registry option.
user32: Init class name outside of get_versioned_name.
user32: Move user32_module default out of get_class_info.
user32: Load class module in get_class_version.
user32: Move get_class_version out of get_class_info.
comctl32: Fix class name case in manifest.
user32: Always copy class names to a temporary buffer.
win32u: Add traces to wglGetExtensionsString*.
win32u: Add an EGLSurface pointer to opengl_drawable struct.
win32u: Move EGL make_current context function out of the drivers.
winex11: Remove now unnecessary x11drv_context structure.
winex11: Add an option to use the new EGL OpenGL backend.
winemac: Remove now unnecessary pbuffer tracking.
win32u: Avoid calling detach, flush or swap on pbuffer drawables.
win32u: Avoid releasing opengl drawable within drawables_lock.
win32u: Implement generic EGL driver pbuffer surface.
winewayland: Use a distinct wayland_pbuffer struct for pbuffers.
win32u: Remove now unnecessary opengl_drawable hdc member.
win32u: Remove VkResult from surface_presented functions.
win32u: Introduce a new client_surface struct for vulkan surfaces.
win32u: Keep client surfaces in a global list.
win32u: Update client surfaces when window state changes.
win32u: Present client surfaces through the vtable.
mf/session: Clarify internal states from session states separation.
mf/session: Move internal states to a separate command_state enum.
mf/session: Remove unnecessary SESSION_FLAG_PENDING_COMMAND flag.
mf/session: Replace SESSION_FLAG_FINALIZE_SINKS with dedicated states.
mf/session: Replace SESSION_FLAG_END_OF_PRESENTATION with dedicated states.
mf/session: Introduce a SESSION_FLAG_SOURCE_SHUTDOWN presentation flag.
mf/session: Simplify the media session shutdown event handling.
win32u: Fix incorrect length in font extension check.
winegstreamer: Force h264parse to output 'au' aligned byte-stream.
mp3dmod: Fix some media type leaks.
mp3dmod: Avoid uninitialized variable access.
winegstreamer: Fix some video decoder media type leaks.
mf/tests: Fix some leaks in transform tests.
mf/tests: Avoid leaking D3D resources through IMFTrackedSample.
mf/tests: Skip memory-hungry H264 encoder tests on 32bit.
mfplat/tests: Add more tests for event queue shutdown.
mfsrcsnk: Queue an event before shutting down the event queues.
winegstreamer: Queue an event before shutting down the event queues.
mf/session: Handle an optional MEError event from sources on shutdown.
winegstreamer: Remove now unnecessary IMFMediaShutdownNotify.
mf/session: Remove now unnecessary IMFMediaShutdownNotify.
include: Remove now unnecessary IMFMediaShutdownNotify interface.
winewayland: Clear the current client surface on vulkan detach.
winewayland: Merge the vulkan client surface with wayland_client_surface.
winex11: Move client surface code out of vulkan ifdef.
winex11: Create client surfaces for opengl drawables.
win32u: Replace opengl drawables tracking with client surfaces.
server: Keep owned mutex syncs alive until abandoned.
Shaun Ren (11):
sapi/tests: Copy SPVTEXTFRAG list into a contiguous array.
sapi/tests: Introduce simulate_output option in tts.
sapi/tests: Add some SSML tests in tts.
sapi/tts: Support XML-related flags in ISpVoice::Speak.
sapi/xml: Add a stub SSML parser.
sapi/xml: Parse the SSML root element.
sapi/xml: Implement add_sapi_text_fragement().
sapi/xml: Parse theand SSML elements.
sapi/xml: Parse the rate attribute in the SSML element.
sapi/xml: Parse the volume attribute in the SSML element.
sapi/xml: Parse the pitch attribute in the SSML element.
Vibhav Pant (17):
include: Add devquerydef.h.
include: Add devfiltertypes.h.
include: Add devquery.h.
cfgmgr32/tests: Add tests for DevGetObjects.
cfgmgr32: Add a basic implementation for DevGetObjects(Ex) for device interface objects.
ntoskrnl.exe/tests: Add tests for Io{Get,Set}DeviceInterfacePropertyData.
ntoskrnl.exe: Implement IoGetDeviceInterfacePropertyData.
ntoskrnl.exe: Implement IoSetDeviceInterfacePropertyData.
cfgmgr32/tests: Add tests for fetching specific properties in DevGetObjects.
cfgmgr32: Stub DevCreateObjectQuery(Ex) functions.
cfgmgr32: Implement initial device enumeration for DevCreateObjectQuery.
cfgmgr32: Support fetching properties for device objects in Dev{GetObjects, CreateObjectQueryEx}.
winebth.sys: Create PDOs for remote Bluetooth devices.
winebth.sys: Store a list of GATT services discovered on LE devices.
winebth.sys: Implement IOCTL_WINEBTH_LE_DEVICE_GET_GATT_SERVICES.
bluetoothapis: Implement BluetoothGATTGetServices.
bluetoothapis/tests: Add tests for BluetoothGATTGetServices.
Yuxuan Shui (11):
mscoree/tests: Fix string lengths passed to RegSetKeyValueA.
msvcp90: Fix vector_base_v4 allocation sizes.
msvcp90: Fix calculation of segment addresses in vector.
msvcrt: Don't release io memory during process shutdown.
wined3d: Fix missing data/resource type bounds check.
dxgi/tests: Fix out-of-bound in test_cursor_clipping.
ddraw/tests: Release device after ddraw.
d3dx9/tests: Fix volume test boxes.
wined3d: Fix double-free when shader_set_function fails.
quartz/tests: Fix out-of-bound use of video_types in test_connect_pin.
dsound: Make sure to null-terminate strings for callbacks.
Zhiyi Zhang (10):
comctl32/listview: Test WM_PAINT with a subclassed header that paints without validating update regions.
comctl32/listview: Validate header region after painting it.
bcp47langs: Add GetFontFallbackLanguageList() stub.
gdiplus/tests: Test drawing indexed bitmaps with a palette that has alpha.
gdiplus: Fix drawing indexed bitmaps with a palette that has alpha.
gdiplus: Don't zero out allocated memory in GdipAlloc().
win32u: Limit the work area to the monitor rect.
user32/tests: Add some tests for DefWindowProc() WM_PRINT message handling.
win32u: Fix the return value for WM_PRINT handling in DefWindowProc().
win32u: Support PRF_CHILDREN when handling WM_PRINT for DefWindowProc().
Ziqing Hui (1):
shell32: Rework FO_MOVE operation for SHFileOperationW.
Alexandre Julliard has announced the release of the Wine development release 10.12, which includes additions such as an optional EGL backend in the X11 driver, support for Bluetooth Low Energy service, Windows Runtime metadata creation, the ability to enable ARM64 builds in GitLab Continuous Integration, and bug fixes.