پروژه WinCore یک لایه سازگاری با Win32/WGL ایجاد میکند که امکان کامپایل کد را فراهم میکند. Windowsبرنامههایی که با زبان C/C++ و با استفاده از رابط برنامهنویسی کلاسیک Win32 نوشته شدهاند، برای اجرا در Linux и macOSWinCore کنترلکنندههای کلاسیک Win32 را رهگیری میکند و از backendهای چند پلتفرمی برای رندر کردن از طریق SDL3 یا SDL2 استفاده میکند. کد با زبان C++ نوشته شده و تحت مجوز LGPLv3 توزیع شده است.
این پروژه نتیجهی بازنگری کتابخانهی LDL توسط همان نویسنده بود، که به این نتیجه رسید که به جای طراحی یک API دیگر، منطقیتر است که API رویهای Win32 که در طول زمان آزمایش شده است را در نظر گرفته و آن را در سیستمعاملها و دستگاههای مختلف قابل حمل کنیم. ایده این است که کد طبق قوانین Win32 نوشته شود، اما به صورت بومی کامپایل شده و اجرا شود. Windows, Linux и macOS.
این کتابخانه برای حداکثر قابلیت حمل، با زبان C++98 نوشته شده است، اما فایلهای هدر C89 خالص را نیز صادر میکند که سازگاری با نسخههای قبلی را تضمین میکند و امکان اتصال آسان به Rust، Zig، Python و سایر زبانها را از طریق C FFI فراهم میکند. در حال حاضر دو backend در دسترس است: SDL2 و SDL3. backend برای XLib و Wayland نیز برای آینده برنامهریزی شده است.
نویسنده هدفی برای تقلید از همه احتمالات تعیین نکرده است. Windows و فقط بر زیرسیستمهای چندرسانهای و موتور تمرکز دارد. در حال حاضر، ۵ تابع Kernel32.dll (مدیریت ماژول، زمان سیستم و تأخیر)، ۲۵ تابع User32.dll (ایجاد پنجره، حلقههای پیام، موقعیت مکاننما و مدیریت ورودی)، ۵ تابع Gdi32.dll (انتخاب قالب پیکسل، خروجی بیتمپ و تعویض بافر) و ۴ تابع Opengl32.dll (ایجاد، حذف و فعالسازی زمینههای WGL) پیادهسازی شدهاند.


منبع: opennet.ru
