หลังจากหนึ่งปีของการพัฒนาและเวอร์ชันทดลอง 28 เวอร์ชัน
ในไวน์
สำคัญ
- โมดูลในรูปแบบ 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) ในกรณีที่ไกลออกไปตามเส้นทาง เป็นไปได้ที่จะค้นหาไลบรารีที่ถูกต้องสำหรับความลึกบิตปัจจุบัน
- สำหรับไดรเวอร์อุปกรณ์ การจำลองอ็อบเจ็กต์เคอร์เนลได้รับการปรับปรุงแล้ว
- ใช้ออบเจ็กต์การซิงโครไนซ์ที่ทำงานในระดับเคอร์เนล เช่น สปินล็อค การเปลี่ยนแปลงอย่างรวดเร็ว และตัวแปรที่แนบกับทรัพยากร
- ตรวจสอบให้แน่ใจว่าแอปพลิเคชันได้รับแจ้งอย่างถูกต้องเกี่ยวกับสถานะแบตเตอรี่
- ฟังก์ชั่นส่วนใหญ่ที่ใช้ใน Kernel32 ได้ถูกย้ายไปที่
- ส่วนต่อประสานผู้ใช้และการรวมเดสก์ท็อป
- ขณะนี้หน้าต่างที่ย่อเล็กสุดจะแสดงโดยใช้แถบชื่อเรื่องแทนที่จะเป็นไอคอนสไตล์ 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 ล่าสุด
- การใช้งาน DirectWrite API ได้เพิ่มการรองรับคุณสมบัติ OpenType ที่เกี่ยวข้อง
- เสียงและวิดีโอ
- มีการเสนอการนำ API เสียงไปใช้ใหม่
XAudio2 สร้างขึ้นบนพื้นฐานของโครงการเอฟออดิโอ . การใช้ FAudio ใน Wine ช่วยให้คุณได้รับคุณภาพเสียงที่สูงขึ้นในเกม และใช้คุณสมบัติต่างๆ เช่น การผสมระดับเสียงและเอฟเฟกต์เสียงขั้นสูง - มีการเพิ่มการเรียกใหม่จำนวนมากในการใช้งานกรอบงาน Media Foundation รวมถึงการสนับสนุนคิวอะซิงโครนัสในตัวและแบบกำหนดเอง, Source Reader API, Media Session ฯลฯ
- ตัวกรองการจับภาพวิดีโอได้เปลี่ยนไปใช้ v4l2 API แทน v4l1 API ซึ่งได้ขยายขอบเขตของกล้องที่รองรับ
- ตัวถอดรหัส AVI, MPEG-I และ WAVE ในตัวได้ถูกลบออกแล้ว แทนที่จะใช้ระบบ GStreamer หรือ QuickTime
- เพิ่มชุดย่อยของ API การกำหนดค่า VMR7
- เพิ่มการรองรับสำหรับการปรับระดับเสียงของแต่ละช่องสัญญาณให้กับไดรเวอร์เสียง
- มีการเสนอการนำ API เสียงไปใช้ใหม่
- การทำให้เป็นสากล
- ตาราง 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