blob: 23a3376dbaeff43b0f57989966d4d458e9680840 [file] [log] [blame] [view]
---
permalink: /trustzone-sdk-docs/ta-development-modes.md
---
# TA Development Modes
## Comparison
### `no-std`
- **Pros**:
- Reuses standard Rust tier-1 toolchain targets (`aarch64-unknown-linux-gnu`,
`arm-unknown-linux-gnueabihf`).
- Significant performance improvements.
- Substantial reduction in binary size.
- **Cons**:
- Limited support for third-party crates. In the no-std mode, Trusted
Applications (TAs) are unable to utilize crates dependent on the standard
library (std).
### `std`
- **Pros**:
- Enables the utilization of more third-party crates, including those
requiring `std`, such as `rustls`, which are essential for functionality.
- **Cons**:
- Manual porting of `std` with infrequent updates. Currently using `std`
version `1.80.0` and `Rust` version `nightly-2024-05-14`, which might not
meet the MSRV requirements of some crates.
## Supported Examples
- **Common**: See
[Overview of OP-TEE Rust Examples](https://teaclave.apache.org/trustzone-sdk-docs/overview-of-optee-rust-examples/).
- **`no-std`**: Excludes `test_serde`, `test_message_passing_interface`,
`test_tls_client`, `test_tls_server`, `test_secure_db_abstraction`.
- **`std`**: Excludes `test_mnist_rs`, `test_build_with_optee_utee_sys`.