Great, nice project! In the time of Electron bloat, it's really refreshing to see bare-metal UEFI stuff.

Looking at the download sizes:

UEFI "native" 114kb

Windows version 1.4mb

VHD version 12.6mb

None of them are huge but it does emphasize how much difference in resource savings is available if your program can run directly on "bare metal" without even an OS at all.

Not sure why the Windows version would be much bigger than the bare metal one. If you use native code, the code size overhead from using native GDI calls to draw the window is almost zero. Didn't check if the Windows version uses some GUI toolkit that inflates the size.

> Not sure why the Windows version would be much bigger than the bare metal one.

That's probably because there's a bug in the linker, which puts uninitialized variables in the data segment instead of bss. This means unlike the bare metal variant, the Windows executable is full of zeros.

This is a well known bug (see https://github.com/msys2/MINGW-packages/issues/18612 for example) which also affects my projects: https://gitlab.com/bztsrc/skandi The Linux CLI version is 216K, the Windows CLI version is 5.4M and the only difference is the lack of bss.

UEFI supports device discovery, TCP/HTTP, transfers to raw disks, filesystems, memory management and a bunch of other facilities. while it lacks a general process model and multitasking, I'm not sure its really correct to call UEFI programs bare metal.