يصل Wine، طبقة التوافق مع Windows، إلى الإصدار 5.0 على Android

Wine عبارة عن طبقة توافق مع Windows تسمح للمستخدمين بتشغيل تطبيقات Windows على أنظمة تشغيل أخرى. لقد وصل Wine لنظام Android الآن إلى الإصدار 5.0 - تحقق من ذلك!

لقد تطور النظام البيئي لتطبيقات Android بشكل مطرد على مدار سنوات وجود Android، مدعومًا بالاعتماد المستمر للجوال باعتباره التفاعل الأساسي للكمبيوتر بالنسبة لمعظم الأشخاص. انجذب الكثير من المستخدمين نحو أسلوب حياة يعتمد على الهاتف المحمول فقط، وذلك لأن التطبيقات والنظام البيئي للتطبيقات على الهاتف المحمول تمكنت من تلبية احتياجاتهم الخاصة. ولكن إذا وجدت نفسك في حاجة إلى تطبيق سطح مكتب دون أن تتمكن من الوصول إلى سطح المكتب، فماذا ستفعل؟ هذا هو المكان الذي يأتي فيه Wine، وهو طبقة توافق Windows التي تسمح للمستخدمين بتشغيل تطبيقات Windows كاملة على أنظمة تشغيل مختلفة. النبيذ لالروبوت لديه وصلت الآن إلى v5.0، يجمع جهود التطوير من الفريق لمدة عام.

Wine عبارة عن طبقة توافق مجانية ومفتوحة المصدر لنظام Windows، تهدف إلى السماح لبرامج الكمبيوتر التي تم تطويرها لنظام Windows بالعمل على أنظمة تشغيل أخرى. Wine for Android يجلب Wine إلى Android، بوضوح. Wine ليس محاكيًا (وهو في الواقع اسم خلفي متكرر للاسم)، لذلك يمكن تشغيله فقط إصدارات التطبيقات الخاصة بالهندسة المعمارية - سيعمل إصدار ARM من Wine لنظام Android على تشغيل تطبيقات ARM فقط، وليس x86.

تتضمن أبرز ميزات الإصدار الثابت من Wine 5.0 دعم الشاشات المتعددة ودعم Vulkan 1.1. سجل التغيير الكامل للتحديث هو كما يلي:

سجل تغيير النبيذ 5.0:

  • وحدات بي:
    • تم إنشاء معظم الوحدات بتنسيق PE (قابل للتنفيذ، تنسيق Windows الثنائي) بدلاً من ELF عندما يكون مترجم MinGW متاحًا. يساعد هذا العديد من أنظمة حماية النسخ التي تتحقق من تطابق محتويات وحدات النظام الموجودة على القرص والذاكرة.
    • يتم نسخ ثنائيات PE الفعلية إلى بادئة Wine بدلاً من ملفات DLL المزيفة. وهذا يجعل البادئة تبدو أشبه بتثبيت Windows حقيقي، على حساب بعض المساحة الإضافية على القرص.
    • يمكن للوحدات التي تم تحويلها إلى PE استخدام وظائف C ذات الأحرف العريضة القياسية، بالإضافة إلى ثوابت الأحرف ذات الأحرف العريضة مثل L"abc". وهذا يجعل الكود أسهل في القراءة.
    • لم يتم تحويل جميع الوحدات إلى PE حتى الآن؛ هذه عملية مستمرة ستستمر خلال سلسلة تطوير Wine 5.x.
    • يتم تحديث وقت تشغيل Wine C لدعم الارتباط بالثنائيات المجمعة بواسطة MinGW؛ يتم استخدامه بشكل افتراضي بدلاً من وقت تشغيل MinGW عند إنشاء مكتبات الارتباط الحيوي (DLL).
  • الرسومات:
    • يتم دعم محولات العرض وأجهزة العرض المتعددة بشكل صحيح، بما في ذلك تغييرات التكوين الديناميكي.
    • يدعم برنامج تشغيل Vulkan ما يصل إلى الإصدار 1.1.126 من مواصفات Vulkan.
    • مكتبة WindowsCodecs قادرة على تحويل المزيد من تنسيقات الصور النقطية، بما في ذلك التنسيقات المفهرسة بلوحة الألوان.
  • دايركت 3 دي:
    • تمنع تطبيقات Direct3D بملء الشاشة شاشة التوقف.
    • يعرض DXGI Swapchain إبلاغ التطبيق عند تصغير النافذة المقابلة. يسمح هذا عادةً للتطبيقات بتقليل استخدام وحدة المعالجة المركزية (CPU) مع تقليلها إلى الحد الأدنى، ويكون مطلوبًا في بعض الحالات للسماح باستعادة نافذة التطبيق مرة أخرى.
    • يتم التبديل بين وضع ملء الشاشة ووضع النافذة باستخدام مجموعة Alt+Enter القياسية لتطبيقات DXGI.
    • يتم تطبيق الميزات التالية لتطبيقات Direct3D 12:
      • التبديل بين ملء الشاشة والإطارات.
      • تغيير أوضاع العرض.
      • هدايا متدرجة.
      • فترات المبادلة. تم بالفعل تنفيذ هذه الميزات في الإصدارات السابقة من Direct3D API.
    • تم تحسين التعامل مع حالات الحافة المختلفة. من بين أمور أخرى:
      • القيم المرجعية خارج النطاق لاختبارات ألفا والاستنسل.
      • أخذ عينات من الموارد ثنائية الأبعاد باستخدام عينات ثلاثية الأبعاد والعكس.
      • الرسم باستخدام الأنسجة والمخازن المؤقتة المعينة.
      • استخدام كائنات أداة قص DirectDraw غير الصالحة.
      • إنشاء أجهزة Direct3D على نظام Windows غير صالح، مثل نافذة سطح المكتب.
      • منافذ العرض ذات الحد الأدنى Z أكبر من أو يساوي الحد الأقصى Z.
      • يتم ربط الموارد من خلال طرق عرض موارد التظليل وطرق عرض الهدف أو طرق عرض الاستنسل العميقة في نفس الوقت.
      • يتنقل بين التنسيقات التي تحتوي على مكونات ألفا أو بدونها. نظرًا لأن التطبيقات جيدة التصرف لا تعتمد على حالات الحافة هذه، فإنها عادةً ما تؤثر فقط على تطبيق واحد أو تطبيقين لكل منهما. ومع ذلك، هناك عدد لا بأس به منهم.
    • يتم تتبع مناطق النسيج المتسخة بشكل أكثر دقة لتحميلات نسيج Direct3D 8 و9.
    • تتطلب عمليات تحميل الأنسجة ثلاثية الأبعاد المضغوطة بواسطة S3TC مساحة عنوان أقل. نظرًا لأن الأنسجة ثلاثية الأبعاد يمكن أن تكون كبيرة الحجم، كما أن استنفاد مساحة العنوان يمثل مصدر قلق لتطبيقات 32 بت، فإن الأنسجة ثلاثية الأبعاد المضغوطة بواسطة S3TC يتم تحميلها لكل شريحة، بدلاً من تحميلها مرة واحدة.
    • تم تنفيذ واجهة ID3D11Multithread.
    • تم إجراء إصلاحات وتحسينات مختلفة لحسابات الإضاءة لتطبيقات DirectDraw الأقدم.
    • يتم تنفيذ دعم محدود لـ blits عبر Swapchains.
    • تم تنفيذ المزيد من واجهات برمجة تطبيقات انعكاس التظليل.
    • يمكن لوحدة المعالجة المركزية wine3d التعامل مع موارد المصدر المضغوطة. تم بالفعل تنفيذ دعم موارد الوجهة المضغوطة في إصدار سابق.
    • تتعرف قاعدة بيانات بطاقة الرسومات Direct3D على المزيد من بطاقات الرسومات.
    • مفاتيح التسجيل الجديدة HKEY_CURRENT_USER\Software\Wine\Direct3D:
      • "shader_backend" (REG_SZ)الواجهة الخلفية للتظليل المراد استخدامها. القيم المحتملة هي "glsl" (افتراضي) لـ GLSL و"arb" لبرامج قمة/جزء ARB و"none" لتعطيل دعم التظليل.
      • "strict_shader_math" (REG_DWORD) تمكين (0x1) أو تعطيل (0x0، الافتراضي) الترجمة الأكثر صرامة لتظليل Direct3D، ربما بتكلفة الأداء. يُحدث هذا حاليًا فرقًا فقط مع الواجهة الخلفية الافتراضية لـ GLSL Shader مع برامج تشغيل NVIDIA الخاصة.
    • مفتاح التسجيل المهمل HKEY_CURRENT_USER\Software\Wine\Direct3D:
      • "UseGLSL" لقد تم استبدال هذا بإعداد "shader_backend" أعلاه.
  • دي 3 دي اكس :
    • يتم تنفيذ دعم ضغط الأنسجة باستخدام ضغط S3TC.
    • عمليات مختلفة، مثل على سبيل المثال. يتم تنفيذ عمليات تعبئة النسيج على الأسطح غير القابلة للتعيين بشكل أكثر دقة. في السابق، كان تنفيذها يعتمد على تطبيق Direct3D الأساسي الذي لا يفرض قيودًا على رسم الخرائط.
    • تم إجراء تحسينات وإصلاحات مختلفة على إطار التأثير.
  • النواة:
    • تم نقل معظم الوظائف التي كانت موجودة في Kernel32 إلى KernelBase، لتتبع بنية إصدارات Windows الحديثة.
    • يتم تجاهل المكتبات ذات معدل الخطأ 32/64 بت عند العثور عليها في مسار البحث، لتمكين تحميل المكتبة الصحيحة إذا تم العثور عليها في المسار.
    • يتم محاكاة كائنات Kernel بشكل أفضل لبرامج تشغيل الأجهزة التي تتوقع معالجة الكائنات من جانب kernel.
    • يتم تنفيذ كائنات المزامنة على مستوى kernel مثل أقفال الدوران وكائنات المزامنة السريعة وإزالة الأقفال ومتغيرات الموارد.
    • يتم الإبلاغ عن حالة بطارية النظام بشكل صحيح للتطبيقات.
  • واجهة المستخدم:
    • يتم عرض النوافذ المصغرة باستخدام شريط العناوين الخاص بها بدلاً من أيقونات نمط Windows 3.1 القديمة.
    • تم تنفيذ أنماط الأزرار الجديدة Split Buttons وCommand Links.
    • يقوم عنصر التحكم "تحرير" بتعيين الهوامش بشكل صحيح أيضًا لخطوط CJK.
  • التكامل مع سطح المكتب:
    • يتم إنشاء روابط رمزية لمجلدات Unix المقابلة لمجلدي "التنزيلات" و"القوالب".
  • أجهزة إدخال:
    • يمكن تثبيت برامج تشغيل أجهزة التوصيل والتشغيل وتحميلها عند بدء التشغيل.
    • يتم دعم وحدات التحكم في الألعاب بشكل أفضل، بما في ذلك الدعم المناسب لمفتاح القبعة وأدوات التحكم في العجلات والغاز والفرامل.
    • لم تعد واجهة برمجة تطبيقات عصا التحكم القديمة لإصدارات Linux الأقدم من 2.2 مدعومة.
  • .شبكة:
    • تم تحديث المحرك Mono إلى الإصدار 4.9.4، بما في ذلك أجزاء من إطار عمل Windows Presentation Foundation (WPF).
    • تدعم الوظائف الإضافية Gecko وMono التثبيت المشترك، حيث يتم استخدام الملفات مباشرةً من موقع عالمي ضمن /usr/share/wine بدلاً من نسخها إلى كل بادئة جديدة.
  • الإنترنت والشبكات:
    • تم تحديث محرك Gecko لدعم سلاسل الأدوات الحديثة.
    • تم تنفيذ عدد من واجهات برمجة تطبيقات HTML الجديدة.
    • يدعم MSHTML بعض عناصر SVG.
    • يتم دعم كائن الخطأ وانتشار الاستثناء في VBScript.
    • يتم تنفيذ عدد من وظائف VBScript المضمنة.
    • تم توسيع الوضع المتوافق مع JScript EcmaScript لدعم المزيد من الميزات.
    • تعرض كائنات البرنامج النصي JScript وVBScript واجهات معلومات النوع.
    • يمكن استرداد تكوين وكيل HTTP من خلال DHCP.
    • يتم دعم عمليات إعادة توجيه Passport HTTP.
    • يتم تنفيذ خدمة HTTP ومكتبة العميل المقابلة (HTTPAPI) جزئيًا.
  • التشفير:
    • يتم دعم مفاتيح ECC (المنحنى الإهليلجي) عند استخدام GnuTLS.
    • يتم تنفيذ استيراد المفاتيح والشهادات من نقاط PFX.
    • يتم دعم خوارزمية اشتقاق المفتاح PBKDF2.
  • النص والخطوط:
    • يتم دعم ميزات تحديد موضع OpenType في DirectWrite، ويتم تمكينها للنص اللاتيني بشكل افتراضي، بما في ذلك تقنين الأحرف.
    • أصبح الوصول إلى بيانات الخط أكثر أمانًا من خلال التحقق من صحة جداول البيانات المختلفة قبل استخدامها.
    • يتم تحديث واجهات DirectWrite إلى SDK حديث، مع تنفيذ بعض أحدث إضافات واجهة برمجة التطبيقات.
  • الصوت / الفيديو:
    • تمت إعادة تنفيذ مكتبات XAudio2 لاستخدام مكتبة FAudio الخارجية لتحسين التوافق.
    • تم تجسيد مكتبات مؤسسة الوسائط، بما في ذلك:
      • دعم قوائم انتظار العمل المضمنة وغير المتزامنة للمستخدم.
      • إمكانية إرسال عناصر الرد الدورية والانتظار والمجدولة والعادية مع دعم أولوية العناصر.
      • دعم قوائم انتظار أحداث الوسائط.
      • واجهة برمجة تطبيقات أساسية مختلفة للتعامل مع كائنات أنواع الوسائط وواصفات الدفق والعرض التقديمي وسمات الكائن وكائنات دفق البايت والعينات والمخازن المؤقتة.
      • تنفيذ محلل المصدر الأولي.
      • التنفيذ الأولي لواجهة برمجة تطبيقات Source Reader.
      • التنفيذ لكائن Sample Grabber.
      • الدعم الأساسي لبناء كائنات طوبولوجيا.
      • بدأ تنفيذ ساعة العرض التقديمي المضمنة في تنفيذ وظيفة جلسة الوسائط.
    • لقد تم نقل مرشح التقاط الفيديو لاستخدام الإصدار v4l2 بدلاً من واجهة برمجة التطبيقات v4l1 المهملة، مما يسمح باستخدام بعض الكاميرات التي لا تدعم الإصدار 4l1.
    • تمت إزالة دعم الترجمة من YUV إلى RGB والقراءة من أجهزة v4l2 باستخدام mmap()؛ نحن نعتمد الآن على libv4l2 لكلا الأمرين.
    • تمت إزالة وحدات فك التشفير المضمنة AVI وMPEG-I وWAVE؛ نحن نعتمد الآن على GStreamer أو Mac QuickTime Toolkit لفك تشفير ملفات الوسائط هذه.
    • تم تنفيذ بعض واجهات برمجة التطبيقات (API) لتكوين VMR7.
    • تدعم برامج تشغيل الصوت تعديلات مستوى الصوت لكل قناة.
  • تدويل:
    • تعتمد جداول أحرف Unicode على الإصدار 12.1.0 من Unicode Standard.
    • يتم تنفيذ تطبيع Unicode.
    • يتم تعيين معرف المنطقة الجغرافية تلقائيًا في السجل بناءً على اللغة الحالية. ويمكن تعديله إذا لزم الأمر ضمن HKEY_CURRENT_USER\Control Panel\International\Geo.
    • يتم دعم اللغات السنهالية والأسترية.
    • يتم دعم صفحة الرموز 28601 (اللاتينية/التايلاندية).
  • RPC/COM:
    • يدعم منظم typelib الهياكل والمصفوفات المعقدة.
    • يوجد تطبيق أولي لمكتبة وقت تشغيل Windows Script.
    • يوجد تطبيق أولي لمكتبة كائنات بيانات Microsoft ActiveX (ADO).
  • المثبتون:
    • يتم دعم ملفات تصحيح Microsoft Installer (MSI).
    • تدعم أداة WUSA (Windows Update Standalone Installer) تثبيت ملفات تحديث .MSU.
  • منصات آرم:
    • يتم تنفيذ تفكيك الاستثناء لـ ARM64 باستخدام مكتبة libunwind.
    • يتم دعم وكلاء OLE stubless على ARM64.
  • أدوات التطوير / Winelib :
    • يمكن استخدام مصحح أخطاء Visual Studio عن بعد لتصحيح أخطاء التطبيقات التي تعمل ضمن Wine.
    • تم تنفيذ مكتبة Debug Engine (DBGENG) جزئيًا.
    • لم تعد الثنائيات المصممة لهدف Windows تعتمد على مكتبة libwine، لتمكينها من العمل على Windows دون أي تبعيات إضافية. لم تعد مكتبة libwine مصممة لنظام التشغيل Windows على الإطلاق.
    • يدعم مترجم الموارد ومترجم IDL خيار "--sysroot" للسماح بتحديد موقع ملفات الرأس في بيئات الترجمة المشتركة.
    • يدعم Winegcc الخيارات '--target' و'--wine-objdir' و'--winebuild' و'-fuse-ld' التي تسهل استخدامه كمترجم مشترك أو مع سلاسل الأدوات المخصصة.
    • لم يعد رأس wine/unicode.h متاحًا للتطبيقات، حيث ستتم إزالة الوظائف في النهاية واستبدالها بوظائف الأحرف العريضة القياسية في وقت تشغيل C.
  • بناء البنية التحتية:
    • يتم إنشاء ثنائيات الاختبار بتنسيق PE إذا كان MinGW متاحًا، لذلك يمكن تشغيل نفس ثنائي الاختبار على كل من Wine وWindows. لم تعد هناك حاجة إلى هدف "الاختبار المتقاطع" أو دعمه.
    • يتم دعم اصطلاح الاتصال "fastcall" في ملفات المواصفات. يستخدم الاسم الصحيح لبنيات Windows.
    • يتم دعم علامة نقطة الإدخال "-import" في ملفات المواصفات، لوضع علامة على الوظائف التي تحتاج إلى إنشاء بادئة رمز التصحيح السريع لمجموعات الاستيراد الخاصة بها.
    • يدعم Winebuild خيار "--builtin" لإضافة توقيع خاص إلى ثنائيات PE لوضع علامة عليها على أنها مدمجة في Wine.
  • التطبيقات المدمجة:
    • يتم تنفيذ أداة CHCP. يسمح بإعداد صفحة الرموز لوحدة التحكم.
    • يتم تنفيذ أداة MSIDB. يسمح بمعالجة قواعد بيانات MSI.
  • تحسينات في الأداء:
    • تستخدم وظائف الوقت المختلفة ساعات نظام ذات أداء أعلى إذا كانت متوفرة، لتقليل الحمل في حلقة العرض للعديد من الألعاب.
    • تستفيد عمليات البحث عن الملفات من دعم طي حالة نظام الملفات ext4 إذا تم تمكينه في الدليل الذي يتم البحث فيه.
    • تتمتع مربعات القائمة ذات النمط الذي لا يحتوي على بيانات (LBS_NODATA) بأداء أفضل لعدد كبير من العناصر.
    • تستخدم أقفال القارئ/الكاتب الرفيعة والأحداث ذات المفاتيح ومتغيرات الحالة futexes على Linux لتجنب الرحلات ذهابًا وإيابًا لخادم النبيذ.
  • التبعيات الخارجية الجديدة:
    • يتم استخدام المترجم المتقاطع MinGW-w64 لبناء وحدات بتنسيق PE.
    • يتم استخدام مكتبة FAudio لتنفيذ XAudio2.
    • تُستخدم مكتبة Inotify لإشعارات تغيير الملفات على منصات BSD.
    • يتم استخدام مكتبة Unwind لمعالجة الاستثناءات على ARM64.
    • يتم استخدام مكتبة Video4Linux الإصدار 2 بدلاً من الإصدار 1.

اقرأ أكثر


مصدر: مقر النبيذ

القصة عبر: AndroidPolice