When we have a software platform layer, that frees us from API details
of the operating system … do we still need an operating system?
Well, not necessarily.
Most developement frameworks are bound to general purpose operating system
like Windows or Linux.
At least they are bound to the C standard library.
But we have learned from WinCE, Android or FreeRTOS, that even operating system APIs are missing on some variants of platforms.
Instead of declaring requirements what is needed, the GATE framework implements what is missing on a target platform. If it detects a missing API it fills the gap with an own implementation, a workaround or another kind of place holder.
This removes hard bindings to APIs and allows execution of programs with a reduced feature set, where other frameworks just refuse to compile or execute.
UEFI, the modern boot specification which replaced the classic PC BIOS, is the latest native platform, GATE framework is running on.
NT / CE) POS(POSIX
Linux / BSD) PSL[[GATE Platform
Support Layer]] GTK[[GTK UI]] CORE([Core-lib]) IO([IO-lib]) NET([Net-lib]) ENC([Encode-lib]) SYS([Sys-lib]) GRAPH([Graphics-lib]) UI([UI-library]) CMD[GATE Console
GateFrames] APPS[GATE Apps
vTextEdit, vPix, vBinCopy
Gate Games] UEFI--GNUEFI---PSL WIN --WinAPI--- PSL POS --POSIX--- PSL POS --- GTK PSL --- CORE PSL --- IO PSL --- NET PSL --- ENC PSL --- SYS PSL --- GRAPH WIN --WinAPI--- UI GTK --- UI CORE --> CMD IO --> CMD NET --> CMD ENC --> CMD SYS --> CMD GRAPH --> CMD CORE --> APPS IO --> APPS NET --> APPS ENC --> APPS SYS --> APPS GRAPH --> APPS UI --> APPS
All non-GUI-based C programs can be compiled to run on the UEFI platform.
Unfortunately C++ has still some runtime library requirements that currently cannot be replaced.
Running GATE projects within the UEFI boot environment was not a planned strategy. But it’s amazing to realize that this is just possible.