I. Introduction
Trusted code execution is currently one of the major open challenges for distributed systems. Data is a key asset for many companies and the ability to execute code and process data out of premises is a prerequisite for outsourcing computing tasks, either to large data centres in the cloud or to the edge of the network on thin clients and IoT devices. Trusted execution environments (TEEs) such as Intel SGX [1], ARM TrustZone [2], AMD SME/SEV [3] and RISC-V Keystone [4] gathered much attention lately as they provide hardware support for secure code execution within special hardware constructs that are shielded from the outside world, including the operating system and privileged users. Still, despite the many frameworks and runtime environments that have been developed recently, programming applications for TEEs remains a complex task. Developers must generally use custom tools and APIs, and they are restricted to a few supported programming languages.