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

หลังจากหนึ่งปีของการพัฒนาและเวอร์ชันทดลอง 30 เวอร์ชัน ได้มีการนำเสนอการใช้งาน Win32 API แบบเปิดที่เสถียร - Wine 7.0 ซึ่งรวมการเปลี่ยนแปลงมากกว่า 9100 รายการ ความสำเร็จที่สำคัญของเวอร์ชันใหม่ ได้แก่ การแปลโมดูล Wine ส่วนใหญ่เป็นรูปแบบ PE การรองรับธีม การขยายสแต็กสำหรับจอยสติ๊กและอุปกรณ์อินพุตด้วยอินเทอร์เฟซ HID และการใช้งานสถาปัตยกรรม WoW64 สำหรับการรันโปรแกรม 32 บิตใน สภาพแวดล้อมแบบ 64 บิต

Wine ยืนยันการทำงานเต็มรูปแบบของโปรแกรม 5156 (ปีที่แล้ว 5049) สำหรับ Windows ส่วนอีกโปรแกรม 4312 (ปีที่แล้ว 4227) ทำงานได้อย่างสมบูรณ์แบบด้วยการตั้งค่าเพิ่มเติมและ DLL ภายนอก 3813 โปรแกรม (3703 ปีที่แล้ว) มีปัญหาการปฏิบัติงานเล็กน้อยที่ไม่รบกวนการใช้งานฟังก์ชั่นหลักของแอพพลิเคชั่น

นวัตกรรมที่สำคัญใน Wine 7.0:

  • โมดูลในรูปแบบ PE
    • DLL เกือบทั้งหมดได้รับการแปลงให้ใช้รูปแบบไฟล์ปฏิบัติการ PE (Portable Executable ซึ่งใช้บน Windows) แทน ELF การใช้ PE แก้ปัญหาด้วยการสนับสนุนแผนการป้องกันการคัดลอกต่างๆ ที่ตรวจสอบข้อมูลประจำตัวของโมดูลระบบบนดิสก์และในหน่วยความจำ
    • ความสามารถในการโต้ตอบโมดูล PE กับไลบรารี Unix โดยใช้การเรียกระบบเคอร์เนล NT มาตรฐานได้ถูกนำมาใช้ ซึ่งช่วยให้คุณสามารถซ่อนการเข้าถึงโค้ด Unix จากดีบักเกอร์ Windows และตรวจสอบการลงทะเบียนเธรด
    • ขณะนี้ DLL ในตัวจะถูกโหลดเฉพาะเมื่อมีไฟล์ PE ที่เกี่ยวข้องบนดิสก์ ไม่ว่าจะเป็นไลบรารีจริงหรือ stub การเปลี่ยนแปลงนี้ทำให้แอปพลิเคชันเห็นการเชื่อมโยงที่ถูกต้องกับไฟล์ PE เสมอ เมื่อต้องการปิดใช้งานลักษณะการทำงานนี้ คุณสามารถใช้ตัวแปรสภาพแวดล้อม WINEBOOTSTRAPMODE
  • วอ64
    • สถาปัตยกรรม WoW64 (64 บิตบน Windows บน Windows) ได้รับการปรับใช้แล้ว ทำให้คุณสามารถเรียกใช้แอปพลิเคชัน Windows 32 บิตในกระบวนการ Unix 64 บิต การสนับสนุนดำเนินการผ่านการเชื่อมต่อของเลเยอร์ที่แปลการเรียกระบบ NT 32 บิตเป็นการเรียก NTDLL 64 บิต
    • เลเยอร์ WoW64 ได้รับการจัดเตรียมสำหรับไลบรารี Unix ส่วนใหญ่ และอนุญาตให้โมดูล PE 32 บิตเข้าถึงไลบรารี Unix 64 บิต เมื่อแปลงโมดูลทั้งหมดเป็นรูปแบบ PE แล้ว จะสามารถเรียกใช้แอปพลิเคชัน Windows 32 บิตได้โดยไม่ต้องติดตั้งไลบรารี Unix 32 บิต
  • ธีม
    • มีการดำเนินการสนับสนุนธีมแล้ว ธีมการออกแบบ “Light”, “Blue” และ “Classic Blue” รวมอยู่ด้วย ซึ่งสามารถเลือกได้ผ่านตัวกำหนดค่า WineCfg
    • เพิ่มความสามารถในการปรับแต่งรูปลักษณ์ของส่วนควบคุมอินเทอร์เฟซทั้งหมดผ่านธีม ลักษณะที่ปรากฏขององค์ประกอบจะได้รับการอัปเดตโดยอัตโนมัติหลังจากเปลี่ยนธีมการออกแบบ
    • เพิ่มการรองรับธีมให้กับแอปพลิเคชันไวน์ในตัวทั้งหมดแล้ว แอปพลิเคชั่นได้รับการปรับให้เข้ากับหน้าจอที่มีความหนาแน่นของพิกเซลสูง (High DPI)
  • ระบบย่อยกราฟิก
    • มีการเพิ่มไลบรารี Win32u ใหม่ ซึ่งรวมถึงบางส่วนของไลบรารี GDI32 และ USER32 ที่เกี่ยวข้องกับการประมวลผลกราฟิกและการจัดการหน้าต่างในระดับเคอร์เนล ในอนาคต งานจะเริ่มในการย้ายส่วนประกอบไดรเวอร์ เช่น winex32.drv และ winemac.drv ไปยัง Win11u
    • ไดรเวอร์ Vulkan รองรับข้อกำหนด Vulkan Graphics API 1.2.201
    • ให้การสนับสนุนสำหรับการส่งออกวัตถุทางเรขาคณิตที่ฟักออกมาผ่านทาง Direct2D API พร้อมความสามารถในการตรวจสอบว่ามีการคลิกหรือไม่ (การทดสอบการคลิก)
    • Direct2D API ให้การสนับสนุนเบื้องต้นสำหรับเอฟเฟ็กต์ภาพที่ใช้โดยใช้อินเทอร์เฟซ ID2D1Effect
    • Direct2D API ได้เพิ่มการรองรับอินเทอร์เฟซ ID2D1MultiThread ซึ่งใช้เพื่อจัดระเบียบการเข้าถึงทรัพยากรในแอปพลิเคชันแบบมัลติเธรดแบบเอกสิทธิ์เฉพาะบุคคล
    • ชุดไลบรารี WindowsCodecs ให้การสนับสนุนการถอดรหัสรูปภาพในรูปแบบ WMP (Windows Media Photo) และการเข้ารหัสรูปภาพในรูปแบบ DDS (DirectDraw Surface) เราไม่รองรับการเข้ารหัสรูปภาพในรูปแบบ ICNS อีกต่อไป (สำหรับ macOS) ซึ่งไม่รองรับบน Windows
  • Direct3D
    • เอ็นจิ้นการเรนเดอร์ใหม่ได้รับการปรับปรุงอย่างมีนัยสำคัญ โดยแปลการเรียก Direct3D ไปเป็น Vulkan Graphics API ในสถานการณ์ส่วนใหญ่ ระดับการรองรับ Direct3D 10 และ 11 ในเอ็นจิ้นที่ใช้ Vulkan นั้นมีความเท่าเทียมกับเอ็นจิ้นที่ใช้ OpenGL รุ่นเก่า หากต้องการเปิดใช้งานกลไกการเรนเดอร์ Vulkan ให้ตั้งค่าตัวแปรรีจิสทรี Direct3D "renderer" เป็น "vulkan"
    • มีการนำคุณสมบัติหลายอย่างของ Direct3D 10 และ 11 มาใช้ รวมถึงบริบทที่เลื่อนออกไป วัตถุสถานะที่ทำงานในบริบทของอุปกรณ์ การชดเชยแบบถาวรในบัฟเฟอร์ การล้างมุมมองพื้นผิวที่ไม่อยู่ในลำดับ การคัดลอกข้อมูลระหว่างทรัพยากรในรูปแบบที่ไม่มีประเภท (DXGI_FORMAT_BC3_TYPELESS, DXGI_FORMAT_R32G32B32A32_TYPELESS) ฯลฯ .
    • เพิ่มการรองรับสำหรับการกำหนดค่าหลายจอภาพ ช่วยให้คุณสามารถเลือกจอภาพเพื่อแสดงแอปพลิเคชัน Direct3D ในโหมดเต็มหน้าจอ
    • DXGI API ให้การแก้ไขแกมมาของหน้าจอ ซึ่งสามารถใช้งานได้โดยแอปพลิเคชันที่ใช้ Direct3D 10 และ 11 เพื่อเปลี่ยนความสว่างของหน้าจอ เปิดใช้งานการดึงข้อมูลตัวนับเฟรมบัฟเฟอร์เสมือน (SwapChain)
    • Direct3D 12 เพิ่มการรองรับลายเซ็นรูตเวอร์ชัน 1.1
    • ในโค้ดการเรนเดอร์ผ่าน Vulkan API ประสิทธิภาพของการประมวลผลคิวรีได้รับการปรับปรุงเมื่อระบบรองรับส่วนขยาย VK_EXT_host_query_reset
    • เพิ่มความสามารถในการส่งออกเฟรมบัฟเฟอร์เสมือน (SwapChain) ผ่าน GDI หากไม่สามารถใช้ OpenGL หรือ Vulkan สำหรับการแสดงผลได้ ตัวอย่างเช่น เมื่อส่งออกไปยังหน้าต่างจากกระบวนการที่แตกต่างกัน เช่น ในโปรแกรมที่ใช้เฟรมเวิร์ก CEF (Chromium Embedded Framework)
    • เมื่อใช้แบ็กเอนด์เชเดอร์ GLSL ตัวแก้ไข "แม่นยำ" จะได้รับการรับรองสำหรับคำแนะนำเชเดอร์
    • DirectDraw API เพิ่มการรองรับการเรนเดอร์ 3D ในหน่วยความจำระบบโดยใช้อุปกรณ์ซอฟต์แวร์ เช่น "RGB", "MMX" และ "Ramp"
    • การ์ด AMD Radeon RX 3M, AMD Radeon RX 5500/6800 XT/6800 XT, AMD Van Gogh, Intel UHD Graphics 6900 และ NVIDIA GT 630 ได้รับการเพิ่มลงในฐานข้อมูลกราฟิกการ์ด Direct1030D
    • คีย์ “UseGLSL” ถูกลบออกจากรีจิสทรี HKEY_CURRENT_USER\Software\Wine\Direct3D แล้ว แทนที่จะเริ่มต้นด้วย Wine 5.0 คุณต้องใช้ “shader_backend”
    • เพื่อรองรับ Direct3D 12 ตอนนี้คุณต้องมีไลบรารี vkd3d เวอร์ชัน 1.2 เป็นอย่างน้อย
  • D3DX
    • การใช้งาน D3DX 10 ได้ปรับปรุงการรองรับเฟรมเวิร์กเอฟเฟ็กต์ภาพและเพิ่มการรองรับรูปแบบภาพ Windows Media Photo (JPEG XR)
    • เพิ่มฟังก์ชันการสร้างพื้นผิวที่มีให้ใน D3DX10 เช่น D3DX10CreateTextureFromMemory()
    • อินเทอร์เฟซซอฟต์แวร์ ID3DX10Sprite และ ID3DX10Font ได้รับการใช้งานบางส่วน
  • เสียงและวิดีโอ
    • ส่วนเสริม GStreamer สำหรับ DirectShow และเฟรมเวิร์ก Media Foundation จะรวมกันเป็นแบ็คเอนด์ WineGStreamer ทั่วไปตัวเดียว ซึ่งน่าจะทำให้การพัฒนา API การถอดรหัสเนื้อหาใหม่ง่ายขึ้น
    • ตามแบ็กเอนด์ WineGStreamer ออบเจ็กต์ Windows Media จะถูกนำไปใช้สำหรับการอ่านแบบซิงโครนัสและอะซิงโครนัส
    • การใช้งานกรอบงาน Media Foundation ได้รับการปรับปรุงเพิ่มเติม รองรับฟังก์ชัน IMFPMediaPlayer และการจัดสรรตัวอย่าง และปรับปรุงการรองรับบัฟเฟอร์การเรนเดอร์ EVR และ SAR
    • ไลบรารี wineqtdecoder ซึ่งมีตัวถอดรหัสสำหรับรูปแบบ QuickTime ได้ถูกลบออกแล้ว (ตอนนี้ตัวแปลงสัญญาณทั้งหมดใช้ GStreamer)
  • อุปกรณ์อินพุต
    • สแต็กสำหรับอุปกรณ์อินพุตที่รองรับโปรโตคอล HID (Human Interface Devices) ได้รับการปรับปรุงอย่างมีนัยสำคัญ โดยให้ความสามารถต่างๆ เช่น การแยกวิเคราะห์ตัวอธิบาย HID การประมวลผลข้อความ HID และการจัดหาไดรเวอร์ mini-HID
    • ในแบ็กเอนด์ของไดรเวอร์ winebus.sys การแปลคำอธิบายอุปกรณ์เป็นข้อความ HID ได้รับการปรับปรุง
    • เพิ่มแบ็กเอนด์ DirectInput ใหม่สำหรับจอยสติ๊กที่รองรับโปรโตคอล HID มีการใช้ความสามารถในการใช้เอฟเฟกต์ตอบรับในจอยสติ๊กแล้ว ปรับปรุงแผงควบคุมจอยสติ๊ก เพิ่มประสิทธิภาพการโต้ตอบกับอุปกรณ์ที่รองรับ XInput ใน WinMM การรองรับจอยสติ๊กถูกย้ายไปยัง DInput แทนที่จะใช้แบ็กเอนด์ evdev บน Linux และ IOHID บน macOS IOHID ไดรเวอร์จอยสติ๊กเก่า winejoystick.drv ถูกลบออกแล้ว
    • มีการเพิ่มการทดสอบใหม่ลงในโมดูล DInput โดยอิงจากการใช้อุปกรณ์ HID เสมือนและไม่ต้องใช้อุปกรณ์ทางกายภาพ
  • ข้อความและแบบอักษร
    • เพิ่มวัตถุชุดแบบอักษรลงใน DirectWrite
    • RichEdit ใช้อินเทอร์เฟซ TextHost อย่างถูกต้อง
  • เคอร์เนล (อินเทอร์เฟซเคอร์เนล Windows)
    • เมื่อเรียกใช้ไฟล์ปฏิบัติการที่ไม่ปรากฏชื่อ (เช่น 'wine foo.msi') ใน Wine ตอนนี้ start.exe จะถูกเรียก ซึ่งจะเรียกใช้ตัวจัดการที่เกี่ยวข้องกับประเภทไฟล์
    • เพิ่มการรองรับกลไกการซิงโครไนซ์ NtAlertThreadByThreadId และ NtWaitForAlertByThreadId ซึ่งคล้ายกับ futexes ใน Linux
    • เพิ่มการรองรับออบเจ็กต์ดีบัก NT ที่ใช้ในการดีบักฟังก์ชันเคอร์เนล
    • เพิ่มการรองรับคีย์รีจิสทรีแบบไดนามิกเพื่อบันทึกข้อมูลประสิทธิภาพ
  • ซี รันไทม์
    • รันไทม์ C ใช้ชุดฟังก์ชันทางคณิตศาสตร์ครบชุด ซึ่งส่วนใหญ่ส่งต่อจากไลบรารี Musl
    • แพลตฟอร์ม CPU ทั้งหมดให้การสนับสนุนฟังก์ชันจุดลอยตัวที่ถูกต้อง
  • คุณสมบัติด้านเครือข่าย
    • ปรับปรุงโหมดความเข้ากันได้สำหรับ Internet Explorer 11 (IE11) ซึ่งขณะนี้ใช้เป็นค่าเริ่มต้นสำหรับการประมวลผลเอกสาร HTML
    • ไลบรารี mshtml ใช้โหมด ES6 JavaScript (ECMAScript 2015) ซึ่งให้การสนับสนุนคุณสมบัติต่างๆ เช่น การแสดงออกและวัตถุแผนที่
    • การติดตั้งแพ็คเกจ MSI พร้อมส่วนเพิ่มเติมในกลไก Gecko ลงในไดเร็กทอรีการทำงานของ Wine เสร็จสิ้นเมื่อจำเป็น และไม่ใช่ในระหว่างการอัพเดต Wine
    • เพิ่มการรองรับโปรโตคอล DTLS
    • มีบริการ NSI (Network Store Interface) จัดเก็บและส่งข้อมูลเกี่ยวกับการกำหนดเส้นทางและอินเทอร์เฟซเครือข่ายบนคอมพิวเตอร์ไปยังบริการอื่น ๆ
    • ตัวจัดการ WinSock API เช่น setsockopt และ getsockopt ได้ถูกย้ายไปยัง NTDLL และไดรเวอร์ afd.sys เพื่อให้สอดคล้องกับสถาปัตยกรรม Windows
    • ไฟล์ฐานข้อมูลเครือข่ายของ Wine เช่น /etc/protocols และ /etc/networks ได้รับการติดตั้งในไดเร็กทอรีการทำงานของ Wine แทนที่จะเข้าถึงฐานข้อมูล Unix ที่คล้ายกัน
  • แพลตฟอร์มทางเลือก
    • เพิ่มการรองรับอุปกรณ์ Apple ที่ใช้ชิป M1 ARM (Apple Silicon)
    • ขณะนี้การรองรับคุณสมบัติ BCrypt และ Secur32 บน macOS จำเป็นต้องติดตั้งไลบรารี GnuTLS
    • ขณะนี้ไฟล์ปฏิบัติการ 32 บิตสำหรับแพลตฟอร์ม ARM ถูกสร้างขึ้นในโหมด Thumb-2 ซึ่งคล้ายกับ Windows ตัวโหลดล่วงหน้าใช้เพื่อโหลดไฟล์ดังกล่าว
    • สำหรับแพลตฟอร์ม ARM 32 บิต ได้มีการนำการสนับสนุนสำหรับคลี่คลายข้อยกเว้นแล้ว
    • สำหรับ FreeBSD จำนวนการค้นหาที่รองรับสำหรับข้อมูลระบบระดับต่ำ เช่น สถานะหน่วยความจำและระดับประจุแบตเตอรี่ ได้รับการขยาย
  • แอปพลิเคชันและเครื่องมือการพัฒนาในตัว
    • ยูทิลิตี้ reg.exe ได้เพิ่มการรองรับมุมมองรีจิสทรี 32 บิตและ 64 บิต เพิ่มการสนับสนุนสำหรับการคัดลอกคีย์รีจิสทรี
    • ยูทิลิตี้ WineDump ได้เพิ่มการสนับสนุนสำหรับการทิ้งข้อมูลเมตาของ Windows และการแสดงข้อมูลโดยละเอียดเกี่ยวกับรายการ CodeView
    • Wine Debugger (winedbg) ให้ความสามารถในการดีบักกระบวนการ 32 บิตจากดีบักเกอร์ 64 บิต
    • ความสามารถในการโหลดไลบรารีที่สร้างไว้ในไฟล์ PE ได้รับการเพิ่มลงในคอมไพเลอร์ IDL (widl) มีการรองรับคุณลักษณะและโครงสร้างเฉพาะของ WinRT และมีการใช้การค้นหาไลบรารีเฉพาะแพลตฟอร์ม
  • ระบบการประกอบ
    • ในไดเร็กทอรีเฉพาะสถาปัตยกรรม ตอนนี้ไลบรารีจะถูกบันทึกด้วยชื่อที่สะท้อนถึงสถาปัตยกรรมและประเภทปฏิบัติการ เช่น 'i386-windows' สำหรับรูปแบบ PE และ 'x86_64-unix' สำหรับไลบรารี unix ทำให้สามารถรองรับสถาปัตยกรรมที่แตกต่างกันในไวน์เดียว การติดตั้งและจัดเตรียมการคอมไพล์ข้ามของ Winelib
    • ในการตั้งค่าตัวเลือกในส่วนหัวของไฟล์ PE ที่ควบคุมการเปลี่ยนไปใช้ DLL ดั้งเดิม แฟล็ก '--prefer-native option' ได้ถูกเพิ่มลงใน winebuild (การประมวลผล DLL_WINE_PREATTACH ใน DllMain ถูกหยุดแล้ว)
    • เพิ่มการรองรับเวอร์ชัน 4 ของรูปแบบข้อมูลดีบัก Dwarf ซึ่งตอนนี้ใช้เป็นค่าเริ่มต้นเมื่อสร้างไลบรารีไวน์
    • เพิ่มตัวเลือก build '—enable-build-id' เพื่อบันทึกตัวระบุ build ที่ไม่ซ้ำในไฟล์ปฏิบัติการ
    • เพิ่มการสนับสนุนสำหรับการใช้คอมไพเลอร์ Clang ในโหมดความเข้ากันได้ของ MSVC
  • หนังสือรวบรวมเรื่อง
    • ชื่อของไดเร็กทอรีทั่วไปในเชลล์ผู้ใช้ (Windows Shell) ถูกกำหนดให้กับโครงร่างที่ใช้โดยเริ่มต้นด้วย Windows Vista เช่น แทนที่จะเป็น 'My Documents' ตอนนี้ไดเร็กทอรี 'Documents' จะถูกสร้างขึ้น และข้อมูลส่วนใหญ่จะถูกบันทึกลงในไดเร็กทอรี 'AppData'
    • เพิ่มการรองรับข้อกำหนด OpenCL 1.2 ลงในเลเยอร์ไลบรารี OpenCL แล้ว
    • ไดรเวอร์ WinSpool ได้เพิ่มการรองรับขนาดหน้าที่แตกต่างกันเมื่อพิมพ์
    • เพิ่มการสนับสนุนเบื้องต้นสำหรับ MSDASQL ซึ่งเป็นผู้ให้บริการ Microsoft OLE DB สำหรับไดรเวอร์ ODBC
    • เอ็นจิ้น Wine Mono พร้อมการใช้งานแพลตฟอร์ม .NET ได้รับการอัปเดตเป็นรีลีส 7.0.0
    • ข้อมูล Unicode ได้รับการอัปเดตเป็นข้อกำหนดเฉพาะของ Unicode 14
    • แผนผังต้นทางประกอบด้วยไลบรารี Faudio, GSM, LCMS2, LibJPEG, LibJXR, LibMPG123, LibPng, LibTiff, LibXml2, LibXslt และ Zlib ซึ่งคอมไพล์ในรูปแบบ PE และไม่ต้องการเวอร์ชันในรูปแบบ Unix ในเวลาเดียวกัน ไลบรารีเหล่านี้ยังสามารถนำเข้าจากระบบเพื่อใช้แอสเซมบลีภายนอกแทนตัวเลือก PE ในตัว

ที่มา: opennet.ru

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