การเปิดตัว Wine 9.0 ที่เสถียร

หลังจากหนึ่งปีของการพัฒนาและเวอร์ชันทดลอง 26 เวอร์ชัน ได้มีการนำเสนอการใช้งาน Win32 API - Wine 9.0 แบบเปิดที่เสถียรซึ่งมีการเปลี่ยนแปลงมากกว่า 7000 รายการ ความสำเร็จที่สำคัญในเวอร์ชันใหม่ ได้แก่ การใช้สถาปัตยกรรม WoW64 สำหรับการรันโปรแกรม 32 บิตในสภาพแวดล้อม 64 บิต การบูรณาการไดรเวอร์เพื่อรองรับ Wayland การรองรับสถาปัตยกรรม ARM64 การใช้ DirectMusic API และการรองรับสมาร์ทการ์ด

Wine ได้ยืนยันการทำงานเต็มรูปแบบของโปรแกรม 5336 (ปีที่แล้ว 5266 สองปีที่แล้ว 5156 สามปีที่แล้ว 5049) โปรแกรมสำหรับ 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 (Windows-on-Windows 64 บิต) ซึ่งช่วยให้สามารถเรียกใช้แอปพลิเคชัน Windows 32 บิตบนระบบ Unix 64 บิตได้ดำเนินต่อไป โมดูลทั้งหมดที่เข้าถึงไลบรารี Unix ใช้การเรียกระบบ WoW64 เพื่ออนุญาตให้โมดูลที่จัดรูปแบบ PE 32 บิตสามารถเข้าถึงไลบรารี Unix 64 บิต

    ปรับปรุงโหมดการเปิดตัว WoW64 ใหม่ ซึ่งเรียกใช้โค้ด 32 บิตภายในกระบวนการ 64 บิต (ในโหมด WoW64 เก่า แอปพลิเคชัน 32 บิตทำงานในกระบวนการ Unix 32 บิต) เพิ่มการรองรับการใช้โหมด WoW64 ใหม่บนแพลตฟอร์ม macOS เนื่องจากโหมด WoW64 ใหม่มีข้อบกพร่องบางประการ เช่น ขาดการรองรับโหมด 16 บิต และประสิทธิภาพ OpenGL ลดลงเนื่องจากขาดการรองรับส่วนขยาย ARB_buffer_storage จึงยังไม่ได้เปิดใช้งานตามค่าเริ่มต้น และจำเป็นต้องสร้างด้วยตัวเลือก “-enable-” archs=i386,x86_64” " ในสคริปต์กำหนดค่า

  • เพิ่มความสามารถในการรันโปรแกรมปฏิบัติการ Windows ที่มีอยู่ในระบบสถาปัตยกรรม ARM64 ความสามารถในการสร้างไวน์สำหรับ ARM64EC ABI (เข้ากันได้กับการจำลอง ARM64) และการสนับสนุนสำหรับการโหลดโมดูล ARM64EC ได้ถูกนำมาใช้แล้ว ซึ่งใช้เพื่อทำให้การย้ายแอปพลิเคชันที่เขียนขึ้นสำหรับสถาปัตยกรรม x64_86 ไปยังระบบ ARM64 ง่ายขึ้น โดยให้ความสามารถในการดำเนินการแต่ละโมดูลด้วย x64_86 รหัสในสภาพแวดล้อม ARM64 โดยใช้โปรแกรมจำลอง เพิ่มการรองรับรูปแบบไฟล์ ARM64X PE ซึ่งช่วยให้สามารถโหลดไฟล์ปฏิบัติการไฟล์เดียวในกระบวนการ x64/Arm64EC และ ARM64 มีการใช้อินเทอร์เฟซสำหรับการจำลองระบบ x32 แบบ 86 บิตแล้ว แต่ไลบรารีที่มีโปรแกรมจำลองยังไม่รวมอยู่ในแพ็คเกจไวน์หลัก (คุณสามารถใช้โปรแกรมจำลอง 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 เพื่อการใช้งาน
    • รองรับการโหลดฟอนต์เสียง (SoundFont - รูปแบบการสังเคราะห์ตามตัวอย่างที่ใช้ในการเล่นไฟล์ MIDI) ในรูปแบบ DLS1 และ DLS2 รวมถึงในรูปแบบ SF2 ที่ใช้ใน Linux ได้ถูกนำมาใช้แล้ว
    • เพิ่มความสามารถในการเล่นเนื้อหา MIDI โดยใช้ไลบรารี dmsynth โดยใช้ซอฟต์แวร์สังเคราะห์ FluidSynth และ DirectSound API สำหรับเอาต์พุตเสียง
    • เพิ่มตัวถอดรหัสสำหรับวิดีโอในรูปแบบตัวแปลงสัญญาณวิดีโอ Indeo IV50
  • Directshow
    • มีการใช้ส่วนประกอบ DMO (DirectX Media Object) พร้อมด้วยตัวถอดรหัสรูปแบบ WMV (Windows Media Video)
    • เพิ่มตัวกรองการจับเสียง (ตัวกรองการจับเสียง 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 (ตัวแก้ไขวิธีการป้อนข้อมูล) มีการทำงานเพื่อให้แน่ใจว่าเข้ากันได้กับการใช้งาน 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
    • เพิ่มความสามารถในการแสดง Windows เวอร์ชันเก่า (pre-XP) บนแพลตฟอร์ม 64 บิตลงในอินเทอร์เฟซ WineCfg ซึ่งช่วยให้คุณสามารถเรียกใช้แอปพลิเคชันรุ่นเก่าโดยใช้โหมด WoW64
    • แอปพลิเคชันกราฟิกในตัวทั้งหมดจะแสดงข้อมูลข้อผิดพลาดในกล่องโต้ตอบแยกต่างหาก แทนที่จะแสดงในคอนโซล
    • โปรแกรม systeminfo ให้การแสดงข้อมูลจากฐานข้อมูล WMI (Windows Management Instrumentation)
    • เพิ่มแอปพลิเคชัน 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

เพิ่มความคิดเห็น