بعد عام من التطوير و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 يسمح بالوصول إلى جميع أحداث الإدخال واستبدال ضغطات المفاتيح).
تم وضع علامة على برنامج التشغيل على أنه تجريبي وقيد التطوير، ولكنه مع ذلك، يتمتع بالفعل بدعم العديد من الميزات، مثل إدارة النوافذ، والعمل مع شاشات متعددة، ودعم توسيع نطاق الإخراج على شاشات ذات كثافة بكسل عالية (عالية DPI)، والعمل مع الإحداثيات النسبية عند تتبع حركة الماوس ودعم واجهة برمجة تطبيقات الرسومات Vulkan. بشكل افتراضي، برنامج التشغيل غير نشط ولتمكينه يجب عليك إضافة "wayland" إلى معلمة التسجيل "HKCU\Software\Wine\Drivers" والتأكد من عدم تعيين متغير البيئة DISPLAY: wine reg.exe add HKCU\ \\Software\\Wine\\Drivers /v Graphics /d x11,wayland
- تم تحويل جميع الوحدات إلى واجهة استدعاء نظام NT، بدلاً من إجراء مكالمات مباشرة بين طبقتي PE وUnix، مما يشير إلى اكتمال سنوات عديدة من العمل لتحويل جميع ملفات DLL لاستخدام تنسيق الملف القابل للتنفيذ PE (قابل للتنفيذ).
- استمر تطوير طبقة WoW64 (64 بت). Windows-على-Windows)، مما يسمح لك بتشغيل 32 بت Windows- تطبيقات على أنظمة يونكس 64 بت. تستخدم جميع الوحدات التي تصل إلى مكتبات يونكس مترجمات استدعاءات النظام WoW64 (الدوال المساعدة)، مما يسمح للوحدات 32 بت بتنسيق PE بالوصول إلى مكتبات يونكس 64 بت.
تم تحسين وضع تشغيل WoW64 الجديد، مما يسمح بتشغيل التعليمات البرمجية 32 بت ضمن عملية 64 بت (في وضع WoW64 القديم، كانت تطبيقات 32 بت تعمل ضمن عمليات يونكس 32 بت). تمت إضافة دعم استخدام وضع WoW64 الجديد على المنصة. macOSنظرًا لأن وضع WoW64 الجديد يحتوي على بعض الأخطاء الطفيفة، مثل عدم وجود دعم 16 بت وانخفاض أداء OpenGL بسبب عدم وجود دعم لامتداد ARB_buffer_storage، فإنه لم يتم تمكينه افتراضيًا بعد ويتطلب البناء باستخدام الخيار "--enable-archs=i386,x86_64" في برنامج التكوين النصي.
- تمت إضافة إمكانية تشغيل الملفات التنفيذية الموجودة Windows في الأنظمة ذات بنية ARM64، أصبح بالإمكان الآن بناء Wine لواجهة التطبيق الثنائية ARM64EC (المتوافقة مع محاكاة ARM64)، كما يُمكن تحميل وحدات ARM64EC. تُستخدم هذه الوحدات لتبسيط نقل التطبيقات المصممة أصلاً لبنية x86_64 إلى أنظمة ARM64، وذلك بتمكين تشغيل وحدات برمجية فردية من x86_64 في بيئة ARM64 باستخدام مُحاكي. أُضيفت ميزة دعم تنسيق ملف ARM64X PE، الذي يسمح بتحميل ملف تنفيذي واحد في كلٍ من عمليات x64/Arm64EC وARM64. تم تنفيذ واجهة لمحاكاة أنظمة x86 ذات 32 بت، ولكن مكتبة المُحاكي غير مُضمنة بعد في توزيعة Wine الرئيسية (يُمكن استخدام مُحاكي FEX الخارجي لتشغيل كود x86 في بيئة ARM64).
- النظام الفرعي للرسومات
- تمت إعادة تصميم برنامج تشغيل PostScript لدعم ملفات التخزين المؤقت بتنسيق Windowsوالتي تخزن بيانات حول مهام الطباعة. ولا يتم استدعاء برنامج التشغيل مباشرةً من بيئة يونكس.
- تمت إضافة دعم الوضع المظلم إلى سمات WinRT. تمت إضافة إعداد إلى WineCfg لتمكين تصميم الواجهة المظلمة.
- أضاف برنامج تشغيل واجهة برمجة تطبيقات الرسومات Vulkan دعمًا لمواصفات Vulkan 1.3.272 (تم دعم 8.0 في Wine 1.3.237).
- تم تحسين وظائف مكتبة GdiPlus، مما يسمح بزيادة أداء الرسومات.
- Direct3D
- يتم تعليق تحليل تدفق الأوامر متعدد الخيوط عندما لا تكون هناك أوامر عرض قيد المعالجة، مما يسمح بتقليل استهلاك الطاقة إلى مستوى المعالجة ذات الخيوط الواحدة عند تنفيذ البرامج التي لا تشغل النطاق الترددي لتدفق الأوامر بالكامل.
- يتضمن Direct3D 10 دعمًا لتأثيرات إضافية.
- تم إجراء تحسينات على الأداء لكود WineD3D والواجهة الخلفية باستخدام واجهة برمجة تطبيقات الرسومات Vulkan.
- يتحقق الآن رمز العرض المستند إلى Vulkan API من الإمكانيات التي يدعمها الجهاز ويخبر التطبيق بمستوى وظائف Direct3D المتوفرة.
- تم تنفيذ الوظيفتين D3DXFillTextureTX وD3DXFillCubeTextureTX.
- أضافت واجهة تظليل OpenGL ARB الكلاسيكية دعمًا لتعريف الظلال باستخدام ملحق ARB_fragment_program_shadow.
- أضافت D3DXLoadMeshHierarchyFromX والوظائف المشابهة دعمًا لتحميل بيانات المستخدم باستخدام واجهة ID3DXLoadUserData.
- الصوت والفيديو
- تم اقتراح التنفيذ الأولي لـ DirectMusic API. تمت إضافة دعم للمجموعات والآلات وعينات الصوت بتنسيق SoundFont. تمت إضافة الدعم لتأثير دوبلر. تم تنفيذ الاختبارات للتحقق من التنفيذ الصحيح عند تشغيل جهاز تسلسل dmime ومركب dmsynth MIDI.
- مكتبة FluidSynth مدمجة في DirectMusic API للاستخدام.
- تم تطبيق دعم تحميل ملفات الصوت (SoundFont - وهي تنسيقات لتوليف الصوت القائم على العينات المستخدمة لتشغيل ملفات MIDI) بتنسيقي DLS1 وDLS2، بالإضافة إلى تنسيق SF2 المستخدم في Linux.
- تمت إضافة القدرة على تشغيل محتوى MIDI باستخدام مكتبة dmsynth، باستخدام مركب برنامج FluidSynth وDirectSound API لإخراج الصوت.
- تمت إضافة وحدة فك ترميز للفيديو بتنسيق برنامج ترميز الفيديو Indeo IV50.
- عرض مباشر
- تم تنفيذ مكون DMO (كائن وسائط DirectX) مع وحدة فك تشفير بتنسيق WMV (Windows (فيديو الوسائط).
- تمت إضافة مرشح التقاط الصوت (DirectShow Audio Capture Filter).
- بالإضافة إلى تدفقات الصوت، يدعم الآن مقسم التدفق MPEG‑1 (DirectShow MPEG‑1 Stream Splitter) تدفقات الفيديو وتدفقات الخدمة.
- تم تطبيق مرشح لفك تشفير الفيديو بتنسيق MPEG‑1 (DirectShow MPEG‑1 Video Decoder).
- أجهزة الإدخال
- يدعم DirectInput تعيين الإجراءات، والذي يسمح لك بربط الأزرار الموجودة على وحدة التحكم في الألعاب بإجراءات محددة في الألعاب.
- تكامل سطح المكتب
- تم تصدير الروابط إلى بيئة المستخدم الرئيسية، مما يسمح باستدعاء التطبيقات التي تعمل ضمن Wine كمعالجات بروتوكول عند فتح عنوان URL (على سبيل المثال، تشغيل Spotify.exe عند فتح روابط مثل "spotify:user:spotify:playlist:848218482355482821").
- تم تنفيذ استخراج بيانات EDID (بيانات تعريف العرض الممتد) مع معلومات حول معلمات الشاشة المتصلة، مثل اسم الجهاز وطرازه.
- من الممكن إغلاق نافذة سطح المكتب المنتشرة في وضع ملء الشاشة باستخدام زر "الخروج من سطح المكتب" في قائمة "ابدأ".
- تدويل
- تم توسيع نطاق دعم محررات أساليب الإدخال (IMEs). وقد تم العمل على ضمان التوافق مع البرامج الأصلية. 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)، مما أدى إلى زيادة أداء عمليات تخصيص الذاكرة.
- تمت إضافة دعم حجز الذاكرة (العنصر النائب) إلى آلية تخصيص الذاكرة الافتراضية، مما يسمح للتطبيق بحجز منطقة معينة من الذاكرة الافتراضية لاستخدامها في المستقبل.
- يتم تجميع أدوات التحميل 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.
- تم تنفيذ حزمة التفاوض، مما يوفر طبقة لاستخدام واجهة SSPI (واجهة موفر الدعم الأمني) للوصول إلى SSPs (موفري الدعم الأمني).
- التطبيقات المدمجة
- يستخدم 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 دعمًا للسمات "القابلة للتركيب" و"التحميل الافتراضي" و"المهملة" و"المحمية".
- تمت إزالة 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 في البنية.
- المكونات 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 تم تحديثها إلى NEW. تم تحديث محرك Wine Mono مع تطبيق النظام الأساسي .NET إلى الإصدار 8.1.0.
- يستخدم برنامج التشغيل winewayland.drv مكتبة عميل Wayland كتبعيات خارجية، بالإضافة إلى مكتبات xkbcommon وxkbregistry.
- لدعم البطاقات الذكية، يتم استخدام مكتبة PCSClite الخارجية (في macOS (PCSC).
- يتطلب الآن إنشاء ملفات PE على منصات غير i386 مترجمًا مشتركًا مع دعم لتوجيهات ".seh" للتعامل مع الاستثناءات.
المصدر: opennet.ru
