Il progetto WinCore sviluppa uno strato di compatibilità con Win32/WGL, che consente di compilare codice di programmi Windows scritto in C/C++ utilizzando l'API Win32 classica, per l'esecuzione in Linux e macOS. WinCore intercetta i gestori classici Win32 e utilizza backend multipiattaforma per il rendering tramite SDL3 o SDL2. Il codice è scritto in C++ e distribuito con licenza LGPLv3.
Il progetto è il risultato di una rivalutazione della libreria LDL, dello stesso autore, che ha concluso che invece di progettare un nuovo API, sia più logico prendere un'interfaccia procedurale collaudata come l'API Win32 e renderla portabile su diversi sistemi operativi e dispositivi. L'idea è che il codice è scritto secondo le regole di Win32, ma compilato in modo nativo e funzionante su Windows, Linux e macOS.
La libreria è scritta in rigoroso C++98 per la massima portabilità, ma esporta file di intestazione C89 puri, garantendo la compatibilità inversa e consentendo di creare facilmente binding per Rust, Zig, Python e altri linguaggi tramite C FFI. Attualmente sono stati aggiunti 2 backend — SDL2 e SDL3. In futuro si prevede di aggiungere backend per XLib e Wayland.
L'autore non ha l'obiettivo di emulare tutte le funzionalità di Windows e si concentra solo sulle sottosistemi per multimedia e motori. Attualmente sono implementate 5 funzioni in Kernel32.dll (gestione dei moduli, tempo di sistema e ritardi), 25 funzioni in User32.dll (creazione di finestre, cicli di messaggi, posizione del cursore e gestione degli input), 5 funzioni in Gdi32.dll (selezione del formato pixel, output delle bitmap e commutazione dei buffer) e 4 funzioni in Opengl32.dll (creazione, eliminazione e attivazione dei contesti WGL).


Fonte: opennet.ru
