Projekt WinCore rozwija warstwę kompatybilności z Win32/WGL, umożliwiającą kompilację kodu programów Windows napisanych w C/C++ z użyciem klasycznego interfejsu API Win32, do uruchamiania w Linuxie i macOS. WinCore przechwytuje klasyczne obsługi Win32 i wykorzystuje wieloplatformowe backendy do renderowania przez SDL3 lub SDL2. Kod jest napisany w C++ i dystrybuowany na licencji LGPLv3.
Projekt powstał w wyniku przemyślenia biblioteki LDL, tego samego autora, który doszedł do wniosku, że zamiast projektować kolejny interfejs API, logiczniej jest wziąć sprawdzony czasem proceduralny interfejs Win32 API i uczynić go przenośnym na różne systemy operacyjne i urządzenia. Pomysł polega na tym, że kod pisany jest zgodnie z zasadami Win32, ale natywnie kompilowany i działający w Windows, Linux i macOS.
Biblioteka jest napisana w surowym C++98 dla maksymalnej przenośności, ale eksportuje czyste pliki nagłówkowe C89, co gwarantuje zgodność wsteczną i ułatwia tworzenie bindingów do Rust, Zig, Pythona i innych języków za pośrednictwem C FFI. Do tej pory dodano 2 backendy — SDL2 i SDL3. W przyszłości planowane są backendy dla XLib i Wayland.
Autor nie stawia sobie za cel emulacji wszystkich możliwości Windows i skupia się tylko na podsystemach dla multimediów i silników. Obecnie zrealizowano 5 funkcji Kernel32.dll (zarządzanie modułami, czas systemowy i opóźnienia), 25 funkcji User32.dll (tworzenie okien, cykle wiadomości, pozycja kursora i obsługa wejścia), 5 funkcji Gdi32.dll (wybór formatu pikseli, wyjście bitmap i przełączanie buforów) oraz 4 funkcje Opengl32.dll (tworzenie, usuwanie i aktywacja kontekstów WGL).


Źródło: opennet.ru
