You can still port EDK2 to the hardware of your choice. Most people can have a quick play on it on Raspberry Pi >= 3.
Also yes, EDK2 is a faithful implementation of UEFI standard and so if you do target EDK2 it should run on your typical amd64-based computer without issue.
By the way the UEFI platform is actually a partial OS itself! Memory allocation and paging is handled and there are even partial event system support, making it possible to run asynchronous code in Rust-based UEFI firmware. However one caveat is that UEFI itself is split into Runtime services and Boot services and their memory is not shared after the transition. uefi-rs exploited the borrow checker to cleverly mitigate this issue.
Sadly uefi-rs doesn’t have most of the UEFI API wrappers. I tried porting some of it but it’s just too complicated and I don’t really have the time to churn on it.
Also yes, EDK2 is a faithful implementation of UEFI standard and so if you do target EDK2 it should run on your typical amd64-based computer without issue.
By the way the UEFI platform is actually a partial OS itself! Memory allocation and paging is handled and there are even partial event system support, making it possible to run asynchronous code in Rust-based UEFI firmware. However one caveat is that UEFI itself is split into Runtime services and Boot services and their memory is not shared after the transition. uefi-rs exploited the borrow checker to cleverly mitigate this issue.
Sadly uefi-rs doesn’t have most of the UEFI API wrappers. I tried porting some of it but it’s just too complicated and I don’t really have the time to churn on it.