انتشار پایدار Wine 7.0

پس از یک سال توسعه و 30 نسخه آزمایشی، یک نسخه پایدار از اجرای باز Win32 API ارائه شد - Wine 7.0 که بیش از 9100 تغییر را در خود جای داد. دستاوردهای کلیدی نسخه جدید شامل ترجمه اکثر ماژول های Wine به فرمت PE، پشتیبانی از تم ها، گسترش پشته برای جوی استیک ها و دستگاه های ورودی با رابط HID و پیاده سازی معماری WoW64 برای اجرای برنامه های 32 بیتی در محیط 64 بیتی

Wine عملکرد کامل 5156 (یک سال پیش 5049) برنامه را برای ویندوز تأیید کرده است، 4312 برنامه دیگر (یک سال پیش 4227) با تنظیمات اضافی و DLL های خارجی کاملاً کار می کنند. 3813 برنامه (3703 سال پیش) دارای مشکلات عملیاتی جزئی هستند که در استفاده از عملکردهای اصلی برنامه ها اختلال ایجاد نمی کند.

نوآوری های کلیدی در Wine 7.0:

  • ماژول ها در قالب PE
    • تقریباً تمام DLL ها برای استفاده از فرمت فایل اجرایی PE (Portable Executable، مورد استفاده در ویندوز) به جای ELF تبدیل شده اند. استفاده از PE مشکلات مربوط به پشتیبانی از طرح های مختلف حفاظت از کپی را حل می کند که هویت ماژول های سیستم را روی دیسک و حافظه تأیید می کند.
    • توانایی تعامل ماژول‌های PE با کتابخانه‌های یونیکس با استفاده از فراخوانی سیستم هسته استاندارد NT پیاده‌سازی شده است که به شما امکان می‌دهد دسترسی به کد یونیکس را از اشکال‌زدای ویندوز مخفی کنید و ثبت رشته را نظارت کنید.
    • DLLهای داخلی اکنون فقط در صورتی بارگذاری می شوند که یک فایل PE مربوطه روی دیسک وجود داشته باشد، صرف نظر از اینکه یک کتابخانه واقعی باشد یا یک خرد. این تغییر به برنامه اجازه می‌دهد همیشه اتصال صحیح به فایل‌های PE را ببیند. برای غیرفعال کردن این رفتار، می توانید از متغیر محیطی WINEBOOTSTRAPMODE استفاده کنید.
  • WoW64
    • معماری WoW64 (ویندوز روی ویندوز 64 بیتی) پیاده سازی شده است که به شما امکان می دهد برنامه های ویندوز 32 بیتی را در فرآیندهای یونیکس 64 بیتی اجرا کنید. پشتیبانی از طریق اتصال لایه ای اجرا می شود که تماس های سیستم NT 32 بیتی را به تماس های 64 بیتی به NTDLL تبدیل می کند.
    • لایه های WoW64 برای اکثر کتابخانه های یونیکس آماده شده اند و به ماژول های PE 32 بیتی اجازه دسترسی به کتابخانه های یونیکس 64 بیتی را می دهند. هنگامی که همه ماژول ها به فرمت PE تبدیل شدند، امکان اجرای برنامه های ویندوز 32 بیتی بدون نصب کتابخانه های یونیکس 32 بیتی وجود خواهد داشت.
  • تم ها
    • پشتیبانی تم اجرا شده است. مضامین طراحی "نور"، "آبی" و "آبی کلاسیک" گنجانده شده اند که می توانند از طریق پیکربندی WineCfg انتخاب شوند.
    • قابلیت شخصی سازی ظاهر تمامی کنترل های رابط از طریق تم ها اضافه شده است. ظاهر عناصر پس از تغییر موضوع طراحی به طور خودکار به روز می شود.
    • پشتیبانی از تم به همه برنامه های داخلی Wine اضافه شده است. برنامه ها با صفحه نمایش هایی با تراکم پیکسلی بالا (DPI بالا) سازگار شده اند.
  • زیرسیستم گرافیک
    • یک کتابخانه جدید Win32u اضافه شده است که شامل بخش هایی از کتابخانه های GDI32 و USER32 مربوط به پردازش گرافیکی و مدیریت پنجره در سطح هسته است. در آینده، کار بر روی پورت کردن اجزای درایور مانند winex32.drv و winemac.drv به Win11u آغاز خواهد شد.
    • درایور Vulkan از مشخصات API گرافیکی Vulkan 1.2.201 پشتیبانی می کند.
    • پشتیبانی از خروجی اشیاء هندسی هچ شده از طریق Direct2D API، با قابلیت بررسی اینکه آیا یک کلیک ضربه می زند (آزمایش ضربه).
    • Direct2D API پشتیبانی اولیه برای جلوه های بصری اعمال شده با استفاده از رابط ID2D1Effect را فراهم می کند.
    • Direct2D API پشتیبانی از رابط ID2D1MultiThread را اضافه کرده است که برای سازماندهی دسترسی انحصاری به منابع در برنامه های چند رشته ای استفاده می شود.
    • مجموعه کتابخانه های WindowsCodecs از رمزگشایی تصاویر با فرمت WMP (Windows Media Photo) و کدگذاری تصاویر در فرمت DDS (DirectDraw Surface) پشتیبانی می کند. ما دیگر از رمزگذاری تصاویر در قالب ICNS (برای macOS) که در ویندوز پشتیبانی نمی‌شود، پشتیبانی نمی‌کنیم.
  • Direct3D
    • موتور رندر جدید به طور قابل توجهی بهبود یافته است و تماس های Direct3D را به API گرافیکی Vulkan ترجمه می کند. در بیشتر موقعیت‌ها، سطح پشتیبانی از Direct3D 10 و 11 در موتور مبتنی بر Vulkan با موتور قدیمی‌تر مبتنی بر OpenGL برابری می‌کند. برای فعال کردن موتور رندر Vulkan، متغیر رجیستری Direct3D "renderer" را روی "vulkan" تنظیم کنید.
    • بسیاری از ویژگی‌های Direct3D 10 و 11 پیاده‌سازی شده‌اند، از جمله Deferred Contexts، اشیاء حالتی که در زمینه دستگاه کار می‌کنند، offset‌های مداوم در بافرها، پاک کردن نماهای بافت نامرتب، کپی کردن داده‌ها بین منابع در فرمت‌های بدون نوع (DXGI_FORMAT_BC3_TYPELESS، DXGI32AG32 و غیره) .
    • اضافه شدن پشتیبانی از تنظیمات چند مانیتور، به شما این امکان را می دهد که یک مانیتور را برای نمایش یک برنامه Direct3D در حالت تمام صفحه انتخاب کنید.
    • DXGI API تصحیح گامای صفحه نمایش را ارائه می دهد که می تواند توسط برنامه های مبتنی بر Direct3D 10 و 11 برای تغییر روشنایی صفحه استفاده شود. بازیابی شمارنده های فریم بافر مجازی (SwapChain) را فعال کرد.
    • Direct3D 12 پشتیبانی از امضاهای ریشه نسخه 1.1 را اضافه می کند.
    • در کد رندر از طریق Vulkan API، زمانی که سیستم از پسوند VK_EXT_host_query_reset پشتیبانی می کند، کارایی پردازش پرس و جو بهبود یافته است.
    • در صورتی که OpenGL یا Vulkan را نمی توان برای نمایش استفاده کرد، به عنوان مثال، هنگام خروجی از یک پنجره از فرآیندهای مختلف، به عنوان مثال، در برنامه های مبتنی بر چارچوب CEF (Chromium Embedded Framework) توانایی خروجی فریم بافرهای مجازی (SwapChain) از طریق GDI را اضافه کرد.
    • هنگام استفاده از باطن سایه زن GLSL، اصلاح کننده "دقیق" برای دستورالعمل های سایه زن تضمین می شود.
    • DirectDraw API با استفاده از ابزارهای نرم افزاری مانند "RGB"، "MMX" و "Ramp" از رندر سه بعدی به حافظه سیستم پشتیبانی می کند.
    • کارت های AMD Radeon RX 3M، AMD Radeon RX 5500/6800 XT/6800 XT، AMD Van Gogh، Intel UHD Graphics 6900 و NVIDIA GT 630 به پایگاه داده کارت گرافیک Direct1030D اضافه شده اند.
    • کلید "UseGLSL" از رجیستری HKEY_CURRENT_USER\Software\Wine\Direct3D حذف شده است، به جای آن، با شروع با Wine 5.0، باید از "shader_backend" استفاده کنید.
    • برای پشتیبانی از Direct3D 12، اکنون حداقل به نسخه 3 کتابخانه vkd1.2d نیاز دارید.
  • D3DX
    • اجرای D3DX 10 پشتیبانی از چارچوب جلوه‌های بصری را بهبود بخشیده و از فرمت تصویر Windows Media Photo (JPEG XR) پشتیبانی می‌کند.
    • توابع ایجاد بافت اضافه شده در D3DX10، مانند D3DX10CreateTextureFromMemory().
    • رابط های نرم افزار ID3DX10Sprite و ID3DX10Font تا حدی پیاده سازی شده اند.
  • صدا و تصویر
    • افزونه‌های GStreamer برای DirectShow و چارچوب Media Foundation در یک Backend مشترک WineGStreamer ترکیب شده‌اند که باید توسعه APIهای رمزگشایی محتوای جدید را ساده کند.
    • بر اساس WineGStreamer، اشیاء Windows Media برای خواندن همزمان و ناهمزمان پیاده سازی می شوند.
    • اجرای چارچوب Media Foundation بیشتر اصلاح شده است، پشتیبانی از عملکرد IMFPMediaPlayer و اختصاص دهنده نمونه اضافه شده است، و پشتیبانی از بافرهای رندر EVR و SAR بهبود یافته است.
    • کتابخانه wineqtdecoder که یک رمزگشا برای قالب QuickTime فراهم می کند، حذف شده است (اکنون همه کدک ها از GStreamer استفاده می کنند).
  • دستگاه های ورودی
    • پشته دستگاه های ورودی که از پروتکل HID (دستگاه های رابط انسانی) پشتیبانی می کنند، به طور قابل توجهی بهبود یافته است و قابلیت هایی مانند تجزیه توصیفگرهای HID، پردازش پیام های HID و ارائه درایورهای mini-HID را ارائه می دهد.
    • در پشتیبان درایور winebus.sys، ترجمه توضیحات دستگاه به پیام های HID بهبود یافته است.
    • یک باطن DirectInput جدید برای جوی استیک هایی که از پروتکل HID پشتیبانی می کنند اضافه شده است. قابلیت استفاده از افکت های بازخورد در جوی استیک ها پیاده سازی شده است. پانل کنترل جوی استیک بهبود یافته تعامل بهینه شده با دستگاه های سازگار XInput. در WinMM، به جای استفاده از backend evdev در لینوکس و IOHID در macOS IOHID، پشتیبانی جوی استیک به DInput منتقل شده است. درایور جوی استیک قدیمی winejoystick.drv حذف شده است.
    • تست‌های جدیدی بر اساس استفاده از دستگاه‌های HID مجازی و عدم نیاز به دستگاه فیزیکی به ماژول DInput اضافه شده است.
  • متن و فونت
    • شیء Font Set به DirectWrite اضافه شد.
    • RichEdit به درستی رابط TextHost را پیاده سازی می کند.
  • هسته (رابط کرنل ویندوز)
    • هنگام اجرای یک فایل اجرایی ناشناس (مانند 'wine foo.msi') در Wine، اکنون start.exe فراخوانی می شود که کنترل کننده های مرتبط با نوع فایل را فراخوانی می کند.
    • پشتیبانی از مکانیسم های همگام سازی NtAlertThreadByThreadId و NtWaitForAlertByThreadId، مشابه futexes در لینوکس اضافه شده است.
    • اضافه شدن پشتیبانی از اشیاء اشکال زدایی NT که برای اشکال زدایی توابع هسته استفاده می شوند.
    • اضافه شدن پشتیبانی از کلیدهای رجیستری پویا برای ذخیره داده های عملکرد.
  • C زمان اجرا
    • زمان اجرا C مجموعه کاملی از توابع ریاضی را پیاده سازی می کند که عمدتاً از کتابخانه Musl منتقل می شوند.
    • همه پلتفرم های CPU پشتیبانی درستی از توابع ممیز شناور ارائه می دهند.
  • ویژگی های شبکه
    • حالت سازگاری بهبود یافته برای اینترنت اکسپلورر 11 (IE11)، که اکنون به طور پیش فرض برای پردازش اسناد HTML استفاده می شود.
    • کتابخانه mshtml حالت جاوا اسکریپت ES6 (ECMAScript 2015) را پیاده سازی می کند که از ویژگی هایی مانند let express و شی Map پشتیبانی می کند.
    • نصب بسته‌های MSI با اضافه‌شده به موتور Gecko در فهرست کار Wine اکنون در صورت لزوم و نه در طول به‌روزرسانی Wine انجام می‌شود.
    • پشتیبانی از پروتکل DTLS اضافه شده است.
    • سرویس NSI (Network Store Interface) پیاده سازی شده است و اطلاعات مربوط به مسیریابی و رابط های شبکه را در رایانه به سایر سرویس ها ذخیره و انتقال می دهد.
    • کنترل کننده های WinSock API مانند setsockopt و getsockopt به NTDLL و درایور afd.sys منتقل شده اند تا با معماری ویندوز مطابقت داشته باشند.
    • فایل های پایگاه داده شبکه خود Wine، مانند /etc/protocols و /etc/networks، اکنون به جای دسترسی به پایگاه های داده یونیکس مشابه، در فهرست کاری Wine نصب شده اند.
  • پلتفرم های جایگزین
    • اضافه شدن پشتیبانی از تجهیزات اپل مبتنی بر تراشه های M1 ARM (Apple Silicon).
    • پشتیبانی از ویژگی‌های BCrypt و Secur32 در macOS اکنون به نصب کتابخانه GnuTLS نیاز دارد.
    • فایل های اجرایی 32 بیتی برای پلتفرم های ARM اکنون در حالت Thumb-2 مشابه ویندوز ساخته شده اند. برای بارگذاری چنین فایل هایی از پیش بارگذاری استفاده می شود.
    • برای پلتفرم‌های 32 بیتی ARM، پشتیبانی از باز کردن استثناها اجرا شده است.
    • برای FreeBSD، تعداد درخواست‌های پشتیبانی شده برای اطلاعات سیستم سطح پایین، مانند وضعیت حافظه و سطح شارژ باتری، افزایش یافته است.
  • برنامه های داخلی و ابزارهای توسعه
    • ابزار reg.exe پشتیبانی از نماهای رجیستری 32 و 64 بیتی را اضافه کرده است. اضافه شدن پشتیبانی برای کپی کردن کلیدهای رجیستری.
    • ابزار WineDump پشتیبانی از حذف ابرداده های ویندوز و نمایش اطلاعات دقیق در مورد ورودی های CodeView را اضافه کرده است.
    • Wine Debugger (winedbg) امکان اشکال زدایی فرآیندهای 32 بیتی را از یک دیباگر 64 بیتی فراهم می کند.
    • قابلیت بارگذاری کتابخانه‌های ساخته شده در فایل‌های PE به کامپایلر IDL (widl) اضافه شده است، از ویژگی‌ها و ساختارهای خاص WinRT پشتیبانی می‌شود و جستجوی کتابخانه‌ای مخصوص پلتفرم پیاده‌سازی شده است.
  • سیستم مونتاژ
    • در دایرکتوری‌های خاص معماری، کتابخانه‌ها اکنون با نام‌هایی ذخیره می‌شوند که معماری و نوع اجرایی را منعکس می‌کنند، مانند «i386-windows» برای فرمت PE و «x86_64-unix» برای کتابخانه‌های یونیکس، که امکان پشتیبانی از معماری‌های مختلف در یک Wine را فراهم می‌کند. نصب و ارائه کامپایل متقابل Winelib.
    • برای تنظیم گزینه ای در هدر فایل های PE که انتقال به استفاده از DLL های بومی را کنترل می کند، پرچم "--prefer-native option" به winebuild اضافه شده است (پردازش DLL_WINE_PREATTACH در DllMain متوقف شده است).
    • پشتیبانی از نسخه 4 فرمت داده اشکال زدایی Dwarf اضافه شده است که اکنون به طور پیش فرض هنگام ساخت کتابخانه های Wine استفاده می شود.
    • گزینه ساخت «-enable-build-id» برای ذخیره شناسه های ساخت منحصر به فرد در فایل های اجرایی اضافه شد.
    • پشتیبانی برای استفاده از کامپایلر Clang در حالت سازگاری MSVC اضافه شده است.
  • متفرقه
    • نام دایرکتوری های معمولی در پوسته کاربر (Windows Shell) به طرحی که با ویندوز ویستا شروع می شود، داده می شود. به جای «اسناد من»، یک فهرست «اسناد» اکنون ایجاد می‌شود و بیشتر داده‌ها در فهرست «AppData» ذخیره می‌شوند.
    • پشتیبانی از مشخصات OpenCL 1.2 به لایه کتابخانه OpenCL اضافه شده است.
    • درایور WinSpool پشتیبانی از اندازه های مختلف صفحه را هنگام چاپ اضافه کرده است.
    • پشتیبانی اولیه برای MSDASQL، ارائه‌دهنده Microsoft OLE DB برای درایورهای ODBC اضافه شد.
    • موتور Wine Mono با پیاده سازی پلتفرم دات نت برای انتشار نسخه 7.0.0 به روز شد.
    • داده های یونیکد به مشخصات یونیکد 14 به روز شده است.
    • درخت منبع شامل کتابخانه های Faudio، GSM، LCMS2، LibJPEG، LibJXR، LibMPG123، LibPng، LibTiff، LibXml2، LibXslt و Zlib است که با فرمت PE کامپایل شده اند و نیازی به نسخه با فرمت یونیکس ندارند. در عین حال، این کتابخانه ها همچنین می توانند از سیستم وارد شوند تا از مجموعه های خارجی به جای گزینه های PE داخلی استفاده کنند.

منبع: opennet.ru

اضافه کردن نظر