The Wine development release 6.8 is now available. What's new in this release (see below for details): - Libraries installed into architecture-specific subdirectories. - Secur32 library converted to PE. - Support for Map object in JavaScript. - Various bug fixes. The source is available from the following locations: https://dl.winehq.org/wine/source/6.x/wine-6.8.tar.xz http://mirrors.ibiblio.org/wine/source/6.x/wine-6.8.tar.xz Binary packages for various distributions will be available from: https://www.winehq.org/download You will find documentation on https://www.winehq.org/documentation You can also get the current source directly from the git repository. Check https://www.winehq.org/git for details. Wine is available thanks to the work of many people. See the file AUTHORS in the distribution for the complete list. ---------------------------------------------------------------- Bugs fixed in 6.8 (total 35): 11833 GroupMail 5.x crashes when creating new message 19756 Date/time picker doesn't notify app about checkbox changes (TaskCoach: Cannot add new task with a due date) 22327 Cannot install PGV demo for Windows using a clean wineprefix. 24893 File/folder context menus have missing options (Explorer++, Double Commander) 26189 Crysis Wars Dedicated Server no longer shows console on start under X 28372 Ubuntu Skin Pack 5.0-XP installer crashes 35102 Qvodplayer 3.5 Crashes on start 35539 Proteus 8 demo fails to install 37375 Visual C++ 2005 Express SP1 install fails 39841 IShellFolder.CreateViewObject() doesn't support IID_IContextMenu (Double Commander "Error: invalid parameter" when right-clicking on an empty space) 40227 LibreOffice 5.1.0 crashes when trying to run any Office program 40382 CUEcards 2000 (v2.37) takes a lot of time to return with search results 40823 Stone Giant demo crashes after launch 41318 Sins of a Solar Empire: Rebellion requires binormal vectors support in D3DXComputeTangentFrameEx 46948 Characters in The Sims Complete Collection render completely white 49697 Age of Empires II (SafeDisc 1.x) fails to start since 3.0-rc 49763 ALOTInstaller crashes 49977 FIFA 11 Demo fifaconfig crashes when pressing Exit button 49989 Samsung Dex installer crashes 50006 The intro in The Sims Complete Collection gets played too fast 50026 Powershell Core needs ntdll.RtlQueryProcessPlaceholderCompatibilityMode when run in win10 mode 50117 winedbg --gdb doesn't work 50396 Sacred Gold: wrong z-order or something else 50503 Diablo 1: Game crashes after intro videos 50961 Swtor game crash on splash screen 6.6 50963 NtCreateUserProcess occasionally fails with STATUS_IMAGE_NOT_AT_BASE 50980 Royal Quest: "out of memory" and other errors 50992 Star Citizen crashes on unimplemented function advapi32.dll.QueryTraceA 51028 Solid Edge 2021 Academic Edition: crash on startup 51041 Scalable fonts with fsCsb[0] == 0 are not enumerated correctly 51057 `winetricks -q mfc42` fails 51067 ToolTaskTest:Execute_2 test fails on x86_64 51070 Wine fails to create or update prefix 51076 demangle_datatype in ucrtbase crash in vc2019 x86 mode 51082 Regression: Powershell Core installs in wrong directory ---------------------------------------------------------------- Changes since 6.7: Akihiro Sagawa (1): po: Update Japanese translation. Alex Henrie (1): kernel32: Print processor group in Get(Active|Maximum)ProcessorCount. Alexandre Julliard (60): ntdll: Fix drive letter of current directory in get_full_path(). ntdll: Support loading builtins from the architecture-specific PE directory. setupapi: Support installing both types of builtins from the same directory. setupapi: Support loading builtins from the architecture-specific PE directory. winecfg: Get the builtins list from the architecture-specific PE directory. dbghelp: Support loading builtins from the architecture-specific PE directory. makefiles: Install PE files in an architecture-specific directory. makefiles: Install PE import libraries in the architecture-specific directory. makefiles: Install PE fake dlls in the architecture-specific directory. server: Check the supported machines list to validate an image mapping. server: Use a 64-bit machine for IL executables. server: Store a machine ID instead of a CPU in the context structure. server: Get rid of the CPU type and functions. server: Create the Wow64 key and system directory for all supported architectures. ntdll: Add separate helpers for loading pe and so builtins. ntdll: Always allocate space for both 32- and 64-bit PEB. ntdll: Always allocate space for both 32- and 64-bit TEB. ntdll: Allocate TEBs and stacks in the low 2G. ntdll: Store the debug info for the initial thread next to the PEB. ntdll: Check all supported architectures in is_builtin_path(). wineboot: Run wine.inf for all supported architectures. makefiles: Install Unix binaries into an architecture-specific directory. makefiles: Install libwine into the architecture-specific directory. dbghelp: Look for .so files in the architecture-specific directory. wineandroid: Load ntdll from the architecture-specific directory. winegcc: Look for libraries in the architecture-specific directory. ntdll/tests: Fix a test failure on Windows 8. ntdll: Implement RtlWow64GetProcessMachines(). ntdll: Implement RtlWow64GetCurrentMachine(). ntdll: Implement RtlWow64IsWowGuestMachineSupported(). kernelbase: Use RtlWow64GetProcessMachines() to get native system information. regsvr32: Restart the correct version for all supported architectures. server: Don't bother queuing APC_NONE apcs. server: Don't return a handle for user apcs. server: Only the first mapping needs to be an image in NtAreMappedFilesTheSame(). winecrt0: Add a default implementation for DllCanUnloadNow(). winecrt0: Add a default implementation DllRegisterServer()/DllUnregisterServer(). winecrt0: Determine the registration module handle directly in __wine_register_resources(). include: Update the SYSTEM_PROCESS_INFORMATION structure. kernelbase: Compare against the correct constants in GetNativeSystemInfo(). kernelbase: Fix alignment of compatibility context elements. gdi32: Don't bother computing the gamma ramp when not used. ntdll: Use the native machine id instead of hardcoded values. ntdll: Sort the info classes by numeric value in NtQuerySystemInformation(). ntdll: Don't output thread traces to the seh channel. amstream: Avoid wcsncpy(). mmdevapi: Avoid wcsncpy(). dnsapi/tests: Avoid wcsncpy(). dwrite: Avoid wcsncpy(). taskmgr: Avoid wcsncpy(). include: Disallow wcsncpy() in Wine, similarly to strncpy(). ntdll: Implement RtlFindExportedRoutineByName(). ntdll: Return the full path to start.exe in load_start_exe(). ntdll: Open the per-application key for load order at startup. ntdll: Fix the check for the main exe in get_load_order(). ntdll: Force executing IL-only binaries on the native machine. server: Send the zero_bits parameter for remote NtCreateThreadEx() calls. ntdll: Take the zero_bits parameter into account in NtCreateThreadEx(). ntdll: RtlCreateUserThread() also takes a zero_bits parameter. ntdll: Only compute the zero_bits mask when needed. Alistair Leslie-Hughes (2): msado15: Support Properties interface on Field. msado15: Use Recordset_Open in Connection_Execute. Anton Baskanov (3): winegstreamer: Fix integer overflow in scale_uint64. winegstreamer: Allow setting the stop position to the stream duration. quartz/dsoundrender: Don't let writepos advance past playpos. Arkadiusz Hiler (8): ntoskrnl: Implement IoSetDevicePropertyData(). msvcrt: Remove return after _endthread(). msvcrt/tests: Add CREATE_SUSPENDED test for _beginthreadex(). msvcrt: Make _beginthread() error out as documented. msvcrt: Use trampoline for _beginthreadex(). msvcrt: Make UCRT _beginthread[ex]() hold the DLL reference. ucrtbase: Add tests for _beginthread[ex](). ucrtbase: Add invalid param tests for _beginthread[ex](). Aurimas Fišeras (2): po: Update Lithuanian translation. po: Update Lithuanian translation. Connor McAdams (1): winegstreamer: Delay duration query until caps have been acquired. Damjan Jovanovic (8): shell32/tests: Add more tests for Shell_MergeMenus(). shell32: The menu wIDs in hmenu were rebased by idCmdFirst. shell32/tests: Test what Shell_MergeMenus() does with a negative adjustment. shell32: Use a smaller range of shellview menu IDs in our IContextMenu functions. shell32: Implement IID_IContextMenu in CreateViewObject() methods for shell folders that support it. shell32: Implement some of the missing shellview IContextMenu command verbs. shell32: Fix pasting from the shellview context menu. shell32/tests: Fix test failures from ad412b11a7ea17b708994ed6609f8ed0cbfb169b. David Koolhoven (1): advapi32: Stub QueryTraceA(). Dmitry Timoshkov (2): msxml3/tests: Don't '\0' terminate output after ::save(). msxml3/tests: Add more tests for processing instruction attributes. Esme Povirk (1): kernelbase: Always remove trailing spaces in PathRemoveBlanks. Floris Renaud (1): po: Update Dutch translation. François Gouget (10): winetest: Fix the path to the ntoskrnl.exe/tests source. kernel32/tests: Add a trailing linefeed to an ok() message. msxml3: Refcount the domdoc/xmldoc properties. ucrtbase/tests: Add a trailing linefeed to an ok() message. ntdll/tests: Fix the speilling of an ok() message. msvcp140_1/tests: Fix the spelling of test_get_set_default_resource(). mfplat: Fix the spelling of a comment. wined3d: Add a trailing linefeed to a couple of FIXME(). urlmon/tests: Check that .Net is present in the user-agent string. user32/tests: Remove the Cygwin/XFree86 checks. Georg Lehmann (1): winevulkan: Override VK_USE_64_BIT_PTR_DEFINES instead of handle definition. Gijs Vermeulen (1): msvcirt: No longer prefer native. Giovanni Mascellani (4): advapi32/tests: Check that registry time zone records have a display name. kernel32/tests: Test for quirks in a few different time zones. mfreadwrite/tests: Test setting a non-native bit depth on the reader. mfreadwrite: Accept new media type only when format data are equal. Hans Leidekker (19): msv1_0: New dll. msv1_0: Initial implementation of the LSA and user mode interfaces. msv1_0: Add a Unix library to support ntlm_auth. msv1_0: Implement SpAcquireCredentialsHandle and SpFreeCredentialsHandle. msv1_0: Implement SpInitLsaModeContext and SpDeleteContext. msv1_0: Use RtlAllocateHeap to allocate output buffers. msv1_0: Implement SpAcceptLsaModeContext. msv1_0: Implement SpQueryContextAttributes. msv1_0: Implement SpMakeSignature. msv1_0: Implement SpVerifySignature. msv1_0: Implement SpSealMessage and SpUnsealMessage. secur32: Load the MSV1_0 provider instead of using builtin support for NTLM. secur32: Get rid of builtin NTLM support. secur32: Use a reserved flag for the cached credentials hack. secur32: Use a pthread mutex in the macOS backend. secur32: Move Schannel support to a Unix library. secur32: Build with msvcrt. secur32: Use wide character string literals. secur32: Use CRT memory allocators. Henri Verbeet (17): wined3d: Correct the wined3d_device_set_blend_state() .spec entry. wined3d: Correct the wined3d_device_set_depth_stencil_state() .spec entry. ntdll: Clear ret->Buffer on failure in get_env_var() (Valgrind). explorer: Initialise window->pidl to NULL in shellwindows_Register(). wined3d: Avoid accessing the bo_user list from outside the command stream thread (Valgrind). wined3d: Free the program variants array in shader_spirv_destroy() (Valgrind). d3d11/tests: Initialise "constant" in test_device_context_state() (Valgrind). wined3d: Only read "*rect_count" when "rects" is non-NULL in wined3d_device_context_get_scissor_rects() (Valgrind). dxgi/tests: Test that we don't use objects returned by wrapped interfaces internally. dxgi: Store an IWineDXGIFactory pointer in struct d3d11_swapchain. dxgi: Pass an IWineDXGIFactory pointer to dxgi_get_output_from_window(). wined3d: Implement Vulkan NULL 1D array image shader resource view descriptors. d3d11/tests: Add some tests for copying between depth/stencil and colour formats. d3d10core/tests: Add some tests for copying between depth/stencil and colour formats. wined3d: Reject blits between depth/stencil and colour resources in the raw blitter. wined3d: Reject blits between depth/stencil and colour attachments in the FBO blitter. wined3d: Reject raw blits between depth/stencil and colour resources in the GLSL blitter. Hugh McMaster (22): reg: Consistently use 'hkey' for HKEY variables. reg: Do not print a line break after querying a registry key. reg: Only print the name of the registry key if it contains values or we are recursing. reg: Print a new line when recursing and the current key has no registry values. reg: Don't enumerate a registry key for subkeys if we know the key does not have subkeys. reg/tests: Rework syntax tests for the 'copy' operation. reg/tests: Verify that only the (Default) value is overwritten when neither /v nor /ve is specified. reg: Use correct error message if RegCreateKeyExW() fails. reg/tests: Add and amend tests adding a (Default) value. reg/tests: Use string literals instead of a char buffer for REG_MULTI_SZ tests. reg/tests: Split the REG_DWORD_BIG_ENDIAN tests from the REG_DWORD tests. reg/tests: Fix a typo in a REG_DWORD test. reg/tests: Add two REG_DWORD tests. reg/tests: Update error messages. reg: Replace the 'reg_count' variable name with context-specific names. reg: Add or modify the (Default) registry value if [/v] is not specified. reg: Fail if access is denied when adding registry data. reg: Only prompt the user to overwrite registry data if the given key already exists and [/f] is not supplied. comctl32/listview: Initialize marqueeRect from left-click coordinates before starting a marquee highlight. reg: Allow the 'reg_data' pointer to be NULL. reg: Avoid allocating zero bytes of memory when handling REG_BINARY data. reg: Prevent buffer over-read when querying REG_NONE values with no data. Jacek Caban (13): jscript: Add Map object stub implementation. jscript: Add Map.prototype.set implementation. jscript: Add Map.prototype.get implementation. jscript: Add Map.prototype.clear implementation. jscript: Add Map.prototype.delete implementation. jscript: Add Map.prototype.has implementation. jscript: Add Map.size property implementation. jscript: Add Map.prototype.forEach implementation. mshtml/tests: Add Map object tests. winevulkan: Don't use wine_ prefix on PE side. winevulkan: Use wine_ prefix for Unix thunks. ntdll: Inherit tty std input and output in processes attached to Unix console. kernel32/tests: Add syscall context handling tests. Jan Sikorski (6): wined3d: Create null vertex bindings and attributes for unbound shader inputs. d3d11/tests: Add a test for unbound input streams. d3d10core/tests: Add a test for unbound input streams. wined3d: Make sure scissor offsets are not negative. d3d11/tests: Test combined scissors and viewport with negative offsets. d3d10core/tests: Test combined scissors and viewport with negative offsets. Lauri Kenttä (1): po: Update Finnish translation. Louis Lenders (1): ntdll: Stub RtlQueryProcessPlaceholderCompatibilityMode(). Nikolay Sivov (14): shcore/stream: Implement generic CopyTo(). mf/evr: Return current device manager as a service. mf/evr: Handle mixer sample requests during sink state transitions. mf/evr: Add IMFRateSupport stub. mf/evr: Add slowest/fastest rate support methods. gdi32: Enumerate scalable fonts with zero charset mask as OEM. mfplat: Add MFllMulDiv(). mfplat: Implement shared device manager API. mfplat: Trace I8 propvariant values. mf/evr: Pass stream start/end messages to the mixer. mf/evr: Post sink marker events. evr/mixer: Use hex format for message type. mfplat: Added MFCreateAudioMediaType(). mf/evr: Implement Flush() for streams. Paul Gofman (10): kernel32: Do not impose 32 bit limits on Win64 in GlobalMemoryStatus(). kernel32: Add stub for SetThreadSelectedCpuSets(). ntdll: Implement NtGetNextThread(). kernel32/tests: Fix test_GlobalMemoryStatus() for Win up to 8.1 and RAM size above 4GB. winex11.drv: Handle Vulkan surface creation with NULL hwnd. gamingtcui: Add dll. gamingtcui: Add stub for ProcessPendingGameUI(). gamingtcui: Add stub for ShowPlayerPickerUI(). gamingtcui: Add stub for ShowProfileCardUI(). vulkan-1/tests: Consider vkGetPhysicalDevicePresentRectanglesKHR absence in test_null_hwnd(). Piotr Caban (20): msvcrt: Fix typo in asin error handling. msvcrt: Import j0 implementation from musl. msvcrt: Import y0 implementation from musl. msvcrt: Import j1 implementation from musl. msvcrt: Import y1 implementation from musl. msvcrt: Import jn implementation from musl. msvcrt: Import yn implementation from musl. msvcrt: Import roundf implementation from musl. msvcrt: Import llroundf implementation from musl. msvcrt: Import llround implementation from musl. msvcrt: Import lroundf implementation from musl. msvcrt: Import lround implementation from musl. msvcrt: Import round implementation from musl. msvcrt/tests: Link to malloc/free functions in cpp tests. msvcrt/tests: Remove old versions workarounds from RTTI tests. msvcrt/tests: Remove strcmp_space helper. msvcrt/tests: Cleanup datatype demangle tests. msvcrt: Fix _unDName crash when demangling class function pointer. msvcrt: Fix round implementation when 24-bit precision is used. api-ms-win-core-console-l1-2-0: Add dll. Qian Hong (1): atl: Implement AtlAxDialogBox(). Rémi Bernon (39): mscoree: Initialize parsed_config_file private_path. user32/tests: Add more GetKeyboardLayout(Name) tests. user32: Move ToUnicodeEx from wineandroid.drv to user32. user32: Don't translate control codes when alt is pressed. user32: Translate missing vkeys in ToUnicodeEx. ntdll/tests: Remove Qpc(Interrupt|System)TimeIncrement(Shift) checks. user32: Add a default MapVirtualKeyEx implementation. user32: Add a default GetKeyNameTextW implementation. user32: Add a default VkKeyScanEx implementation. user32: Move GetKeyboardLayoutList from nulldrv. user32: Read "Layout Id" from registry in GetKeyboardLayoutList. user32: Add a default ActivateKeyboardLayout implementation. user32: Factor unsupported cases into ActivateKeyboardLayout. user32: Add a default GetKeyboardLayout implementation. hidclass.sys: Assign rawinput handles through device properties. user32: Read rawinput device handles assigned by hidclass.sys. user32: Use rawinput device handles to identify devices. user32: Remove hardcoded devices from GetRawInputDeviceList. user32: Always refresh rawinput device list when requested. user32: Free rawinput device preparsed data for mouse and keyboard. user32: Set last error codes on GetRawInputDeviceInfoW failure. user32: Remove unnecessary MOUSE / KEYBOARD special cases. user32: Refactor and simplify GetRawInputDeviceInfoW cases. hidclass.sys: Call IoInvalidateDeviceRelations before IoSetDevicePropertyData. user32: Add current keyboard layout to thread data. winemac.drv: Call ActivateKeyboardLayout when layout changes. user32: Factor ActivateKeyboardLayout previous layout logic. user32: Factor GetKeyboardLayout and remove driver call. user32: Factor GetKeyboardLayoutNameW implementations. user32: Read "Layout Id" from registry in GetKeyboardLayoutNameW. user32: Set keyboard layout preload key on init. user32: Adjust ToUnicodeEx control code translation. user32: Return success in nulldrv cursor callbacks. ntdll/tests: Check that creating huge thread stacks works. user32/tests: Add tests for keyboard layout preload list. user32: Cache current keyboard layout name. user32: Move (Un)LoadKeyboardLayoutW from winex11.drv to user32. user32: Implement KLF_ACTIVATE flag in LoadKeyboardLayoutW. user32: Read "Layout Id" from registry in LoadKeyboardLayoutW. Serge Gautherie (1): winbase.h: Add CREATE_IGNORE_SYSTEM_DEFAULT. Sven Baars (6): windows.globalization: Fix an incorrect sizeof (Coverity). aclui: Fix a leak on error path (Coverity). dwrite: Fix some memory leaks (Coverity). ddraw/tests: Move a misplaced assignment (Coverity). ntdll: Fix some memory leaks (Valgrind). ntdll/tests: Use FindClose() to close handles returned by FindFirstFileW() (Valgrind). Zebediah Figura (57): include: Do not include winsock.h in winsock2.h. include: Define _WINSOCKAPI_ in winsock2.h. include: Properly define struct sockaddr_ipx when not using the WS_ prefix. rpcrt4: Avoid gai_strerror(). include: Forbid using unsuffixed gai_strerror() in the Wine source. ws2_32/tests: Move address lookup tests to protocol.c. ws2_32/tests: Move host lookup tests to protocol.c. ws2_32/tests: Move service lookup tests to protocol.c. ws2_32/tests: Move address/string conversion tests to protocol.c. ws2_32/tests: Move namespace provider tests to protocol.c. ws2_32/tests: Add some tests for bind(). ws2_32/tests: Rewrite test_events(). ws2_32/tests: Add some tests for calling methods on a connecting socket. ws2_32: Do not free a static critical section. ws2_32: Don't call free_per_thread_data() on process exit. ntoskrnl/tests: Open the HID device with FILE_SHARE_READ | FILE_SHARE_WRITE. ws2_32: Move getaddrinfo() and related functions to a separate file. ws2_32: Move host lookup functions to protocol.c. ws2_32: Move name info functions to protocol.c. ws2_32: Move protocol lookup functions to protocol.c. ws2_32: Move service lookup functions to protocol.c. d3d8/tests: Port test_sample_mask() from d3d9. ws2_32: Move address/string conversion functions to protocol.c. ws2_32: Move byte order conversion functions to protocol.c. ws2_32: Move namespace provider stubs to protocol.c. ntdll: Quiet the FIXME for unmapped NTSTATUS values. ws2_32/tests: Add some tests for WSAGetOverlappedResult() status mapping. include: Factor out winetest_printf(). include: Introduce winetest_push_context() and winetest_pop_context(). ws2_32: Map EWOULDBLOCK to STATUS_DEVICE_NOT_READY. server: Return a proper NTSTATUS from IOCTL_AFD_ACCEPT. server: Return a proper NTSTATUS from IOCTL_AFD_ADDRESS_LIST_CHANGE. ws2_32: Map EADDRINUSE to STATUS_SHARING_VIOLATION. server: Map EADDRINUSE to STATUS_SHARING_VIOLATION. d3d11: Turn MultisampleEnable into a stub. wined3d: No longer export wined3d_device_set_render_state(). ws2_32: Map ENOTCONN to STATUS_INVALID_CONNECTION. server: Map ENOTCONN to STATUS_INVALID_CONNECTION. ws2_32: Map EFAULT to STATUS_ACCESS_VIOLATION. server: Map EFAULT to STATUS_ACCESS_VIOLATION. ws2_32: Map EINPROGRESS to STATUS_DEVICE_NOT_READY. server: Map EINPROGRESS to STATUS_DEVICE_NOT_READY. msi/tests: Pass an empty string to check_reg_str() instead of special-casing NULL. msi: Write "Clients" value as REG_MULTI_SZ in PublishProduct. msi/tests: Always explicitly test REG_MULTI_SZ strings. msi/tests: Make check_reg_* helpers more verbose. msi: Check for a NULL return from deformat_string() when checking for failure. wined3d: Acquire resources through wined3d_device_context_ops. wined3d: Wait for the resource to become idle in wined3d_cs_map(). wined3d: Modify the query state in wined3d_cs_issue_query(). wined3d: Update resources through wined3d_device_context_ops. d3d11/tests: Test implicit unbinding of an SRV when using the same resource as RTV in a deferred context. ws2_32: Add more status codes to NtStatusToWSAError(). ws2_32: Use NtStatusToWSAError() in WSAGetOverlappedResult(). ws2_32: Return TRUE from WSAGetOverlappedResult() if the NT status denotes success. ws2_32/tests: Always return overlapped sockets from tcp_socketpair(). ws2_32/tests: Add some tests for nonblocking async recv(). Zhiyi Zhang (8): comctl32/tests: Test that WM_THEMECHANGED should invalidate client area. comctl32: Repaint after the WM_THEMECHANGED message is received. comctl32/theming: Register themed dialog and scrollbar even when theming is not active. comctl32/test: Test that WM_SYSCOLORCHANGE should always be passed to the dialog procedure. comctl32/theme_dialog: Pass the WM_SYSCOLORCHANGE message to the original dialog procedure. gdi32: Fix typos for GET_DC_PHYSDEV. bcrypt: Fix a compiler warning on Mac. dxgi: Introduce a helper to convert between dxgi and wined3d display rotation types. Ziqing Hui (6): windowscodecs: Add stub for DdsFrameEncode. user32/tests: Add tests for maximizing and restoring windows without WS_CAPTION. winex11.drv: Correct a full screen condition. windowscodecs: Add tests for DDS encoder. windowscodecs: Add test data index to win_skip messages for DDS tests. windowscodecs: Implement DdsEncoder_Initialize. Łukasz Wojniłowicz (1): po: Update Polish translation. -- Alexandre Julliard julliard@winehq.org