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

หลังจากหนึ่งปีของการพัฒนาและเวอร์ชันทดลอง 28 เวอร์ชัน นำเสนอ การเปิดตัวที่เสถียรของการใช้งานแบบเปิดของ Win32 API - ไวน์ 5.0ซึ่งรวมถึงการเปลี่ยนแปลงมากกว่า 7400 รายการ ความสำเร็จที่สำคัญของเวอร์ชันใหม่ ได้แก่ การส่งมอบโมดูลไวน์ในตัวในรูปแบบ PE การรองรับการกำหนดค่าหลายจอภาพ การใช้ XAudio2 audio API ใหม่ และการสนับสนุน Vulkan 1.1 กราฟิก API

ในไวน์ ได้รับการยืนยัน การทำงานเต็มรูปแบบของโปรแกรม 4869 (ปีที่แล้ว 4737) สำหรับ Windows ส่วนอีกโปรแกรม 4136 (ปีที่แล้ว 4045) ทำงานได้อย่างสมบูรณ์แบบด้วยการตั้งค่าเพิ่มเติมและ DLL ภายนอก โปรแกรม 3635 โปรแกรมมีปัญหาด้านประสิทธิภาพเล็กน้อยซึ่งไม่รบกวนการใช้งานฟังก์ชันพื้นฐานของแอปพลิเคชัน

สำคัญ นวัตกรรม ไวน์ 5.0:

  • โมดูลในรูปแบบ PE
    • ด้วยคอมไพเลอร์ MinGW ตอนนี้โมดูลไวน์ส่วนใหญ่ถูกสร้างขึ้นในรูปแบบไฟล์ปฏิบัติการ PE (Portable Executable ซึ่งใช้บน Windows) แทนที่จะเป็น ELF การใช้ PE แก้ปัญหาด้วยการสนับสนุนแผนการป้องกันการคัดลอกต่างๆ ที่ตรวจสอบข้อมูลประจำตัวของโมดูลระบบบนดิสก์และในหน่วยความจำ
    • ขณะนี้ไฟล์ปฏิบัติการ PE จะถูกคัดลอกไปยังไดเร็กทอรี ~/.wine ($WINEPREFIX) แทนที่จะใช้ไฟล์ DLL จำลอง ทำให้สิ่งที่คล้ายกับการติดตั้ง Windows จริงมากขึ้น โดยมีค่าใช้จ่ายในการใช้พื้นที่ดิสก์เพิ่มเติม
    • โมดูลที่แปลงเป็นรูปแบบ PE สามารถใช้มาตรฐานได้ wchar ฟังก์ชัน C และค่าคงที่ด้วย Unicode (เช่น L"abc");
    • รันไทม์ Wine C ได้เพิ่มการสนับสนุนสำหรับการเชื่อมโยงกับไบนารีที่สร้างใน MinGW ซึ่งใช้เป็นค่าเริ่มต้นแทนรันไทม์ MinGW เมื่อสร้าง DLL
  • ระบบย่อยกราฟิก
    • เพิ่มการรองรับการทำงานกับจอภาพและอะแดปเตอร์กราฟิกหลายตัว รวมถึงความสามารถในการเปลี่ยนการตั้งค่าแบบไดนามิก
    • ไดรเวอร์สำหรับ Vulkan Graphics API ได้รับการอัปเดตเพื่อให้สอดคล้องกับข้อกำหนด Vulkan 1.1.126
    • ไลบรารี WindowsCodecs ให้ความสามารถในการแปลงรูปแบบแรสเตอร์เพิ่มเติม รวมถึงรูปแบบที่มีจานสีที่จัดทำดัชนีไว้
  • Direct3D
    • เมื่อเรียกใช้แอปพลิเคชัน Direct3D แบบเต็มหน้าจอ การเรียกโปรแกรมรักษาหน้าจอจะถูกบล็อก
    • DXGI (โครงสร้างพื้นฐานกราฟิก DirectX) ได้เพิ่มการสนับสนุนสำหรับการแจ้งแอปพลิเคชันเมื่อหน้าต่างถูกย่อเล็กสุด ซึ่งช่วยให้แอปพลิเคชันสามารถลดประสิทธิภาพของการดำเนินการที่ใช้ทรัพยากรมากเมื่อย่อขนาดหน้าต่าง
    • สำหรับแอปพลิเคชันที่ใช้ DXGI ขณะนี้สามารถสลับระหว่างโหมดเต็มหน้าจอและโหมดหน้าต่างได้โดยใช้ชุดค่าผสม Alt+Enter
    • ความสามารถของการใช้งาน Direct3D 12 ได้รับการขยาย เช่น ขณะนี้มีการรองรับการสลับระหว่างโหมดเต็มหน้าจอและโหมดหน้าต่าง การเปลี่ยนโหมดหน้าจอ ปรับขนาดเอาต์พุต และการจัดการช่วงเวลาการเปลี่ยนบัฟเฟอร์การเรนเดอร์ (ช่วงสลับ)
    • ปรับปรุงการจัดการสถานการณ์เส้นขอบต่างๆ เช่น การใช้ค่าอินพุตนอกช่วงสำหรับการทดสอบความโปร่งใสและเชิงลึก การเรนเดอร์ด้วยพื้นผิวและบัฟเฟอร์ที่สะท้อน และการใช้วัตถุ DirectDraw ที่ไม่ถูกต้อง ปัตตาเลี่ยนการสร้างอุปกรณ์ Direct3 สำหรับ windows ที่ไม่ถูกต้อง การใช้พื้นที่ที่มองเห็นได้ซึ่งมีค่าพารามิเตอร์ขั้นต่ำเท่ากับค่าสูงสุด เป็นต้น
    • Direct3D 8 และ 9 ให้การติดตามที่แม่นยำยิ่งขึ้น”สกปรก» พื้นที่ของพื้นผิวที่โหลด
    • ขนาดของพื้นที่ที่อยู่ที่ต้องการเมื่อโหลดพื้นผิว 3 มิติที่ถูกบีบอัดโดยใช้วิธี S3TC ลดลง (แทนที่จะโหลดทั้งหมด พื้นผิวจะถูกโหลดเป็นชิ้นๆ)
    • ใช้งานอินเทอร์เฟซแล้ว ID3D11มัลติเธรด เพื่อปกป้องส่วนสำคัญในแอปพลิเคชันแบบมัลติเธรด
    • มีการปรับปรุงและแก้ไขต่างๆ ที่เกี่ยวข้องกับการคำนวณแสงสำหรับแอปพลิเคชัน DirectDraw รุ่นเก่า
    • ใช้การเรียกเพิ่มเติมเพื่อรับข้อมูลเกี่ยวกับเชเดอร์ใน API ShaderReflection;
    • wined3d รองรับแล้ว แวววาว ใช้ CPU สำหรับการประมวลผลทรัพยากรที่ถูกบีบอัด
    • ฐานข้อมูลของกราฟิกการ์ดที่รู้จักใน Direct3D ได้รับการขยาย;
    • เพิ่มรีจิสตรีคีย์ใหม่ HKEY_CURRENT_USER\Software\Wine\Direct3D: “shader_backend” (แบ็กเอนด์สำหรับการทำงานกับเชเดอร์: “glsl” สำหรับ GLSL, “arb” สำหรับ ARB จุดยอด/แฟรกเมนต์ และ “none” เพื่อปิดใช้งานการสนับสนุนเชเดอร์), “strict_shader_math” ( 0x1 - เปิดใช้งาน, 0x0 - ปิดใช้งานการแปลงเชเดอร์ Direct3D) เลิกใช้คีย์ "UseGLSL" แล้ว (ควรใช้ "shader_backend");
  • D3DX
    • รองรับกลไกการบีบอัดพื้นผิว 3 มิติ S3TC (การบีบอัดพื้นผิว S3) แล้ว
    • เพิ่มการดำเนินการที่ถูกต้อง เช่น การเติมพื้นผิวและพื้นผิวที่ไม่สามารถแมปได้
    • มีการปรับปรุงและแก้ไขต่างๆ ในกรอบการสร้าง วิชวลเอ็ฟเฟ็กต์;
  • เคอร์เนล (อินเทอร์เฟซเคอร์เนล Windows)
    • ฟังก์ชั่นส่วนใหญ่ที่ใช้ใน Kernel32 ได้ถูกย้ายไปที่
      KernelBase ตามการเปลี่ยนแปลงในสถาปัตยกรรม Windows

    • ความสามารถในการผสม DLLs 32- และ 64- บิตในไดเร็กทอรีที่ใช้สำหรับการโหลด ตรวจสอบให้แน่ใจว่าไลบรารีที่ไม่ตรงกับความลึกบิตปัจจุบันจะถูกละเว้น (32/64) ในกรณีที่ไกลออกไปตามเส้นทาง เป็นไปได้ที่จะค้นหาไลบรารีที่ถูกต้องสำหรับความลึกบิตปัจจุบัน
    • สำหรับไดรเวอร์อุปกรณ์ การจำลองอ็อบเจ็กต์เคอร์เนลได้รับการปรับปรุงแล้ว
    • ใช้ออบเจ็กต์การซิงโครไนซ์ที่ทำงานในระดับเคอร์เนล เช่น สปินล็อค การเปลี่ยนแปลงอย่างรวดเร็ว และตัวแปรที่แนบกับทรัพยากร
    • ตรวจสอบให้แน่ใจว่าแอปพลิเคชันได้รับแจ้งอย่างถูกต้องเกี่ยวกับสถานะแบตเตอรี่
  • ส่วนต่อประสานผู้ใช้และการรวมเดสก์ท็อป
    • ขณะนี้หน้าต่างที่ย่อเล็กสุดจะแสดงโดยใช้แถบชื่อเรื่องแทนที่จะเป็นไอคอนสไตล์ Windows 3.1
    • เพิ่มรูปแบบปุ่มใหม่ ปุ่มแยก (ปุ่มพร้อมรายการการกระทำแบบเลื่อนลง) และ ลิงค์คำสั่ง (ลิงก์ในกล่องโต้ตอบที่ใช้ในการย้ายไปยังขั้นตอนถัดไป)
    • ลิงก์สัญลักษณ์ได้ถูกสร้างขึ้นสำหรับโฟลเดอร์ 'ดาวน์โหลด' และ 'เทมเพลต' ซึ่งชี้ไปยังไดเร็กทอรีที่เกี่ยวข้องบนระบบ Unix
  • อุปกรณ์อินพุต
    • เมื่อเริ่มต้นระบบ มีการติดตั้งและโหลดไดรเวอร์อุปกรณ์ Plug & Play ที่จำเป็น
    • ปรับปรุงการรองรับคอนโทรลเลอร์เกม รวมถึงจอยสติ๊กขนาดเล็ก (สวิตช์หมวก) พวงมาลัย แป้นแก๊สและแป้นเบรก
    • การสนับสนุน API จอยสติ๊ก Linux เก่าที่ใช้ในเคอร์เนล Linux ก่อนเวอร์ชัน 2.2 ถูกยกเลิกแล้ว
  • NET.
    • Mono engine ได้รับการอัพเดตเป็นรุ่น 4.9.4 และขณะนี้ได้รวมเอาบางส่วนของกรอบงาน Windows Presentation Foundation (WPF) ไว้ด้วย
    • เพิ่มความสามารถในการติดตั้งโปรแกรมเสริมด้วย Mono และ Gecko ในไดเรกทอรีเดียว โดยวางไฟล์ไว้ในลำดับชั้น /usr/share/wine แทนที่จะคัดลอกไปยังคำนำหน้าใหม่
  • คุณสมบัติด้านเครือข่าย
    • เอ็นจิ้นเบราว์เซอร์ Wine Gecko ซึ่งใช้ในไลบรารี MSHTML ได้รับการอัปเดตเป็นรุ่น 2.47.1 มีการรองรับ HTML API ใหม่แล้ว
    • MSHTML รองรับองค์ประกอบ SVG แล้ว
    • เพิ่มฟังก์ชัน VBScript ใหม่มากมาย (เช่น ตัวจัดการข้อผิดพลาดและข้อยกเว้น ฟังก์ชั่น Hour, Day, Month, String, LBound, RegExp.Replace, РScriptTypeInfo_* และ ScriptTypeComp_Bind* เป็นต้น)
    • ให้การรักษาสถานะรหัสใน VBScript และ JScript (การคงอยู่ของสคริปต์);
    • เพิ่มการใช้งานเริ่มต้นของบริการ HTTP (WinHTTP) และ API ที่เกี่ยวข้อง (HTTPAPI) สำหรับแอปพลิเคชันไคลเอนต์และเซิร์ฟเวอร์ที่ส่งและรับคำขอโดยใช้โปรโตคอล HTTP
    • ใช้ความสามารถในการรับการตั้งค่าพร็อกซี HTTP ผ่าน DHCP
    • เพิ่มการสนับสนุนสำหรับการเปลี่ยนเส้นทางคำขอการรับรองความถูกต้องผ่านบริการ Microsoft Passport
  • การเข้ารหัส
    • ใช้การรองรับคีย์การเข้ารหัสแบบวงรี (ECC) เมื่อใช้ GnuTLS
    • เพิ่มความสามารถในการนำเข้าคีย์และใบรับรองจากไฟล์ในรูปแบบ PFX
    • เพิ่มการสนับสนุนสำหรับรูปแบบการสร้างคีย์ตามรหัสผ่าน PBKDF2
  • ข้อความและแบบอักษร
    • การใช้งาน DirectWrite API ได้เพิ่มการรองรับคุณสมบัติ OpenType ที่เกี่ยวข้อง การวางตำแหน่งสัญลักษณ์ซึ่งเปิดใช้งานตามค่าเริ่มต้นสำหรับสไตล์ละติน รวมถึงการจัดช่องไฟ
    • ปรับปรุงความปลอดภัยในการประมวลผลข้อมูลแบบอักษรโดยตรวจสอบความถูกต้องของตารางข้อมูลต่างๆ ก่อนใช้งาน
    • อินเทอร์เฟซ DirectWrite ได้รับการปรับให้สอดคล้องกับ SDK ล่าสุด
  • เสียงและวิดีโอ
    • มีการเสนอการนำ API เสียงไปใช้ใหม่ XAudio2สร้างขึ้นบนพื้นฐานของโครงการ เอฟออดิโอ. การใช้ FAudio ใน Wine ช่วยให้คุณได้รับคุณภาพเสียงที่สูงขึ้นในเกม และใช้คุณสมบัติต่างๆ เช่น การผสมระดับเสียงและเอฟเฟกต์เสียงขั้นสูง
    • มีการเพิ่มการเรียกใหม่จำนวนมากในการใช้งานกรอบงาน Media Foundation รวมถึงการสนับสนุนคิวอะซิงโครนัสในตัวและแบบกำหนดเอง, Source Reader API, Media Session ฯลฯ
    • ตัวกรองการจับภาพวิดีโอได้เปลี่ยนไปใช้ v4l2 API แทน v4l1 API ซึ่งได้ขยายขอบเขตของกล้องที่รองรับ
    • ตัวถอดรหัส AVI, MPEG-I และ WAVE ในตัวได้ถูกลบออกแล้ว แทนที่จะใช้ระบบ GStreamer หรือ QuickTime
    • เพิ่มชุดย่อยของ API การกำหนดค่า VMR7
    • เพิ่มการรองรับสำหรับการปรับระดับเสียงของแต่ละช่องสัญญาณให้กับไดรเวอร์เสียง
  • การทำให้เป็นสากล
    • ตาราง Unicode อัปเดตเป็นเวอร์ชัน 12.1.0;
    • ดำเนินการรองรับการทำให้เป็นมาตรฐานของ Unicode;
    • ให้การติดตั้งอัตโนมัติของภูมิภาคทางภูมิศาสตร์ (HKEY_CURRENT_USER\Control Panel\International\Geo) ตามสถานที่ปัจจุบัน
  • อาร์พีซี/คอม
    • เพิ่มการรองรับโครงสร้างและอาร์เรย์ที่ซับซ้อนให้กับ typelib
    • เพิ่มการใช้งานเริ่มต้นของไลบรารีรันไทม์ Windows Script
    • เพิ่มการใช้งานเบื้องต้นของไลบรารี ADO (Microsoft ActiveX Data Objects)
  • ผู้ติดตั้ง
    • มีการรองรับการส่งแพตช์ (ไฟล์แพตช์) สำหรับตัวติดตั้ง MSI
    • ขณะนี้ยูทิลิตี้ WUSA (Windows Update Standalone Installer) มีความสามารถในการติดตั้งการอัปเดตในรูปแบบ .MSU;
  • แพลตฟอร์ม ARM
    • สำหรับสถาปัตยกรรม ARM64 มีการเพิ่มการรองรับการคลายสแต็กใน ntdll แล้ว เพิ่มการรองรับสำหรับการเชื่อมต่อไลบรารี libunwind ภายนอก
    • สำหรับสถาปัตยกรรม ARM64 มีการใช้การรองรับพร็อกซีแบบไม่มีรอยต่อสำหรับอินเทอร์เฟซออบเจ็กต์
  • เครื่องมือพัฒนา / Winelib
    • เพิ่มความสามารถในการใช้ดีบักเกอร์จาก Visual Studio เพื่อดีบักแอปพลิเคชันที่ทำงานใน Wine จากระยะไกล
    • ไลบรารี DBGENG (Debug Engine) ได้รับการใช้งานบางส่วน
    • ไบนารีที่คอมไพล์สำหรับ Windows ไม่ต้องพึ่งพา libwine อีกต่อไป ทำให้สามารถทำงานบน Windows ได้โดยไม่ต้องพึ่งพาเพิ่มเติม
    • เพิ่มตัวเลือก '--sysroot' ให้กับ Resource Compiler และ IDL Compiler เพื่อกำหนดเส้นทางสำหรับไฟล์ส่วนหัว
    • เพิ่มตัวเลือก '—เป้าหมาย', '—wine-objdir' ให้กับ winegcc
      '—winebuild' และ '-fuse-ld' ซึ่งช่วยให้การตั้งค่าสภาพแวดล้อมสำหรับการคอมไพล์ข้ามง่ายขึ้น

  • แอปพลิเคชันแบบฝังตัว
    • ใช้ยูทิลิตี้ CHCP เพื่อกำหนดค่าการเข้ารหัสคอนโซล
    • ยูทิลิตี้ MSIDB สำหรับจัดการฐานข้อมูลในรูปแบบ MSI ได้ถูกนำมาใช้แล้ว
  • การเพิ่มประสิทธิภาพ
    • ฟังก์ชันจับเวลาต่างๆ ได้รับการโยกย้ายเพื่อใช้ฟังก์ชันตัวจับเวลาของระบบประสิทธิภาพสูง ซึ่งช่วยลดค่าใช้จ่ายในการเรนเดอร์ลูปของเกมหลายๆ เกม
    • เพิ่มความสามารถในการใช้ Ext4 ใน FS ระบอบการปกครอง ทำงานโดยไม่คำนึงถึงขนาดตัวพิมพ์
    • ประสิทธิภาพของการประมวลผลองค์ประกอบจำนวนมากในกล่องโต้ตอบแสดงรายการที่ทำงานในโหมด LBS_NODATA ได้รับการปรับให้เหมาะสม
    • เพิ่มการใช้งานการล็อค SRW (Slim Reader/Writer) สำหรับ Linux ที่รวดเร็วยิ่งขึ้น แปลเป็น Futex
  • การพึ่งพาภายนอก
    • ในการประกอบโมดูลในรูปแบบ PE จะใช้คอมไพเลอร์ข้าม MinGW-w64
    • การใช้ XAudio2 ต้องใช้ไลบรารี FAudio
    • เพื่อติดตามการเปลี่ยนแปลงไฟล์บนระบบ BSD
      ใช้ไลบรารี Inotify

    • ในการจัดการข้อยกเว้นบนแพลตฟอร์ม ARM64 จำเป็นต้องมีไลบรารี Unwind
    • แทนที่จะเป็น Video4Linux1 ตอนนี้จำเป็นต้องใช้ไลบรารี Video4Linux2

ที่มา: opennet.ru

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