From 3a378f107e898d85ea2e7264b51a4fc34158ae8e Mon Sep 17 00:00:00 2001 From: Max Niederman Date: Fri, 11 Oct 2024 10:29:30 -0700 Subject: [PATCH] detail summary of armv7a-vex-v5's target support --- .../src/platform-support/armv7a-vex-v5.md | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/doc/rustc/src/platform-support/armv7a-vex-v5.md b/src/doc/rustc/src/platform-support/armv7a-vex-v5.md index e20fd539bb55b..20f90583e5e1c 100644 --- a/src/doc/rustc/src/platform-support/armv7a-vex-v5.md +++ b/src/doc/rustc/src/platform-support/armv7a-vex-v5.md @@ -20,12 +20,27 @@ This target is maintained by members of the [vexide](https://github.com/vexide) This target is cross-compiled. Dynamic linking is unsupported. `#![no_std]` crates can be built using `build-std` to build `core` and optionally -`alloc`. Unwinding panics are not yet supported. - -`std` is partially implemented, but many modules (such as `thread`, `process`, `net`, etc...) will return errors. An allocator is provided along with partial support for the `time`, `env` and `io` modules. Filesystem operations over SDCard through `std::fs` are partially supported within the restrictions of the user environment (e.g. directories cannot be created, filesystem objects cannot be removed). +`alloc`. Unwinding panics are not yet supported. `std` is partially implemented, see below. This target generates binaries in the ELF format that may uploaded to the brain with external tools. +## Standard Library Support + +`armv7a-vex-v5` implements as much of the standard library as is possible using only public VEX SDK functions. +This includes: + +- `std::time`, not including `SystemTime` as the SDK does not provide absolute time information. +- `std::io`, including `stdin()` and `stdout()`, but not `stderr()`, as stderr does not exist on this platform. +- `std::fs`, with the exception of directory reading and file deletion, due to public SDK limitations. +- modules which do not need to interact with the OS beyond allocation, + such as `std::collections`, `std::hash`, `std::future`, `std::sync`, etc. + +Notable modules which are not implemented include: + +- `std::process` +- `std::thread` +- `std::net` + ## Building the target Rust does not ship pre-compiled artifacts for this target. You can use the `build-std` feature to build ELF binaries with `std` support.