Проект WinCore развива слой на съвместимост с Win32/WGL, който позволява компилирането на Windows програмен код, написан на C/C++ с използване на класическия Win32 API, за стартиране в Linux и macOS. WinCore прихваща класическите обработвачи на Win32 и използва крос-платформени бекенди за рендеринг чрез SDL3 или SDL2. Кодът е написан на C++ и е разпространен под лицензия LGPLv3.
Проектът е резултат от преосмислянето на библиотеката LDL от същия автор, който стигна до заключението, че вместо проектиране на нов API, е по-логично да се вземе провереното време процедурно интерфейс Win32 API и да се направи преносим за различни ОС и устройства. Идеята е, че кодът се пише по правилата на Win32, но нативно се компилира и работи в Windows, Linux и macOS.
Библиотеката е написана на строг C++98 за максимална преносимост, но експортира чисти заглавни файлове C89, което гарантира обратно съвместимост и позволява лесно правене на биндинги към Rust, Zig, Python и други езици чрез C FFI. Към момента са добавени 2 бекенда - SDL2 и SDL3. В бъдеще се планира добавяне на бекенди за XLib и Wayland.
Авторът няма за цел да емултира всички възможности на Windows и се фокусира само върху подсистемите за мултимедия и игри. В момента са реализирани 5 функции от Kernel32.dll (управление на модули, системно време и забавяния), 25 функции от User32.dll (създаване на прозорци, цикли на съобщения, позиция на курсора и обработка на вход), 5 функции от Gdi32.dll (избор на пикселен формат, извеждане на битмапи и превключване на буфери) и 4 функции от Opengl32.dll (създаване, изтриване и активиране на контексти WGL).


Източник: opennet.ru
