หลังจากหนึ่งปีของการพัฒนาและเวอร์ชันทดลอง 26 เวอร์ชัน ได้มีการนำเสนอการใช้งาน Win32 API - Wine 9.0 แบบเปิดที่เสถียรซึ่งมีการเปลี่ยนแปลงมากกว่า 7000 รายการ ความสำเร็จที่สำคัญในเวอร์ชันใหม่ ได้แก่ การใช้สถาปัตยกรรม WoW64 สำหรับการรันโปรแกรม 32 บิตในสภาพแวดล้อม 64 บิต การบูรณาการไดรเวอร์เพื่อรองรับ Wayland การรองรับสถาปัตยกรรม ARM64 การใช้ DirectMusic API และการรองรับสมาร์ทการ์ด
มีการยืนยันแล้วว่าโปรแกรมจำนวน 5336 โปรแกรม (5266 โปรแกรมเมื่อหนึ่งปีก่อน, 5156 โปรแกรมเมื่อสองปีก่อน, 5049 โปรแกรมเมื่อสามปีก่อน) ทำงานได้อย่างถูกต้องใน Wine Windowsโปรแกรมอีก 4397 โปรแกรม (4370 โปรแกรมเมื่อหนึ่งปีก่อน, 4312 โปรแกรมเมื่อสองปีก่อน, 4227 โปรแกรมเมื่อสามปีก่อน) ทำงานได้ดีโดยมีการตั้งค่าเพิ่มเติมและไฟล์ DLL ภายนอก โปรแกรม 3943 โปรแกรม (3888 โปรแกรมเมื่อหนึ่งปีก่อน, 3813 โปรแกรมเมื่อสองปีก่อน, 3703 โปรแกรมเมื่อสามปีก่อน) มีปัญหาเล็กน้อยที่ไม่ส่งผลกระทบต่อการทำงานพื้นฐานของแอปพลิเคชัน
นวัตกรรมที่สำคัญใน Wine 9.0:
- ได้มีการเพิ่มไดรเวอร์ winewayland.drv เข้ามาแล้ว ทำให้สามารถใช้ Wine ในสภาพแวดล้อมที่ใช้ Wayland ได้โดยไม่ต้องใช้ส่วนประกอบ XWayland หรือ X11 การพัฒนานี้มีจุดมุ่งหมายเพื่อให้ได้สภาพแวดล้อม Wayland ที่บริสุทธิ์พร้อมการสนับสนุนการเปิดใช้งาน Windows- แอปพลิเคชันที่ไม่จำเป็นต้องติดตั้งแพ็กเกจที่เกี่ยวข้องกับ X11 ซึ่งช่วยให้เกมมีประสิทธิภาพและตอบสนองได้ดียิ่งขึ้นโดยการกำจัดเลเยอร์ที่ไม่จำเป็น การใช้สภาพแวดล้อม Wayland ที่บริสุทธิ์สำหรับ Wine ยังช่วยขจัดปัญหาด้านความปลอดภัยที่เกิดขึ้นจาก X11 (ตัวอย่างเช่น เกม X11 ที่ไม่น่าเชื่อถือสามารถสอดแนมแอปพลิเคชันอื่นได้ เนื่องจากโปรโตคอล X11 อนุญาตให้เข้าถึงเหตุการณ์อินพุตทั้งหมดและทำการแทนที่การกดแป้นพิมพ์)
ไดรเวอร์ถูกทำเครื่องหมายว่าเป็นรุ่นทดลองและอยู่ระหว่างการพัฒนา แต่ถึงกระนั้น ก็รองรับคุณสมบัติมากมายแล้ว เช่น การจัดการหน้าต่าง การทำงานกับจอภาพหลายจอ การรองรับการปรับขนาดเอาต์พุตบนหน้าจอความหนาแน่นของพิกเซลสูง (high-DPI) การทำงานร่วมกับ พิกัดสัมพัทธ์เมื่อติดตามการเคลื่อนไหวของเมาส์และรองรับ Vulkan Graphics API ตามค่าเริ่มต้น ไดรเวอร์จะไม่ทำงาน และหากต้องการเปิดใช้งาน คุณควรเพิ่ม “wayland” ให้กับพารามิเตอร์รีจิสทรี “HKCU\Software\Wine\Drivers” และตรวจสอบให้แน่ใจว่าไม่ได้ตั้งค่าตัวแปรสภาพแวดล้อม DISPLAY: wine reg.exe เพิ่ม HKCU\ \Software\\Wine\\Drivers /v กราฟิก /d x11,wayland
- โมดูลทั้งหมดได้รับการแปลงเป็นอินเทอร์เฟซการเรียกของระบบ NT แทนที่จะทำการเรียกโดยตรงระหว่างเลเยอร์ PE และ Unix ถือเป็นการเสร็จสิ้นการทำงานเป็นเวลาหลายปีในการแปลง DLL ทั้งหมดเพื่อใช้รูปแบบไฟล์ปฏิบัติการ PE (Portable Executable)
- การพัฒนาเลเยอร์ WoW64 (64 บิต) ยังคงดำเนินต่อไป Windows-บน-Windowsซึ่งช่วยให้คุณสามารถใช้งานแบบ 32 บิตได้ Windows- แอปพลิเคชันบนระบบ Unix 64 บิต โมดูลทั้งหมดที่เข้าถึงไลบรารี Unix ใช้ตัวแปลการเรียกใช้ระบบ WoW64 (thunks) ซึ่งช่วยให้โมดูล 32 บิตในรูปแบบ PE สามารถเข้าถึงไลบรารี Unix 64 บิตได้
โหมดการเปิดใช้งาน WoW64 ใหม่ได้รับการปรับปรุงแล้ว ทำให้โค้ด 32 บิตสามารถทำงานภายในกระบวนการ 64 บิตได้ (ในโหมด WoW64 แบบเก่า แอปพลิเคชัน 32 บิตจะทำงานในกระบวนการ Unix 32 บิต) มีการเพิ่มการสนับสนุนสำหรับการใช้งานโหมด WoW64 ใหม่บนแพลตฟอร์มแล้ว macOSเนื่องจากโหมด WoW64 ใหม่ยังมีบั๊กเล็กน้อย เช่น ขาดการรองรับ 16 บิต และประสิทธิภาพ OpenGL ลดลงเนื่องจากขาดการรองรับส่วนขยาย ARB_buffer_storage จึงยังไม่ได้เปิดใช้งานโดยค่าเริ่มต้น และจำเป็นต้องสร้างด้วยตัวเลือก "--enable-archs=i386,x86_64" ในสคริปต์ configure
- เพิ่มความสามารถในการเรียกใช้ไฟล์ปฏิบัติการที่มีอยู่แล้ว Windows บนระบบที่มีสถาปัตยกรรม ARM64 ปัจจุบัน Wine สามารถสร้างสำหรับ ABI ARM64EC (ARM64 Emulation Compatible) ได้แล้ว และสามารถโหลดโมดูล ARM64EC ได้ โมดูลเหล่านี้ใช้เพื่อลดความซับซ้อนในการพอร์ตแอปพลิเคชันที่เขียนขึ้นสำหรับสถาปัตยกรรม x86_64 ไปยังระบบ ARM64 โดยการเปิดใช้งานการเรียกใช้โมดูลโค้ด x86_64 แต่ละโมดูลในสภาพแวดล้อม ARM64 โดยใช้โปรแกรมจำลอง มีการเพิ่มการสนับสนุนสำหรับรูปแบบไฟล์ ARM64X PE ซึ่งอนุญาตให้โหลดไฟล์ปฏิบัติการเดียวในทั้งกระบวนการ x64/Arm64EC และ ARM64 มีการใช้งานอินเทอร์เฟซสำหรับการจำลองระบบ x86 32 บิตแล้ว แต่ไลบรารีโปรแกรมจำลองยังไม่รวมอยู่ใน Wine เวอร์ชันหลัก (สามารถใช้โปรแกรมจำลอง FEX ภายนอกเพื่อเรียกใช้โค้ด x86 ในสภาพแวดล้อม ARM64 ได้)
- ระบบย่อยกราฟิก
- ไดรเวอร์ PostScript ได้รับการออกแบบใหม่เพื่อรองรับไฟล์สปูลในรูปแบบดังกล่าว Windowsซึ่งเก็บข้อมูลเกี่ยวกับงานพิมพ์ การเรียกใช้ไดรเวอร์โดยตรงจากสภาพแวดล้อม Unix นั้นไม่รวมอยู่ในเงื่อนไขนี้
- เพิ่มการรองรับโหมดมืดให้กับธีม WinRT แล้ว เพิ่มการตั้งค่าใน WineCfg เพื่อเปิดใช้งานการออกแบบอินเทอร์เฟซสีเข้ม
- ไดรเวอร์สำหรับ Vulkan Graphics API ได้เพิ่มการรองรับสำหรับข้อกำหนด Vulkan 1.3.272 (รองรับ 8.0 ใน Wine 1.3.237)
- ฟังก์ชั่นของไลบรารี GdiPlus ได้รับการปรับให้เหมาะสม ทำให้สามารถเพิ่มประสิทธิภาพกราฟิกได้
- Direct3D
- การแยกวิเคราะห์สตรีมคำสั่งแบบมัลติเธรดจะถูกระงับเมื่อไม่มีการประมวลผลคำสั่งการเรนเดอร์ ซึ่งช่วยลดการใช้พลังงานลงถึงระดับของการประมวลผลแบบเธรดเดี่ยวเมื่อรันโปรแกรมที่ไม่ได้ใช้แบนด์วิดท์สตรีมคำสั่งทั้งหมด
- Direct3D 10 มีการรองรับเอฟเฟกต์เพิ่มเติม
- ปรับปรุงประสิทธิภาพโค้ด WineD3D และแบ็กเอนด์โดยใช้ Vulkan Graphics API
- ขณะนี้โค้ดการเรนเดอร์ที่ใช้ Vulkan API จะตรวจสอบความสามารถที่อุปกรณ์รองรับ และบอกแอปพลิเคชันว่าฟังก์ชัน Direct3D ใช้งานได้ในระดับใด
- มีการใช้ฟังก์ชัน D3DXFillTextureTX และ D3DXFillCubeTextureTX แล้ว
- แบ็กเอนด์ OpenGL ARB shader แบบคลาสสิกได้เพิ่มการรองรับสำหรับการกำหนดเงาโดยใช้ส่วนขยาย ARB_fragment_program_shadow
- D3DXLoadMeshHierarchyFromX และฟังก์ชันที่คล้ายกันได้เพิ่มการรองรับสำหรับการโหลดข้อมูลผู้ใช้โดยใช้อินเทอร์เฟซ ID3DXLoadUserData
- เสียงและวิดีโอ
- มีการเสนอการใช้งาน DirectMusic API ในเบื้องต้น เพิ่มการรองรับคอลเลกชัน เครื่องดนตรี และตัวอย่างเสียงในรูปแบบ SoundFont เพิ่มการรองรับเอฟเฟกต์ Doppler มีการทดสอบเพื่อตรวจสอบการใช้งานที่ถูกต้องเมื่อใช้งานซีเควนเซอร์ dmime และซินธิไซเซอร์ dmsynth MIDI
- ไลบรารี FluidSynth ถูกสร้างขึ้นใน DirectMusic API เพื่อการใช้งาน
- เพิ่มการรองรับการโหลด Sound Font (SoundFont - รูปแบบสำหรับการสังเคราะห์เสียงโดยใช้ตัวอย่างเสียงที่ใช้ในการเล่นไฟล์ MIDI) ในรูปแบบ DLS1 และ DLS2 รวมถึงรูปแบบ SF2 ที่ใช้ใน... Linux.
- เพิ่มความสามารถในการเล่นเนื้อหา MIDI โดยใช้ไลบรารี dmsynth โดยใช้ซอฟต์แวร์สังเคราะห์ FluidSynth และ DirectSound API สำหรับเอาต์พุตเสียง
- เพิ่มตัวถอดรหัสสำหรับวิดีโอในรูปแบบตัวแปลงสัญญาณวิดีโอ Indeo IV50
- Directshow
- ส่วนประกอบ DMO (DirectX Media Object) พร้อมตัวถอดรหัสรูปแบบ WMV ได้ถูกนำมาใช้งานแล้ว (Windows (มีเดีย วิดีโอ)
- เพิ่มตัวกรองการจับเสียง (ตัวกรองการจับเสียง DirectShow)
- นอกเหนือจากสตรีมเสียงแล้ว MPEG-1 Stream Splitter (DirectShow MPEG-1 Stream Splitter) ยังรองรับสตรีมวิดีโอและสตรีมบริการอีกด้วย
- มีการใช้ตัวกรองสำหรับการถอดรหัสวิดีโอในรูปแบบ MPEG-1 (DirectShow MPEG-1 Video Decoder)
- อุปกรณ์อินพุต
- DirectInput รองรับการแมปการกระทำ ซึ่งช่วยให้คุณสามารถผูกปุ่มบนตัวควบคุมเกมเข้ากับการกระทำเฉพาะในเกมได้
- การรวมเดสก์ท็อป
- การเชื่อมโยงถูกส่งออกไปยังสภาพแวดล้อมผู้ใช้หลัก ทำให้สามารถเรียกแอปพลิเคชันที่ทำงานภายใต้ Wine เป็นตัวจัดการโปรโตคอลเมื่อเปิด URL (เช่น เปิดใช้ Spotify.exe เมื่อเปิดลิงก์ เช่น “spotify:user:spotify:playlist:848218482355482821”)
- ใช้งานการแยกข้อมูล EDID (Extensed Display Identification Data) พร้อมข้อมูลเกี่ยวกับพารามิเตอร์ของจอภาพที่เชื่อมต่อ เช่น ชื่อและรุ่นของอุปกรณ์
- คุณสามารถปิดหน้าต่างเดสก์ท็อปที่ใช้งานในโหมดเต็มหน้าจอได้โดยใช้ปุ่ม "ออกจากเดสก์ท็อป" ในเมนู "เริ่ม"
- การทำให้เป็นสากล
- การสนับสนุน IME (Input Method Editor) ได้รับการขยายเพิ่มเติมแล้ว และได้มีการดำเนินการเพื่อให้มั่นใจถึงความเข้ากันได้กับระบบดั้งเดิม Windows การใช้งาน IME และการบูรณาการที่ดีขึ้นกับ Linux IME
- มีการสร้างฐานข้อมูลโลแคลในรูปแบบ locale.nls จากฐานข้อมูล Unicode CLDR (Unicode Common Locale Data Repository) เวอร์ชัน 44 แล้ว รองรับโลแคลเพิ่มเติม bew-ID, blo-BJ, csw-CA, ie-EE, mic-CA , prg-PL ได้รับการเพิ่ม , skr-PK, tyv-RU, vmw-MZ, xnr-IN และ za-CN
- อินเทอร์เฟซได้รับการแปลเป็นภาษาจอร์เจียแล้ว มีการแปลฉบับเต็มสำหรับ 16 ภาษา และการแปลบางส่วนสำหรับ 31 ภาษา
- ตารางอักขระ Unicode ได้รับการอัปเดตเป็นเวอร์ชันมาตรฐาน 15.1.0 ฐานข้อมูลเขตเวลาได้รับการอัปเดตแล้ว
- เคอร์เนล (อินเทอร์เฟซเคอร์เนล) Windows)
- ตามเวอร์ชันที่เผยแพร่ Windows กำหนดโดยค่าเริ่มต้น Windows 10.
- สำหรับไฟล์ปฏิบัติการในรูปแบบ PE จะมีการรองรับการสุ่มพื้นที่ที่อยู่ (ASLR) แต่ที่อยู่สำหรับการโหลดโค้ดลงในหน่วยความจำยังไม่ได้รับการสุ่มอย่างสมบูรณ์
- มีการนำการสนับสนุนฮีปที่มีการแยกส่วนแบบอ่อนแอ (LFH, Low Fragmentation Heap) มาใช้ ซึ่งได้เพิ่มประสิทธิภาพการดำเนินการจัดสรรหน่วยความจำ
- เพิ่มการรองรับการสำรองหน่วยความจำ (placeholder) ให้กับกลไกการจัดสรรหน่วยความจำเสมือน ทำให้แอปพลิเคชันสามารถจองพื้นที่หน่วยความจำเสมือนเฉพาะเพื่อใช้ในอนาคตได้
- ตัวโหลด 64 บิต (ตัวโหลดและตัวโหลดล่วงหน้า) ของไฟล์เรียกทำงานและไลบรารีจะถูกรวบรวมในรูปแบบ PIE (ตัวเรียกทำงานอิสระตำแหน่ง) เพื่อเพิ่มพื้นที่ว่างส่วนหนึ่งของที่อยู่ 32 บิต
- มีการคลี่คลายสแต็กที่ถูกต้องสำหรับการเรียกระบบ NT และการโทรกลับของผู้ใช้
- คุณสมบัติด้านเครือข่าย
- กลไกจัดการ MSHTML รองรับกลไกการรวบรวมขยะ "Cycle Collection"
- MSHTML ได้เพิ่มการสนับสนุนสำหรับการประมวลผลคำขอ XMLHttpRequest แบบซิงโครนัส
- jscript.dll เพิ่มการรองรับออบเจ็กต์ WeakMap เพื่อทำงานกับคอลเลกชันของคู่คีย์/ค่า โดยที่คีย์นั้นเป็นออบเจ็กต์ที่สามารถแนบค่าใดๆ ก็ได้ ใช้งาน WeakMap.get(), WeakMap.delete(), WeakMap.clear() และ WeakMap.has() วิธีการ
- เอ็นจิ้นเบราว์เซอร์ Gecko ได้รับการอัพเดตเป็นเวอร์ชัน 2.47.4
- มีการรองรับการแจ้งเตือนเกี่ยวกับการเปลี่ยนแปลงสถานะของอินเทอร์เฟซเครือข่าย
- การเข้ารหัสและความปลอดภัย
- เพิ่มการรองรับสมาร์ทการ์ดในไลบรารี Winscard.dll ซึ่งใช้งานผ่านไลบรารีระบบ PCSClite
- BCrypt ได้เพิ่มการสนับสนุนสำหรับโปรโตคอลการแลกเปลี่ยนคีย์ Diffie-Hellman
- แพ็คเกจ Negotiate ได้รับการปรับใช้ โดยจัดให้มีเลเยอร์สำหรับการใช้อินเทอร์เฟซ SSPI (Security Support Provider Interface) เพื่อเข้าถึงผู้ให้บริการ SSP (Security Support Provider)
- แอปพลิเคชันแบบฝังตัว
- Wine Debugger (winedbg) ใช้ไลบรารี Zydis เพื่อแยกชุดคำสั่งเครื่อง X86
- อินเทอร์เฟซของ WineCfg ได้รับการอัปเดตเพื่อรองรับเวอร์ชันเก่าบนแพลตฟอร์ม 64 บิตแล้ว Windows (ก่อน XP) ซึ่งช่วยให้คุณสามารถเรียกใช้แอปพลิเคชันรุ่นเก่าโดยใช้โหมด WoW64 ได้
- แอปพลิเคชันกราฟิกในตัวทั้งหมดจะแสดงข้อมูลข้อผิดพลาดในกล่องโต้ตอบแยกต่างหาก แทนที่จะแสดงในคอนโซล
- โปรแกรม systeminfo จะแสดงข้อมูลจากฐานข้อมูล WMI (Windows เครื่องมือการจัดการ)
- เพิ่มแอปพลิเคชัน klist เพื่อแสดงตั๋ว Kerberos
- แอปพลิเคชัน Taskkill ใช้ความสามารถในการยุติกระบวนการลูกอย่างมีกำลัง
- เพิ่มตัวเลือก "/machine" ให้กับยูทิลิตี้เริ่มต้นเพื่อเลือกสถาปัตยกรรมที่ใช้เมื่อเรียกใช้ไฟล์ปฏิบัติการแบบไฮบริดที่รองรับ x86 และ ARM
- มีการนำฟังก์ชันการทำงานส่วนใหญ่ของโปรแกรมรายการงานไปใช้แล้ว
- เพิ่มการใช้งานพื้นฐานของแอปพลิเคชัน findstr
- เครื่องมือพัฒนา
- โปรแกรม WineDump มีความสามารถในการแสดงเนื้อหาของไฟล์รีจิสทรี Windows (รูปแบบ REGF) รวมถึงการแสดงข้อมูลสำหรับสถาปัตยกรรมทั้งหมด (x86/ARM64) ที่รองรับในไฟล์ PE แบบไฮบริด
- คอมไพเลอร์ IDL ได้เพิ่มการสนับสนุนสำหรับแอตทริบิวต์ "composable", "default_overload", "deprecated" และ "protected"
- ลบ libwine.so ซึ่งเลิกใช้แล้วใน Wine 6.0 และไม่ได้ใช้ใน Wine อีกต่อไป โปรแกรมในรูปแบบ ELF ที่สร้างขึ้นใน Wine เวอร์ชันเก่า (5.0 และเก่ากว่า) พร้อม libwine.so จำเป็นต้องสร้างใหม่เพื่อให้ทำงานใน Wine 9.0
- ไลบรารีในตัวและการขึ้นต่อกันภายนอก
- ไลบรารี FluidSynth 2.3.3, Musl 1.2.3 (ฟังก์ชันทางคณิตศาสตร์เท่านั้น) และ Zydis 4.0.0 ถูกรวมไว้ในแพ็คเกจ
- Components Vkd3d 1.10, Faudio 23.12, OpenLDAP 2.5.16, LCMS2 2.15, LibMPG123 1.32.2, LibPng 1.6.40, LibTiff 4.6.0, LibXml2 2.11.5, LibXslt 1.1.38 และ Zlib 1.3 ได้รับการอัพเดตเป็นเวอร์ชันใหม่แล้ว เอ็นจิ้น Wine Mono ที่ใช้งานแพลตฟอร์ม .NET ได้รับการอัพเดตเป็น 8.1.0
- ไดรเวอร์ winewayland.drv ใช้ไลบรารีไคลเอ็นต์ของ Wayland เป็นการพึ่งพาภายนอก เช่นเดียวกับไลบรารี xkbcommon และ xkbregistry
- เพื่อรองรับสมาร์ทการ์ด จะใช้ไลบรารี PCSClite ภายนอก (ใน macOS — PCSC)
- ขณะนี้การสร้างไฟล์ PE บนแพลตฟอร์มที่ไม่ใช่ i386 ต้องใช้คอมไพเลอร์ข้ามที่รองรับคำสั่ง ".seh" เพื่อจัดการกับข้อยกเว้น
ที่มา: opennet.ru
