หลังจากหนึ่งปีของการพัฒนาและเวอร์ชันทดลอง 29 เวอร์ชัน ได้มีการนำเสนอการใช้งาน Win32 API - Wine 10.0 แบบเปิดที่เสถียรซึ่งมีการเปลี่ยนแปลงมากกว่า 6000 รายการ ความสำเร็จที่สำคัญในเวอร์ชันใหม่ ได้แก่ การสนับสนุนอย่างเต็มที่สำหรับสถาปัตยกรรม ARM64EC การปรับขนาดบนหน้าจอที่มีความหนาแน่นของพิกเซลสูง การรวมไดรเวอร์ Wayland เป็นค่าเริ่มต้น การใช้งานแผงสำหรับปรับแต่งหน้าจอและจอยสติ๊ก แบ็กเอนด์มัลติมีเดียทางเลือกที่ใช้ FFmpeg, Bluetooth ไดรเวอร์, รองรับ Vulkan 1.4, ความสามารถในการจำลองการสลับโหมดวิดีโอ
มีการยืนยันแล้วว่าโปรแกรมจำนวน 5372 โปรแกรมทำงานได้อย่างถูกต้องใน Wine Windows (5336 โปรแกรมเมื่อปีที่แล้ว, 5266 โปรแกรมเมื่อสองปีที่แล้ว, 5156 โปรแกรมเมื่อสามปีที่แล้ว) และอีก 4435 โปรแกรม (4397 โปรแกรมเมื่อปีที่แล้ว, 4370 โปรแกรมเมื่อสองปีที่แล้ว, 4312 โปรแกรมเมื่อสามปีที่แล้ว) ทำงานได้ดีด้วยการตั้งค่าเพิ่มเติมและ DLL ภายนอก ส่วน 4020 โปรแกรม (3943 โปรแกรมเมื่อปีที่แล้ว, 3888 โปรแกรมเมื่อสองปีที่แล้ว, 3813 โปรแกรมเมื่อสามปีที่แล้ว) มีปัญหาเล็กน้อยที่ไม่ส่งผลกระทบต่อการทำงานพื้นฐานของแอปพลิเคชัน
นวัตกรรมที่สำคัญใน Wine 10.0:
- ARM64
- มีการสนับสนุนอย่างเต็มที่สำหรับสถาปัตยกรรม ARM64EC (ARM64 Emulation Compatible) ซึ่งเป็นระดับการสนับสนุนใน Wine ซึ่งมีความเท่าเทียมกันกับสถาปัตยกรรม ARM64 สถาปัตยกรรม ARM64EC ได้รับการออกแบบมาเพื่อทำให้การย้ายแอปพลิเคชันที่เดิมเขียนขึ้นสำหรับระบบ x64_86 ไปยังระบบ ARM64 ง่ายขึ้น และอนุญาตให้แต่ละโมดูลโค้ด x64_86 ทำงานในสภาพแวดล้อม ARM64 โดยใช้โปรแกรมจำลอง
- มีการรองรับรูปแบบไฟล์ ARM64X PE อย่างเต็มรูปแบบ ซึ่งช่วยให้คุณสามารถรวมโค้ดสำหรับสถาปัตยกรรม ARM64EC และ ARM64 ไว้ในไฟล์ปฏิบัติการไฟล์เดียว หากต้องการสร้าง Wine ในรูปแบบ ARM64X คุณต้องติดตั้ง LLVM จาก Git (ฟังก์ชันที่จำเป็นจะรวมอยู่ใน LLVM 20 release) และเมื่อรันสคริปต์ “configure” ให้ระบุตัวเลือก “-enable-archs=arm64ec,aarch64”
- มีการใช้งานอินเทอร์เฟซสำหรับการจำลองระบบ x64 86 บิต เมื่อใช้ ARM64EC ตัว Wine จะทำงานตามที่เป็นอยู่ และการจำลองจะใช้กับโค้ดแอปพลิเคชัน x86-64 เท่านั้น ไลบรารีที่มีโปรแกรมจำลองยังไม่รวมอยู่ในแพ็คเกจ Wine หลัก แต่หากต้องการเรียกใช้โค้ด x86-64 ในสภาพแวดล้อม ARM64 คุณสามารถใช้โปรแกรมจำลอง FEX ภายนอกที่สร้างด้วยการรองรับ ARM64EC
- การรองรับ ARM64 จำเป็นต้องใช้หน่วยความจำขนาด 4KB ตามที่ ABI กำหนด Windows (ทำงานในสภาพแวดล้อมที่มีเคอร์เนล) Linux(การใช้งานหน่วยความจำขนาด 16K หรือ 64K ยังไม่ได้รับการสนับสนุนในขณะนี้)
- ระบบย่อยกราฟิก
- ใช้การปรับขนาดที่แม่นยำยิ่งขึ้นบนหน้าจอที่มีความหนาแน่นของพิกเซลสูง (High-DPI) มีการรองรับโหมดการรับรู้ DPI เพื่อจัดระเบียบการแสดงผลของแอปพลิเคชันบนหน้าจอที่มีความหนาแน่นของพิกเซลสูง โดยพิจารณาว่าแอปพลิเคชันรองรับการปรับให้เข้ากับการเปลี่ยนแปลง DPI หรือไม่ (แอปพลิเคชันที่ไม่คำนึงถึง DPI จะถูกปรับขนาดโดยอัตโนมัติ) เพิ่มตัวเลือกเพื่อแทนที่การสนับสนุน High-DPI สำหรับแต่ละแอปพลิเคชันหรือคำนำหน้าไวน์
- เพิ่มการรองรับข้อกำหนด Vulkan 1.4 ให้กับไดรเวอร์สำหรับ Vulkan Graphics API แล้ว (รองรับ Vulkan 9.0 ใน Wine 1.3.272) เพิ่มการรองรับส่วนขยาย Vulkan สำหรับการเข้ารหัสและถอดรหัสวิดีโอ
- เมื่อใช้แบ็กเอนด์ X11 ความสามารถในการเรนเดอร์หน้าต่างลูก Vulkan สำหรับแอปพลิเคชันที่ใช้หน้าต่างดังกล่าวเพื่อแสดงเนื้อหา 3D ได้ถูกนำมาใช้แล้ว (ก่อนหน้านี้ คุณลักษณะดังกล่าวใช้ได้เฉพาะกับ OpenGL เท่านั้น)
- เพิ่มการสนับสนุนกลไกการเชื่อมโยงแบบอักษรลงในไลบรารี GdiPlus ซึ่งช่วยให้คุณใช้แบบอักษรหลายแบบในการแสดงข้อความได้ หากไม่มีแบบอักษรที่ครอบคลุมอักขระทั้งหมดที่พบในข้อความแยกกัน
- Wayland
- การกำหนดค่าเริ่มต้นจะรวมถึงไดรเวอร์ winewayland.drv ซึ่งช่วยให้ Wine ทำงานในสภาพแวดล้อมที่ใช้ Wayland โดยไม่ต้องใช้ส่วนประกอบ XWayland หรือ X11 Wine จะเรียกใช้แอปพลิเคชันเริ่มต้นโดยตรงบน Wayland ก็ต่อเมื่อ XWayland ไม่พร้อมใช้งานเท่านั้น มิเช่นนั้น XWayland จะเป็นตัวเรียกใช้งานที่ต้องการ หากต้องการบังคับใช้ Wayland คุณสามารถใช้ตัวแปรสภาพแวดล้อม DISPLAY หรือเพิ่มคีย์รีจิสทรีโดยการสร้างไฟล์ .reg: Windows แก้ไขรีจิสทรีเวอร์ชัน 5.00 [HKEY_CURRENT_USER\Software\Wine\Drivers] "Graphics" = "wayland" แล้วใช้คำสั่งต่อไปนี้เพื่อยืนยัน: $ WINEPREFIX = /path/to/prefix wine regedit /path/to/file.reg
- เพิ่มการรองรับ OpenGL และบัฟเฟอร์พิกเซล (pBuffer) ให้กับไดรเวอร์ winewayland.drv
- แก้ไขปัญหาเกี่ยวกับการวางตำแหน่งหน้าต่างป๊อปอัปในสภาพแวดล้อมที่ใช้ Wayland
- เมื่อใช้ Wayland จะมีการใช้การรองรับการกดซ้ำอัตโนมัติในขณะที่กดปุ่มค้างไว้
- การรวมเดสก์ท็อป
- เพิ่มกลไกการจำลอง "การตั้งค่าโหมด" แบบทดลองที่ช่วยให้คุณสามารถจำลองการสลับโหมดวิดีโอโดยไม่ต้องเปลี่ยนการตั้งค่าหน้าจอจริงๆ การมองเห็นการเปลี่ยนแปลงความละเอียดของหน้าจอโดยไม่ต้องเปลี่ยนโหมดวิดีโอนั้นถูกสร้างขึ้นโดยการขยายและปรับขนาดหน้าต่าง
- แอพเพล็ตแผงควบคุมเดสก์ท็อปใหม่ (desk.cpl) ได้รับการเพิ่มพร้อมกับการใช้งานอินเทอร์เฟซสำหรับจัดการการตั้งค่าการแสดงผล (ตัวอย่างเช่น คุณสามารถเปลี่ยนความละเอียดเสมือนของเดสก์ท็อปหรือกำหนดค่าพารามิเตอร์การแสดงผลที่จำลองได้)
- เพิ่มความสามารถในการรีเซ็ตการตั้งค่าหน้าจอเป็นค่าเริ่มต้นหากไม่สามารถกู้คืนสถานะได้หลังจากกระบวนการขัดข้อง
- เพิ่มการสนับสนุนสำหรับการปิดใช้งานการแสดงไอคอนในถาดระบบ (ใน "HKLM\Software\Microsoft\Windowsควรระบุ "NoTrayItemsDisplay=1" ใน "\CurrentVersion\Policies\Explorer"
- เพิ่มการสนับสนุนสำหรับการปิดใช้งานเชลล์ (Shell launcher) ในโหมดเดสก์ท็อป (ใน "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer ควรระบุ "NoDesktop=1"
- Direct3D
- ขณะนี้การเรนเดอร์ด้วย OpenGL ต้องการการรองรับ GLSL 1.20 รวมถึงส่วนขยาย EXT_framebuffer_object และ ARB_texture_non_power_of_two การสนับสนุนแบ็กเอนด์ ARB shader แบบเก่าและการตั้งค่า OffscreenRenderingMode ถูกยกเลิกแล้ว
- สำหรับ Direct3D 9 และเก่ากว่า มีการเพิ่มไปป์ไลน์กราฟิกฟังก์ชันคงที่แล้ว (Direct3D เก่าให้เฉพาะการดำเนินการกราฟิกที่กำหนดไว้ล่วงหน้าเท่านั้นซึ่งไม่สามารถเปลี่ยนแปลงได้) ใช้งานโดยใช้ภาษา HLSL shader และอนุญาตการจำลองฟังก์ชันคงที่เมื่อเรนเดอร์ผ่าน Vulkan หรือ OpenGL API
- การเรนเดอร์ด้วย Vulkan ใช้ส่วนขยาย Vulkan เพื่อเปลี่ยนสถานะของไปป์ไลน์กราฟิกแบบไดนามิก ลดการกระตุกในเกม
- เพิ่มแบ็กเอนด์ glsl-vkd3d ทางเลือกสำหรับ GLSL shaders โดยใช้ vkd3d-shader
- ให้การสนับสนุนเบื้องต้นสำหรับการรวบรวมเอฟเฟกต์ Direct3D โดยใช้ vkd3d-shader
- ไลบรารี D3DX9 ใช้ความสามารถในการสร้างพื้นผิว MIP (MipMap) เมื่อโหลดพื้นผิวเชิงปริมาตร เพิ่มการรองรับรูปแบบการแสดงสี 64bpp RGBA และ 48bpp RGB ในภาพ PNG รวมถึงรูปแบบ X8L8V8U8, A2W10V10U10, A8P8, V16U16 และ Q16W16V16U16
- เสียงและวิดีโอ
- แบ็กเอนด์มัลติมีเดียใหม่ถูกนำมาใช้แทนแบ็กเอนด์ที่ใช้ GStreamer โดยอิงจากการใช้ FFmpeg และเหมาะสำหรับการรันเฟรมเวิร์ก Media Foundation หากต้องการเปิดใช้งานแบ็กเอนด์สำรอง คุณควรระบุ “DisableGstByteStreamHandler=1” ในส่วนรีจิสทรี “HKCU\Software\Wine\MediaFoundation”
- การใช้งาน Media Foundation API ได้รับการปรับปรุงเพื่อรองรับแอปพลิเคชันที่ขึ้นอยู่กับส่วนประกอบการแยกส่วนและการถอดรหัสได้ดียิ่งขึ้น
- DirectMusic API ได้เพิ่มการรองรับสำหรับการโหลดไฟล์ MIDI
- อุปกรณ์อินพุต
- เพิ่มไดรเวอร์ Bluetooth เวอร์ชันเริ่มต้น
- เพิ่มแอปเพล็ตแผงควบคุมจอยสติ๊ก (joy.cpl) พร้อมการใช้งานการตั้งค่าสำหรับจอยสติ๊ก
- มีการปรับปรุงอุปกรณ์ชี้ตำแหน่ง (ทัชแพด เมาส์) ที่ใช้โปรโตคอล HID (Human Interface Device) โดยได้เพิ่มไดรเวอร์ mouhid.sys สำหรับอุปกรณ์ HID มีการปรับปรุงการแยกวิเคราะห์อุปกรณ์อินพุตแบบผสมอย่างถูกต้อง และขณะนี้มีการส่งข้อมูลเกี่ยวกับอุปกรณ์เหล่านั้นไปยังระบบแล้ว Windows-แอปพลิเคชันต่างๆ ในฐานะอุปกรณ์แยกต่างหาก
- สำหรับแบ็กเอนด์ X11 ได้เพิ่มการรองรับหน้าจอสัมผัสแล้ว และความสามารถในการใช้โหมดมัลติทัชผ่านการประมวลผลข้อความ WM_POINTER* (WM_POINTERENTER, WM_POINTERLEAVE ฯลฯ) ได้ถูกนำมาใช้แล้ว
- ปรับใช้การจัดวางโครงสร้างภายในบางส่วนของไลบรารี user32 ในหน่วยความจำที่ใช้ร่วมกัน ซึ่งเพิ่มประสิทธิภาพและลดภาระบนเซิร์ฟเวอร์ไวน์
- Winex11 เพิ่มการสนับสนุนสำหรับการประมวลผลเหตุการณ์ XInput2 ที่เกี่ยวข้องกับแต่ละหน้าต่าง
- ใช้การรองรับคีย์บอร์ดที่ถูกต้องด้วยรูปแบบ Dvorak
- เคอร์เนล (อินเทอร์เฟซเคอร์เนล) Windows)
- เพิ่มการสนับสนุนสำหรับการเพิ่มสิทธิ์ของกระบวนการ (กระบวนการที่เริ่มต้นทำงานในฐานะผู้ใช้มาตรฐานสามารถรับสิทธิ์ของผู้ดูแลระบบได้) เมื่อสร้างกระบวนการเซิร์ฟเวอร์ (เซิร์ฟเวอร์การกระทำ msi) เช่นเดียวกับกระบวนการที่เรียกใช้ฟังก์ชัน RtlCreateUserProcess() และ CreateProcessInternal() โทเค็นผู้ดูแลระบบแบบจำกัดจะถูกเปิดใช้งานตามค่าเริ่มต้น
- เมื่อได้รับข้อมูลเกี่ยวกับป้ายชื่อดิสก์ เมื่อใดก็ตามที่เป็นไปได้ การเข้าถึงบริการระบบผ่าน DBus จะถูกนำมาใช้ แทนที่จะพยายามเข้าถึงอุปกรณ์โดยตรง
- กลไกการสื่อสารระหว่างกระบวนการแบบทางเดียว (IPC) ของ Mailslots ได้ถูกนำมาใช้งานโดยตรงในเซิร์ฟเวอร์ Wine แล้ว ทำให้สามารถรองรับความหมายได้อย่างสมบูรณ์ Windows.
- ดำเนินการรอเหตุการณ์พอร์ตอนุกรมในโหมดอะซิงโครนัส
- เพิ่มการสนับสนุนเต็มรูปแบบสำหรับส่วนขยายตัวประมวลผล XSTATE ในบริบทของเธรด ทำให้สามารถใช้ส่วนขยายเวกเตอร์ใหม่ เช่น AVX-512
- แอปพลิเคชันแบบฝังตัว
- เอ็นจิ้นการประมวลผลข้อมูลอินพุตที่ใช้ในตัวแปลคำสั่ง cmd.exe ได้รับการเขียนใหม่ เพิ่มการรองรับการดำเนินการ “||” ใน cmd.exe และ "&&".
- ยูทิลิตี้ findstr ได้เพิ่มการรองรับสำหรับนิพจน์ทั่วไปและการค้นหาที่ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
- เพิ่มความสามารถในการลงทะเบียนโมดูล ARM32EC ลงในยูทิลิตี้ regsvr32 และ rundll64 แล้ว
- เพิ่มยูทิลิตี้: เรียงลำดับสำหรับการเรียงลำดับข้อมูลที่ป้อน fc เพื่อเปรียบเทียบไฟล์ และตำแหน่งสำหรับค้นหาไฟล์
- แอปพลิเคชัน wmic ใช้โหมดการทำงานแบบโต้ตอบ
- Explorer ได้เพิ่มการสนับสนุนเพิ่มเติมสำหรับเมนูเริ่มต้นและแถบเครื่องมือ เปิดใช้งานการเปิดตัว explorer.exe พร้อมสิทธิ์การเข้าถึงที่ลดลง
- เครื่องมือพัฒนา
- เพิ่มตัวเลือก "-marm64x" ให้กับ winebuild เพื่อสร้างไลบรารีไฮบริด ARM64X
- เพิ่มตัวเลือก "-marm64x" ให้กับ winegcc เพื่ออนุญาตให้สร้าง ARM64X
- ไฟล์ที่สร้างโดยใช้ Interface Definition Language (IDL) ใช้ส่วนประกอบที่รองรับการดำเนินการในโหมดตีความอย่างสมบูรณ์
- เพิ่มการสนับสนุนสำหรับการสร้างไลบรารีประเภท (TypeLib) ในรูปแบบเก่า (SLTG) ลงในคอมไพเลอร์ IDL (Interface Definition Language)
- ยูทิลิตี้ winedump ได้เพิ่มการรองรับสำหรับการบันทึกดัมพ์ของตาราง minidump ข้อมูลข้อยกเว้น C++ และทรัพยากร typelib
- หนังสือรวบรวมเรื่อง
- ปรับปรุงการสนับสนุนโปรโตคอลการแลกเปลี่ยนคีย์ Diffie-Hellman (DH) เพิ่มความสามารถในการกำหนดค่าและรับพารามิเตอร์ DH ใช้ตัวจัดการสำหรับการสร้างคู่ของคีย์สาธารณะและส่วนตัว
- มีการจัดเตรียมการใช้ OAEP (Padding การเข้ารหัสแบบอสมมาตรที่เหมาะสมที่สุด) แบบเพิ่มหน่วย ร่วมกับอัลกอริธึม RSA
- DirectPlay API รองรับเซสชันเครือข่าย
- ปรับปรุงการจัดการสถานะอินพุต/เอาต์พุตแบบอะซิงโครนัสเมื่อทำงานในโหมด WoW64 (64 บิต) Windows-บน-Windowsซึ่งช่วยให้คุณสามารถใช้งานแบบ 32 บิตได้ Windows-แอปพลิเคชันบนระบบ Unix 64 บิต
- เพิ่มการสนับสนุนสำหรับการโหลดไดรเวอร์ ODBC สำหรับ DBMS ที่คอมไพล์สำหรับ Windows.
- สำหรับแพลตฟอร์ม ARM จะมีการใช้การสนับสนุนเต็มรูปแบบสำหรับ RPC/COM, C++ RTTI (ข้อมูลชนิดรันไทม์) และข้อยกเว้น C++
- ในรันไทม์ C ฟังก์ชัน ANSI ใช้การรองรับการเข้ารหัส UTF-8
- ความสามารถของกลไก MSHTML ได้รับการขยายแล้ว เพิ่มการรองรับต้นแบบและตัวสร้างวัตถุ มีการเพิ่มอินเทอร์เฟซการผูกวัตถุใหม่สำหรับ MSHTML ลงในกลไกจัดการ JavaScript ฟังก์ชันในตัว MSHTML ได้รับการแปลงเป็นวัตถุ JavaScript ที่ถูกต้อง ปรับปรุงการรวบรวมขยะ JavaScript เพื่อให้ครอบคลุมบริบทการดำเนินการสคริปต์ทั้งหมดในเธรด เพิ่มการสนับสนุนสำหรับวัตถุ ArrayBuffer และ DataView JavaScript
- เพิ่มการสนับสนุนสำหรับการวิเคราะห์แบบคงที่โดยใช้รายงานการทดสอบ Clang และ JUnit ในระบบบูรณาการอย่างต่อเนื่องบน Gitlab
- ไลบรารี Capstone 5.0.3 ถูกสร้างขึ้นในแพ็คเกจ ซึ่งใช้การถอดแยกชิ้นส่วนในดีบักเกอร์ WineDb
- ส่วนประกอบที่อัปเดตเป็นเวอร์ชันใหม่: Vkd3d 1.14, Faudio 24.10, FluidSynth 2.4.0, LDAP 2.5.18, LCMS2 2.16, LibJpeg 9f, LibMPG123 1.32.9, LibPng 1.6.44, LibTiff 4.7.0, LibXml2 2.12.8, LibXslt 1.1.42 และ Zlib 1.3.1
ที่มา: opennet.ru
