پس از یک سال توسعه و 26 نسخه آزمایشی، یک نسخه پایدار از اجرای باز Win32 API ارائه شد - Wine 9.0 که بیش از 7000 تغییر را در خود جای داده بود. از دستاوردهای کلیدی نسخه جدید می توان به پیاده سازی معماری WoW64 برای اجرای برنامه های 32 بیتی در محیط 64 بیتی، ادغام درایورها برای پشتیبانی از Wayland، پشتیبانی از معماری ARM64، پیاده سازی DirectMusic API و پشتیبانی از کارت های هوشمند اشاره کرد.
تأیید شده است که برنامههای ۵۳۳۶ (۵۲۶۶ یک سال پیش، ۵۱۵۶ دو سال پیش، ۵۰۴۹ سه سال پیش) به درستی در Wine کار میکنند. Windows۴۳۹۷ برنامه دیگر (۴۳۷۰ برنامه در سال پیش، ۴۳۱۲ برنامه در دو سال پیش، ۴۲۲۷ برنامه در سه سال پیش) با تنظیمات اضافی و DLL های خارجی به خوبی کار میکنند. ۳۹۴۳ برنامه (۳۸۸۸ برنامه در یک سال پیش، ۳۸۱۳ برنامه در دو سال پیش، ۳۷۰۳ برنامه در سه سال پیش) مشکلات جزئی دارند که با عملکرد اساسی برنامهها تداخلی ایجاد نمیکند.
نوآوری های کلیدی در Wine 9.0:
- درایور winewayland.drv اضافه شده است که به Wine اجازه میدهد بدون استفاده از اجزای XWayland یا X11 در محیطهای مبتنی بر Wayland استفاده شود. این توسعه با هدف ارائه یک محیط Wayland خالص با پشتیبانی از راهاندازی انجام شده است. Windows- برنامههایی که نیازی به نصب بستههای مرتبط با X11 ندارند، که با حذف لایههای غیرضروری، عملکرد و پاسخگویی بالاتری را در بازیها فراهم میکند. استفاده از یک محیط Wayland خالص برای Wine همچنین مشکلات امنیتی ذاتی X11 را از بین میبرد (برای مثال، بازیهای X11 غیرقابل اعتماد میتوانند از برنامههای دیگر جاسوسی کنند زیرا پروتکل X11 امکان دسترسی به تمام رویدادهای ورودی و انجام جایگزینی ضربه کلید را فراهم میکند).
درایور بهعنوان آزمایشی و در حال توسعه علامتگذاری شده است، اما، با این وجود، قبلاً از بسیاری از ویژگیها پشتیبانی میکند، مانند مدیریت پنجره، کار با چندین نمایشگر، پشتیبانی از مقیاسبندی خروجی در صفحههای با تراکم پیکسلی بالا (DPI بالا)، کار با مختصات نسبی هنگام ردیابی حرکت ماوس و پشتیبانی از API گرافیکی Vulkan. به طور پیش فرض، درایور فعال نیست و برای فعال کردن آن باید "wayland" را به پارامتر رجیستری "HKCU\Software\Wine\Drivers" اضافه کنید و مطمئن شوید که متغیر محیطی DISPLAY تنظیم نشده باشد: wine reg.exe add HKCU\ \\Software\\Wine\\Drivers /v Graphics /d x11,wayland
- همه ماژولها به جای برقراری تماس مستقیم بین لایههای PE و Unix به رابط تماس سیستم NT تبدیل شدهاند، که نشاندهنده تکمیل سالها کار برای تبدیل همه DLLها برای استفاده از فرمت فایل اجرایی PE (قابل اجرا) است.
- توسعه لایه WoW64 (64 بیتی) ادامه یافت Windows-بر-Windows) که به شما امکان اجرای برنامههای ۳۲ بیتی را میدهد. Windows- برنامههای کاربردی در سیستمهای یونیکس ۶۴ بیتی. تمام ماژولهایی که به کتابخانههای یونیکس دسترسی دارند از مترجمهای فراخوانی سیستم WoW64 (thunks) استفاده میکنند و به ماژولهای ۳۲ بیتی در قالب PE اجازه میدهند تا به کتابخانههای یونیکس ۶۴ بیتی دسترسی داشته باشند.
حالت جدید اجرای WoW64 بهبود یافته است و به کدهای ۳۲ بیتی اجازه میدهد تا در یک فرآیند ۶۴ بیتی اجرا شوند (در حالت قدیمی WoW64، برنامههای ۳۲ بیتی در فرآیندهای ۳۲ بیتی یونیکس اجرا میشدند). پشتیبانی از استفاده از حالت جدید WoW64 در پلتفرم اضافه شده است. macOSاز آنجایی که حالت جدید WoW64 دارای برخی اشکالات جزئی مانند عدم پشتیبانی از 16 بیتی و کاهش عملکرد OpenGL به دلیل عدم پشتیبانی از افزونه ARB_buffer_storage است، هنوز به طور پیشفرض فعال نشده و نیاز به ساخت با گزینه "--enable-archs=i386,x86_64" در اسکریپت پیکربندی دارد.
- قابلیت اجرای فایلهای اجرایی موجود اضافه شد Windows در سیستمهایی با معماری ARM64. اکنون میتوان Wine را برای ARM64EC (سازگار با شبیهسازی ARM64) ABI ساخت و ماژولهای ARM64EC را میتوان بارگذاری کرد. این ماژولها برای سادهسازی انتقال برنامههایی که در ابتدا برای معماری x86_64 نوشته شدهاند به سیستمهای ARM64 با فعال کردن اجرای ماژولهای کد x86_64 در محیط ARM64 با استفاده از یک شبیهساز استفاده میشوند. پشتیبانی از فرمت فایل ARM64X PE اضافه شده است که امکان بارگذاری یک فایل اجرایی واحد را در هر دو فرآیند x64/Arm64EC و ARM64 فراهم میکند. رابطی برای شبیهسازی سیستمهای x86 32 بیتی پیادهسازی شده است، اما کتابخانه شبیهساز هنوز در توزیع اصلی Wine گنجانده نشده است (شبیهساز خارجی FEX میتواند برای اجرای کد x86 در محیط ARM64 استفاده شود).
- زیرسیستم گرافیک
- درایور پستاسکریپت برای پشتیبانی از فایلهای اسپول با فرمت ... دوباره طراحی شده است. Windowsکه دادههای مربوط به کارهای چاپ را ذخیره میکنند. فراخوانیهای مستقیم به درایور از محیط یونیکس مستثنی هستند.
- پشتیبانی از حالت تاریک به تم های WinRT اضافه شده است. تنظیمی به WineCfg اضافه شده است تا طراحی رابط تاریک را فعال کند.
- درایور API گرافیکی Vulkan پشتیبانی از مشخصات Vulkan 1.3.272 را اضافه کرده است (8.0 در Wine 1.3.237 پشتیبانی میشد).
- عملکردهای کتابخانه GdiPlus بهینه شده اند و امکان افزایش عملکرد گرافیکی را فراهم می کنند.
- Direct3D
- تجزیه یک جریان فرمان چند رشته ای به حالت تعلیق در می آید که هیچ دستور رندری در حال پردازش نباشد، که اجازه می دهد مصرف انرژی را تا سطح پردازش تک رشته ای در هنگام اجرای برنامه هایی که کل پهنای باند جریان فرمان را اشغال نمی کنند، کاهش دهد.
- Direct3D 10 شامل پشتیبانی از جلوه های اضافی است.
- با استفاده از API گرافیکی Vulkan، بهینه سازی عملکرد را در کد WineD3D و باطن انجام داد.
- کد رندر مبتنی بر API Vulkan اکنون قابلیتهایی را که دستگاه پشتیبانی میکند بررسی میکند و به برنامه میگوید که چه سطحی از عملکرد Direct3D در دسترس است.
- توابع D3DXFillTextureTX و D3DXFillCubeTextureTX پیاده سازی شده اند.
- پشتیبان سایه زن OpenGL ARB کلاسیک پشتیبانی برای تعریف سایه ها با استفاده از پسوند ARB_fragment_program_shadow اضافه کرده است.
- D3DXLoadMeshHierarchyFromX و توابع مشابه پشتیبانی برای بارگیری داده های کاربر با استفاده از رابط ID3DXLoadUserData اضافه کرده اند.
- صدا و تصویر
- اجرای اولیه DirectMusic API پیشنهاد شده است. اضافه شدن پشتیبانی از مجموعه ها، سازها و نمونه های صدا در قالب SoundFont. پشتیبانی از اثر داپلر اضافه شده است. آزمایشهایی برای تأیید اجرای صحیح هنگام کار با ترتیبدهنده dmime و سینتسایزر MIDI dmsynth اجرا شدهاند.
- کتابخانه FluidSynth برای استفاده در DirectMusic API تعبیه شده است.
- پشتیبانی از بارگذاری فونتهای صدا (SoundFont - فرمتهایی برای سنتز مبتنی بر نمونه که برای پخش فایلهای MIDI استفاده میشوند) در فرمتهای DLS1 و DLS2 و همچنین در فرمت SF2 مورد استفاده در Linux.
- قابلیت پخش محتوای MIDI با استفاده از کتابخانه dmsynth، با استفاده از سینت سایزر نرم افزار FluidSynth و DirectSound API برای خروجی صدا اضافه شده است.
- یک رمزگشا برای ویدیو در قالب کدک ویدیویی Indeo IV50 اضافه شده است.
- نمایش مستقیم
- کامپوننت DMO (DirectX Media Object) با یک رمزگشای فرمت WMV پیادهسازی شده است (Windows ویدئوی رسانهای).
- یک فیلتر ضبط صدا (DirectShow Audio Capture Filter) اضافه شد.
- علاوه بر پخشهای صوتی، MPEG-1 Stream Splitter (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 (مخزن مشترک محلی یونیکد) نسخه 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 زبان ارائه شده است.
- جداول کاراکتر یونیکد به نسخه استاندارد 15.1.0 به روز شده است. پایگاه داده منطقه زمانی به روز شده است.
- هسته (رابطهای هسته) Windows)
- طبق نسخه منتشر شده Windows به طور پیشفرض تعریف شده Windows 10.
- برای فایلهای اجرایی در قالب PE، پشتیبانی از تصادفیسازی فضای آدرس (ASLR) اجرا میشود، اما آدرسهای بارگذاری کد در حافظه هنوز کاملاً تصادفی نشدهاند.
- پشتیبانی از یک پشته با تکه تکه ضعیف (LFH، Low Fragmentation Heap) اجرا شده است که عملکرد عملیات تخصیص حافظه را افزایش داده است.
- پشتیبانی از رزرو حافظه (placeholder) به مکانیسم تخصیص حافظه مجازی اضافه شده است، که به یک برنامه اجازه می دهد منطقه خاصی از حافظه مجازی را برای استفاده در آینده رزرو کند.
- لودرهای 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 را اضافه کرده است.
- بسته Negotiate پیاده سازی شده است و لایه ای برای استفاده از رابط SSPI (رابط ارائه دهنده پشتیبانی امنیتی) برای دسترسی به ارائه دهندگان SSP (ارائه دهنده پشتیبانی امنیتی) فراهم می کند.
- برنامه های کاربردی تعبیه شده
- Wine Debugger (winedbg) از کتابخانه Zydis برای جداسازی دستورالعمل های ماشین X86 استفاده می کند.
- رابط WineCfg برای پشتیبانی از نسخههای قدیمیتر در پلتفرمهای ۶۴ بیتی بهروزرسانی شده است. Windows (قبل از XP)، که به شما امکان میدهد برنامههای قدیمی را با استفاده از حالت WoW64 اجرا کنید.
- اکنون همه برنامه های گرافیکی داخلی اطلاعات خطا را به جای نمایش در کنسول در یک گفتگوی جداگانه نمایش می دهند.
- برنامه systeminfo نمایش اطلاعات از پایگاه داده WMI را فراهم میکند (Windows ابزار دقیق مدیریت).
- برنامه klist برای نمایش بلیط های Kerberos اضافه شد.
- برنامه taskkill توانایی خاتمه اجباری فرآیندهای فرزند را پیاده سازی می کند.
- گزینه "/machine" به ابزار شروع اضافه شد تا معماری مورد استفاده هنگام اجرای فایل های اجرایی ترکیبی که از x86 و ARM پشتیبانی می کنند را انتخاب کند.
- بیشتر قابلیت های برنامه tasklist پیاده سازی شده است.
- یک پیاده سازی اساسی از برنامه findstr اضافه شد.
- ابزارهای توسعه
- ابزار WineDump قابلیت نمایش محتویات فایلهای رجیستری را دارد. Windows (با فرمت REGF)، و همچنین نمایش دادهها برای تمام معماریهای (x86/ARM64) پشتیبانی شده در فایلهای PE ترکیبی.
- کامپایلر IDL پشتیبانی از ویژگی های "composable"، "default_overload"، "deprecated" و "protected" را اضافه کرده است.
- libwine.so را حذف کرد که در Wine 6.0 منسوخ شده بود و مدتهاست دیگر در Wine استفاده نمی شد. برنامههایی با فرمت ELF که در نسخههای قدیمیتر Wine (5.0 و قدیمیتر) با libwine ساخته شدهاند. بنابراین برای اجرا در 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.5X1.1.38 جدید، LibXml1.3 8.1.0XXNUMX به روز رسانی شده اند نسخه ها موتور Wine Mono با پیاده سازی پلتفرم دات نت برای انتشار نسخه XNUMX به روز شد.
- درایور winewayland.drv از کتابخانه مشتری Wayland به عنوان وابستگی های خارجی و همچنین کتابخانه های xkbcommon و xkbregistry استفاده می کند.
- برای پشتیبانی از کارتهای هوشمند، از کتابخانه خارجی PCSClite استفاده میشود (در macOS — پی سی اس سی).
- ساخت فایلهای PE بر روی پلتفرمهای غیرi386 اکنون به یک کامپایلر متقابل با پشتیبانی از دستورالعملهای ".seh" برای رسیدگی به استثناها نیاز دارد.
منبع: opennet.ru
