پس از یک سال توسعه و 28 نسخه آزمایشی، یک نسخه پایدار از اجرای باز Win32 API - Wine 8.0 که بیش از 8600 تغییر را در خود جای داده بود، ارائه شد. دستاورد کلیدی در نسخه جدید، تکمیل کار بر روی ترجمه ماژول های Wine به قالب است.
Wine عملکرد کامل 5266 (یک سال پیش 5156، دو سال پیش 5049) برنامه برای ویندوز را تأیید کرده است، 4370 برنامه دیگر (یک سال پیش 4312، دو سال پیش 4227) برنامه کاملاً با تنظیمات اضافی و DLL های خارجی کار می کنند. 3888 برنامه (3813 یک سال پیش، 3703 دو سال پیش) دارای مشکلات عملیاتی جزئی هستند که در استفاده از عملکردهای اصلی برنامه ها اختلال ایجاد نمی کند.
نوآوری های کلیدی در Wine 8.0:
- ماژول ها در قالب PE
- پس از چهار سال کار، تبدیل تمامی کتابخانه های DLL برای استفاده از فرمت فایل اجرایی PE (Portable Executable، مورد استفاده در ویندوز) به پایان رسید. استفاده از PE امکان استفاده از دیباگرهای موجود برای ویندوز را فراهم میکند و مشکلات مربوط به پشتیبانی از طرحهای مختلف حفاظت از کپی را که هویت ماژولهای سیستم را روی دیسک و حافظه تأیید میکنند، حل میکند. مشکلات اجرای برنامه های 32 بیتی در هاست های 64 بیتی و برنامه های x86 در سیستم های ARM نیز حل شده است. در میان کارهای باقی مانده که قرار است در نسخه های آزمایشی بعدی Wine 8.x حل شوند، انتقال ماژول ها به رابط تماس سیستم NT به جای برقراری تماس مستقیم بین لایه های PE و Unix وجود دارد.
- یک مدیر تماس سیستمی ویژه پیاده سازی شده است که برای ترجمه تماس ها از PE به کتابخانه های یونیکس به منظور کاهش هزینه های سربار اجرای یک تماس سیستمی کامل NT استفاده می شود. به عنوان مثال، بهینه سازی کاهش عملکرد را در هنگام استفاده از کتابخانه های OpenGL و Vulkan ممکن کرد.
- برنامههای Winelib توانایی استفاده از مجموعههای ترکیبی Windows/Unix کتابخانههای ELF (.dll.so) را حفظ میکنند، اما چنین برنامههایی بدون کتابخانههای 32 بیتی از عملکرد موجود از طریق واسط تماس سیستم NT، مانند WoW64 پشتیبانی نمیکنند.
- WoW64
- لایههای WoW64 (ویندوز روی ویندوز 64 بیتی) برای همه کتابخانههای یونیکس ارائه شده است که به ماژولهای 32 بیتی با فرمت PE اجازه میدهد به کتابخانههای 64 بیتی یونیکس دسترسی داشته باشند، که پس از خلاص شدن از تماسهای مستقیم PE/Unix، آن را ایجاد میکند. امکان اجرای برنامه های ویندوز 32 بیتی بدون نصب کتابخانه های یونیکس 32 بیتی.
- در غیاب Wine loader 32 بیتی، برنامه های 32 بیتی می توانند در حالت آزمایشی Windows-مانند جدید WoW64 اجرا شوند که در آن کدهای 32 بیتی در یک فرآیند 64 بیتی اجرا می شوند. این حالت هنگام ساخت Wine با گزینه "-enable-archs" فعال می شود.
- زیرسیستم گرافیک
- پیکربندی پیشفرض از تم روشن («نور») استفاده میکند. با استفاده از ابزار WineCfg می توانید موضوع را تغییر دهید.
- درایورهای گرافیک (winex11.drv، winemac.drv، wineandroid.drv) برای اجرای فراخوانی های سیستم در سطح یونیکس و دسترسی به درایورها از طریق کتابخانه Win32u تبدیل می شوند.
- معماری Print Processor پیاده سازی شده است که برای حذف تماس های مستقیم بین سطوح PE و Unix در درایور چاپگر استفاده می شود.
- Direct2D API اکنون از افکت ها پشتیبانی می کند.
- Direct2D API قابلیت ضبط و پخش لیست دستورات را اضافه کرده است.
- درایور برای API گرافیکی Vulkan پشتیبانی از مشخصات Vulkan 1.3.237 را اضافه کرده است (Vulkan 7 در Wine 1.2 پشتیبانی می شد).
- پیکربندی پیشفرض از تم روشن («نور») استفاده میکند. با استفاده از ابزار WineCfg می توانید موضوع را تغییر دهید.
- Direct3D
- یک کامپایلر سایه زن جدید برای HLSL (زبان سایه زن سطح بالا) اضافه شده است که بر اساس کتابخانه vkd3d-shader پیاده سازی شده است. همچنین بر اساس vkd3d-shader، یک disassembler HLSL و یک پیش پردازنده HLSL تهیه شده است.
- رابط Thread Pump معرفی شده در D3DX 10 پیاده سازی شده است.
- جلوه های Direct3D 10 از بسیاری از عبارات جدید پشتیبانی می کنند.
- کتابخانه پشتیبانی برای D3DX 9 اکنون از طرح ریزی بافت Cubemap پشتیبانی می کند.
- صدا و تصویر
- بر اساس چارچوب GStreamer، پشتیبانی از فیلترها برای رمزگشایی صدا در فرمت MPEG-1 اجرا شده است.
- یک فیلتر برای خواندن جریان صوتی و تصویری در فرمت ASF (فرمت سیستم های پیشرفته) اضافه شده است.
- لایه میانی کتابخانه OpenAL32.dll حذف شده است، به جای آن از کتابخانه بومی ویندوز OpenAL32.dll که با برنامه ها ارائه شده است، اکنون استفاده می شود.
- Media Foundation Player تشخیص نوع محتوا را بهبود بخشیده است.
- قابلیت کنترل نرخ انتقال داده (Rate control) پیاده سازی شده است.
- پشتیبانی بهبود یافته از میکسر و ارائه دهنده پیش فرض در رندر ویدیوی پیشرفته (EVR).
- اجرای اولیه Writer Encoding API اضافه شد.
- پشتیبانی از لودر توپولوژی بهبود یافته
- دستگاه های ورودی
- پشتیبانی قابل توجهی برای اتصال گرم کنترلرها بهبود یافته است.
- اجرای بهبود یافته کد برای تعیین فرمان بازی، که بر اساس کتابخانه SDL ساخته شده است، پیشنهاد شده است.
- پشتیبانی بهبود یافته از اثر بازخورد نیرو هنگام استفاده از چرخ های بازی.
- قابلیت کنترل موتورهای ارتعاشی چپ و راست با استفاده از مشخصات HID Haptic پیاده سازی شده است.
- طراحی پانل کنترل جوی استیک را تغییر داد.
- پشتیبانی از کنترلرهای سونی DualShock و DualSense از طریق استفاده از backend hidraw ارائه می شود.
- ماژول WinRT Windows.Gaming.Input با پیاده سازی یک رابط نرم افزاری برای دسترسی به گیم پد، جوی استیک و چرخ های بازی پیشنهاد شده است. برای API جدید، از جمله، پشتیبانی از اعلان اتصال داغ دستگاهها، جلوههای لمسی و لرزشی اجرا شده است.
- بین المللی شدن
- ایجاد پایگاه داده محلی صحیح در قالب locale.nls از مخزن Unicode CLDR (مخزن داده محلی مشترک Unicode) تضمین شده است.
- توابع مقایسه رشته های یونیکد برای استفاده از پایگاه داده و الگوریتم Windows Sortkey به جای الگوریتم Unicode Collation منتقل شده اند و رفتار را به ویندوز نزدیک می کند.
- اکثر ویژگیها پشتیبانی از محدوده کدهای یونیکد بالایی (هواپیما) را اضافه کردهاند.
- امکان استفاده از UTF-8 به عنوان رمزگذاری ANSI وجود دارد.
- جداول کاراکترها به مشخصات Unicode 15.0.0 به روز شده اند.
- متن و فونت
- پیوند فونت برای اکثر فونتهای سیستم فعال شده است، و مشکل از دست رفتن حروف در سیستمهایی با زبان چینی، کرهای و ژاپنی را حل میکند.
- بازنویسی فونت بازگشتی در DirectWrite.
- هسته (رابط کرنل ویندوز)
- پایگاه داده ApiSetSchema پیاده سازی شده است که جایگزین ماژول های api-ms-* و کاهش مصرف فضای دیسک و آدرس شد.
- ویژگیهای فایل DOS با استفاده از ویژگیهای توسعهیافته FS در قالب سازگار با Samba روی دیسک ذخیره میشوند.
- ویژگی های شبکه
- پشتیبانی از OCSP (پروتکل وضعیت گواهی آنلاین) که برای بررسی گواهیهای باطل شده استفاده میشود.
- دامنه ویژگی های EcmaScript موجود در حالت انطباق با استانداردهای جاوا اسکریپت گسترش یافته است.
- یک جمع کننده زباله برای جاوا اسکریپت پیاده سازی کرد.
- بسته موتور Gecko شامل ویژگی هایی برای افراد دارای معلولیت است.
- MSHTML پشتیبانی از Web Storage API، شیء Performance و اشیاء اضافی را برای مدیریت رویداد اضافه می کند.
- برنامه های کاربردی تعبیه شده
- همه برنامه های داخلی برای استفاده از کتابخانه Common Controls 6 با پشتیبانی از تم های طراحی و رندر با در نظر گرفتن صفحه نمایش هایی با تراکم پیکسلی بالا تبدیل شده اند.
- قابلیت های پیشرفته برای رفع اشکال رشته ها در Wine Debugger (winedbg).
- ابزارهای رجیستری (REGEDIT و REG) اکنون از نوع QWORD پشتیبانی می کنند.
- Notepad یک نوار وضعیت با اطلاعاتی در مورد موقعیت مکان نما و عملکرد Goto Line برای پرش به یک شماره خط مشخص اضافه کرده است.
- کنسول داخلی خروجی داده را در صفحه کد OEM ارائه می دهد.
- دستور 'query' به ابزار sc.exe (کنترل سرویس) اضافه شده است.
- سیستم مونتاژ
- توانایی ساخت فایل های اجرایی در قالب PE برای چندین معماری ارائه شده است (به عنوان مثال، '—enable-archs=i386,x86_64').
- در تمام پلتفرمهای دارای نوع طولانی ۳۲ بیتی، انواع دادههایی که بهعنوان طولانی در ویندوز تعریف شدهاند، اکنون بهجای «int» در Wine، بهعنوان «long» تعریف میشوند. در Winelib، این رفتار را می توان از طریق تعریف WINE_NO_LONG_TYPES غیرفعال کرد.
- قابلیت تولید کتابخانه ها بدون استفاده از dlltool را اضافه کرد (با تنظیم گزینه «—without-dlltool» در winebuild فعال شد).
- برای بهبود کارایی بارگذاری و کاهش اندازه کتابخانههای بدون کد و فقط منبع، winegcc گزینه «فقط دادهها» را پیادهسازی میکند.
- متفرقه
- نسخههای بهروزرسانی شده کتابخانههای داخلی Faudio 22.11، LCMS2 2.14، LibJPEG 9e، LibMPG123 1.31.1، LibPng 1.6.39، LibTiff 4.4.0، LibXml2 2.10.3، LibXml1.1.37 1.2.13، LibXmlXNUMX، LibXNUMX.
- موتور Wine Mono با پیاده سازی پلتفرم دات نت برای انتشار نسخه 7.4 به روز شد.
- پشتیبانی از رمزگذاری بر اساس الگوریتم RSA و امضاهای دیجیتال RSA-PSS اجرا شده است.
- نسخه اولیه UI Automation API اضافه شد.
- درخت منبع شامل کتابخانه های LDAP و vkd3d است که با فرمت PE کامپایل شده اند و نیازی به تامین مجموعه های یونیکس این کتابخانه ها را از بین می برند.
- کتابخانه OpenAL متوقف شده است.
منبع: opennet.ru