إصدار مستقر من 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 يسمح بالوصول إلى جميع أحداث الإدخال واستبدال ضغطات المفاتيح المزيفة).

    تم وضع علامة على برنامج التشغيل على أنه تجريبي وقيد التطوير، ولكنه مع ذلك، يتمتع بالفعل بدعم العديد من الميزات، مثل إدارة النوافذ، والعمل مع شاشات متعددة، ودعم توسيع نطاق الإخراج على شاشات ذات كثافة بكسل عالية (عالية 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 (Windows-on-Windows 64 بت)، والتي تسمح بتشغيل تطبيقات Windows 32 بت على أنظمة Unix 64 بت. تستخدم كافة الوحدات التي تصل إلى مكتبات Unix thunks استدعاء نظام 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. تم تنفيذ القدرة على إنشاء Wine لـ ARM64EC ABI (متوافق مع محاكاة ARM64) ودعم تحميل وحدات ARM64EC، وتستخدم لتبسيط عملية نقل التطبيقات المكتوبة في الأصل لبنية x64_86 إلى أنظمة ARM64 من خلال توفير القدرة على تنفيذ الوحدات الفردية باستخدام x64_86 كود في بيئة ARM64 باستخدام المحاكي. تمت إضافة دعم لتنسيق ملف ARM64X PE، والذي يسمح بتحميل ملف واحد قابل للتنفيذ في عمليات x64/Arm64EC وARM64. تم تنفيذ واجهة لمحاكاة أنظمة x32 86 بت، لكن المكتبة المزودة بالمحاكي لم يتم تضمينها بعد في حزمة Wine الرئيسية (يمكنك استخدام محاكي FEX الخارجي لتشغيل كود x86 في بيئة ARM64).
  • النظام الفرعي للرسومات
    • تمت إعادة تصميم برنامج تشغيل PostScript لدعم ملفات التخزين المؤقت بتنسيق Windows التي تخزن البيانات حول مهام الطباعة. يتم استبعاد المكالمات المباشرة للسائق من بيئة Unix.
    • تمت إضافة دعم الوضع المظلم إلى سمات 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 Media Video).
    • تمت إضافة مرشح التقاط الصوت (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 (بيانات تعريف العرض الممتد) مع معلومات حول معلمات الشاشة المتصلة، مثل اسم الجهاز وطرازه.
    • من الممكن إغلاق نافذة سطح المكتب المنتشرة في وضع ملء الشاشة باستخدام زر "الخروج من سطح المكتب" في قائمة "ابدأ".
  • تدويل
    • دعم موسع لـ 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. تم تحديث قاعدة بيانات المنطقة الزمنية.
  • Kernel (واجهات Windows kernel)
    • الإصدار الافتراضي من 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.
    • تمت إضافة القدرة على عرض الإصدارات الأقدم من Windows (ما قبل XP) على الأنظمة الأساسية 64 بت إلى واجهة WineCfg، والتي تتيح لك تشغيل التطبيقات القديمة باستخدام وضع WoW64.
    • تعرض جميع التطبيقات الرسومية المضمنة الآن معلومات الخطأ في مربع حوار منفصل، بدلاً من عرضها في وحدة التحكم.
    • يوفر برنامج systeminfo عرض المعلومات من قاعدة بيانات WMI (Windows Management Instrumentation).
    • تمت إضافة تطبيق 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

إضافة تعليق