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

پس از یک سال توسعه و 28 نسخه آزمایشی ارایه شده انتشار پایدار اجرای باز Win32 API - شراب 5.0، که شامل بیش از 7400 تغییر بود. دستاوردهای کلیدی نسخه جدید شامل تحویل ماژول‌های Wine داخلی با فرمت PE، پشتیبانی از تنظیمات چند مانیتور، اجرای جدید API صوتی XAudio2 و پشتیبانی از API گرافیکی Vulkan 1.1 است.

در شراب تایید شده عملکرد کامل 4869 (یک سال پیش 4737) برنامه برای ویندوز، 4136 برنامه دیگر (یک سال پیش 4045) با تنظیمات اضافی و DLL های خارجی کاملاً کار می کنند. 3635 برنامه مشکلات عملکرد جزئی دارند که در استفاده از توابع اصلی برنامه تداخلی ایجاد نمی کند.

کلید نوآوری ها شراب 5.0:

  • ماژول ها در قالب PE
    • با کامپایلر MinGW، اکثر ماژول های Wine اکنون به جای ELF در قالب فایل اجرایی PE (قابل اجرا قابل حمل، مورد استفاده در ویندوز) ساخته می شوند. استفاده از PE مشکلات مربوط به پشتیبانی از طرح های مختلف حفاظت از کپی را حل می کند که هویت ماژول های سیستم را روی دیسک و حافظه تأیید می کند.
    • فایل‌های اجرایی PE به جای استفاده از فایل‌های DLL ساختگی، اکنون در فهرست ~/.wine ($WINEPREFIX) کپی می‌شوند، و این موارد را شبیه‌تر به نصب‌های واقعی ویندوز می‌کند، به قیمت مصرف فضای دیسک اضافی.
    • ماژول های تبدیل شده به فرمت PE می توانند از استاندارد استفاده کنند wchar توابع و ثابت های C با یونیکد (به عنوان مثال، L"abc")؛
    • زمان اجرا Wine C پشتیبانی از پیوند با باینری های ساخته شده در MinGW را اضافه کرده است که به طور پیش فرض به جای زمان اجرا MinGW هنگام ساخت DLL استفاده می شود.
  • زیرسیستم گرافیک
    • اضافه شدن پشتیبانی برای کار با چندین مانیتور و آداپتورهای گرافیکی، از جمله امکان تغییر پویا تنظیمات.
    • درایور API گرافیکی Vulkan برای مطابقت با مشخصات Vulkan 1.1.126 به روز شده است.
    • کتابخانه WindowsCodecs امکان تبدیل فرمت‌های شطرنجی اضافی، از جمله فرمت‌هایی با پالت نمایه‌شده را فراهم می‌کند.
  • Direct3D
    • هنگام اجرای برنامه های Direct3D تمام صفحه، تماس محافظ صفحه مسدود می شود.
    • DXGI (DirectX Graphics Infrastructure) پشتیبانی برای اطلاع رسانی به یک برنامه زمانی که پنجره آن به حداقل می رسد، اضافه کرده است، که به برنامه اجازه می دهد تا عملکرد عملیاتی که منبع فشرده را در هنگام به حداقل رساندن پنجره کاهش دهد.
    • برای برنامه هایی که از DXGI استفاده می کنند، اکنون می توان با استفاده از ترکیب Alt+Enter بین حالت تمام صفحه و حالت پنجره ای جابجا شد.
    • قابلیت های اجرای Direct3D 12 گسترش یافته است، به عنوان مثال، اکنون پشتیبانی برای جابجایی بین حالت های تمام صفحه و حالت پنجره، تغییر حالت های صفحه نمایش، مقیاس بندی خروجی و مدیریت بازه جایگزینی بافر رندر (فاصله تعویض) وجود دارد.
    • مدیریت بهتر موقعیت‌های مرزی مختلف، مانند استفاده از مقادیر ورودی خارج از محدوده برای آزمایش‌های شفافیت و عمق، رندرینگ با بافت‌ها و بافرهای منعکس شده، و استفاده از اشیاء نادرست DirectDraw کلیپر، ایجاد دستگاه های Direct3 برای پنجره های نادرست، با استفاده از مناطق قابل مشاهده که حداقل مقادیر پارامتر آنها برابر با حداکثر است و غیره.
    • Direct3D 8 و 9 ردیابی دقیق تری را ارائه می دهند.کثیف» مناطقی از بافت های بارگذاری شده؛
    • اندازه فضای آدرس مورد نیاز هنگام بارگیری بافت های سه بعدی فشرده شده با استفاده از روش S3TC کاهش یافته است (به جای بارگیری کامل، بافت ها به صورت تکه بارگذاری می شوند).
    • رابط پیاده سازی شده است ID3D11 چند رشته ای برای محافظت از بخش های حیاتی در برنامه های چند رشته ای؛
    • بهبودها و اصلاحات مختلف مربوط به محاسبات روشنایی برای برنامه های قدیمی DirectDraw انجام شده است.
    • فراخوانی های اضافی را برای به دست آوردن اطلاعات در مورد سایه زن ها در API اجرا کرد Shader Reflection;
    • wined3d اکنون پشتیبانی می کند تاول زدن مبتنی بر CPU برای پردازش منابع فشرده.
    • پایگاه داده کارت های گرافیک شناسایی شده در Direct3D گسترش یافته است.
    • کلیدهای رجیستری جدید اضافه شد HKEY_CURRENT_USER\Software\Wine\Direct3D: "shader_backend" (پشتیبان برای کار با سایه بان: "glsl" برای GLSL، "arb" برای راس/قطعه ARB و "none" برای غیرفعال کردن پشتیبانی سایه بان)، "strict_shader_math" ( 0x1 - فعال کردن، 0x0 - غیرفعال کردن تبدیل سایه زن Direct3D). کلید "UseGLSL" منسوخ شده است (باید از "shader_backend" استفاده شود).
  • D3DX
    • پشتیبانی از مکانیزم فشرده سازی بافت سه بعدی S3TC (S3 Texture Compression) اجرا شده است.
    • اضافه شدن اجرای صحیح عملیات مانند پر کردن بافت و سطوح غیرقابل نقشه برداری.
    • بهبودها و اصلاحات مختلفی در چارچوب ایجاد شده است جلوههای بصری;
  • هسته (رابط کرنل ویندوز)
    • اکثر توابع استفاده شده در Kernel32 به این قسمت منتقل شده اند
      KernelBase، به دنبال تغییرات در معماری ویندوز؛

    • امکان ترکیب DLL های 32 و 64 بیتی در فهرست های مورد استفاده برای بارگذاری. اطمینان حاصل می کند که کتابخانه هایی که با عمق بیت فعلی مطابقت ندارند نادیده گرفته می شوند (32/64) در صورتی که بیشتر در طول مسیر بتوان کتابخانه ای را یافت که برای عمق بیت فعلی مناسب باشد.
    • برای درایورهای دستگاه، شبیه سازی اشیاء هسته بهبود یافته است.
    • اشیاء همگام سازی پیاده سازی شده که در سطح هسته کار می کنند، مانند قفل های چرخشی، mutexes های سریع و متغیرهای متصل به یک منبع.
    • اطمینان حاصل می کند که برنامه ها به درستی از وضعیت باتری مطلع شده اند.
  • رابط کاربری و ادغام دسکتاپ
    • پنجره های کوچک شده اکنون با استفاده از نوار عنوان به جای نماد سبک ویندوز 3.1 نمایش داده می شوند.
    • اضافه شدن سبک های دکمه جدید SplitButton (دکمه با لیست کشویی از اقدامات) و پیوندهای فرمان (پیوندها در کادرهای محاوره ای که برای انتقال به مرحله بعدی استفاده می شوند)؛
    • پیوندهای نمادین برای پوشه های «دانلودها» و «قالب ها» ایجاد شده است که به دایرکتوری های مربوطه در سیستم های یونیکس اشاره می کند.
  • دستگاه های ورودی
    • هنگام راه اندازی، درایورهای دستگاه Plug & Play لازم نصب و بارگذاری می شوند.
    • پشتیبانی بهبود یافته از کنترلرهای بازی، از جمله مینی جوی استیک (کلاه سوئیچ)، فرمان، پدال گاز و ترمز.
    • پشتیبانی از API جوی استیک قدیمی لینوکس که در هسته های لینوکس قبل از نسخه 2.2 استفاده می شد، متوقف شده است.
  • دات نت
    • موتور Mono به نسخه 4.9.4 به روز شده است و اکنون شامل بخش هایی از چارچوب Windows Presentation Foundation (WPF) است.
    • قابلیت نصب افزونه‌ها با Mono و Gecko را در یک فهرست مشترک، قرار دادن فایل‌ها در سلسله مراتب /usr/share/wine به جای کپی کردن آنها در پیشوندهای جدید اضافه کرد.
  • ویژگی های شبکه
    • موتور مرورگر Wine Gecko که در کتابخانه MSHTML استفاده می‌شود، برای انتشار نسخه 2.47.1 به‌روزرسانی شده است. پشتیبانی از API های جدید HTML پیاده سازی شده است.
    • MSHTML اکنون از عناصر SVG پشتیبانی می کند.
    • بسیاری از توابع جدید VBScript (به عنوان مثال، کنترل کننده خطا و استثنا، ساعت، روز، ماه، رشته، LBound، RegExp.Replace، РScriptTypeInfo_* و ScriptTypeComp_Bind* و غیره) اضافه شده است.
    • حفظ وضعیت کد در VBScript و JScript (تداوم اسکریپت) ارائه شده است.
    • اجرای اولیه سرویس HTTP (WinHTTP) و API مرتبط (HTTPAPI) را برای برنامه های کاربردی سرویس گیرنده و سرور که درخواست ها را با استفاده از پروتکل HTTP ارسال و دریافت می کنند، اضافه کرد.
    • قابلیت به دست آوردن تنظیمات پروکسی HTTP از طریق DHCP را پیاده سازی کرد.
    • اضافه شدن پشتیبانی برای تغییر مسیر درخواست های احراز هویت از طریق سرویس Microsoft Passport.
  • رمزنگاری
    • پشتیبانی از کلیدهای رمزنگاری منحنی بیضوی (ECC) هنگام استفاده از GnuTLS.
    • اضافه شدن قابلیت وارد کردن کلیدها و گواهینامه ها از فایل ها با فرمت PFX.
    • پشتیبانی اضافه شده برای طرح تولید کلید بر اساس رمز عبور PBKDF2.
  • متن و فونت
    • پیاده سازی DirectWrite API پشتیبانی از ویژگی های OpenType مربوط به را اضافه کرده است موقعیت یابی گلیف، که به طور پیش فرض برای سبک لاتین فعال هستند، از جمله kerning.
    • بهبود امنیت برای پردازش داده های فونت با بررسی صحت جداول داده های مختلف قبل از استفاده از آنها.
    • رابط های DirectWrite با جدیدترین SDK هماهنگ شده اند.
  • صدا و تصویر
    • اجرای جدیدی از API صدا پیشنهاد شده است XAudio2، بر اساس پروژه ساخته شده است فاودیو. استفاده از FAudio در Wine به شما این امکان را می دهد که به کیفیت صدای بالاتری در بازی ها برسید و از ویژگی هایی مانند میکس صدا و جلوه های صوتی پیشرفته استفاده کنید.
    • تعداد زیادی تماس جدید به اجرای چارچوب Media Foundation اضافه شده است، از جمله پشتیبانی از صف‌های ناهمزمان داخلی و سفارشی، Source Reader API، Media Session و غیره.
    • فیلتر ضبط ویدیو به جای v4l2 API به استفاده از v4l1 API تغییر یافته است که دامنه دوربین های پشتیبانی شده را افزایش داده است.
    • رمزگشاهای داخلی AVI، MPEG-I و WAVE حذف شده اند، به جای آن ها اکنون از سیستم GStreamer یا QuickTime استفاده می شود.
    • یک زیر مجموعه از API های پیکربندی VMR7 اضافه شد.
    • اضافه شدن پشتیبانی برای تنظیم صدای کانال های جداگانه به درایورهای صدا.
  • بین المللی شدن
    • جداول یونیکد به نسخه 12.1.0 به روز شد.
    • پشتیبانی پیاده سازی شده برای نرمال سازی یونیکد.
    • نصب خودکار منطقه جغرافیایی (HKEY_CURRENT_USER\Control Panel\International\Geo) بر اساس منطقه فعلی ارائه می شود.
  • RPC/COM
    • پشتیبانی از ساختارها و آرایه های پیچیده به typelib اضافه شده است.
    • اضافه شدن اجرای اولیه کتابخانه زمان اجرا ویندوز اسکریپت.
    • اضافه شدن اجرای اولیه کتابخانه ADO (Microsoft ActiveX Data Objects).
  • نصب کننده ها
    • پشتیبانی از تحویل پچ ها (Patch Files) برای نصب کننده MSI پیاده سازی شده است.
    • ابزار WUSA (Windows Update Standalone Installer) اکنون توانایی نصب به‌روزرسانی‌ها را در قالب MSU دارد.
  • پلتفرم ARM
    • برای معماری ARM64، پشتیبانی از باز کردن پشته به ntdll اضافه شده است. پشتیبانی اضافه شده برای اتصال کتابخانه های خارجی libunwind.
    • برای معماری ARM64، پشتیبانی از پروکسی های بدون درز برای رابط های شی اجرا شده است.
  • ابزار توسعه / Winelib
    • قابلیت استفاده از دیباگر ویژوال استودیو برای اشکال زدایی از راه دور برنامه های در حال اجرا در Wine اضافه شده است.
    • کتابخانه DBGENG (موتور اشکال زدایی) تا حدی پیاده سازی شده است.
    • باینری های کامپایل شده برای ویندوز دیگر به libwine وابسته نیستند و به آنها اجازه می دهد بدون وابستگی اضافی روی ویندوز اجرا شوند.
    • گزینه «--sysroot» به Resource Compiler و IDL Compiler برای تعیین مسیر فایل‌های هدر اضافه شد.
    • گزینه‌های «—target»، «—wine-objdir»، «—wine-objdir» به winegcc اضافه شد
      «—winebuild» و «-fuse-ld» که تنظیم محیط را برای کامپایل متقابل ساده می‌کنند.

  • برنامه های کاربردی تعبیه شده
    • یک ابزار CHCP برای پیکربندی رمزگذاری کنسول پیاده سازی کرد.
    • ابزار MSIDB برای دستکاری پایگاه های داده در قالب MSI پیاده سازی شده است.
  • بهینه سازی عملکرد
    • توابع مختلف زمان‌بندی برای استفاده از عملکردهای تایمر سیستم با کارایی بالا مهاجرت کرده‌اند که باعث کاهش سربار در حلقه رندر بسیاری از بازی‌ها می‌شود.
    • اضافه شدن قابلیت استفاده از Ext4 در FS رژیم کار بدون حساسیت به حروف کوچک.
    • عملکرد پردازش تعداد زیادی از عناصر در گفتگوهای نمایش لیست که در حالت LBS_NODATA کار می کنند بهینه شده است.
    • یک پیاده سازی سریعتر از قفل های SRW (Slim Reader/Writer) برای لینوکس، ترجمه شده به Futex اضافه شده است.
  • وابستگی های خارجی
    • برای مونتاژ ماژول ها در قالب PE، از کامپایلر متقابل MinGW-w64 استفاده می شود.
    • پیاده سازی XAudio2 به کتابخانه FAudio نیاز دارد.
    • برای ردیابی تغییرات فایل در سیستم های BSD
      کتابخانه Inotify استفاده می شود.

    • برای رسیدگی به استثناها در پلتفرم ARM64، کتابخانه Unwind مورد نیاز است.
    • به جای Video4Linux1، اکنون به کتابخانه Video4Linux2 نیاز است.

منبع: opennet.ru

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