Bare-metal programming is generally done using a close-to-hardware language, such as Rust, C++, C, assembly language, or even for small amounts of code or very new processors machine code directly.[2] All the previous issues inevitably mean that bare-metal programs are very rarely portable.