8. Constraints

8.1. Installation

Identifier: RUSTC_CSTR_0010_INSTALL

Associated requirement ID: RUSTC_AVD_CHECK_INSTALL_001

Before using the Ferrocene toolchain, the user shall ensure that the appropriate tool package has been installed, and installation verified according to the verification procedure described in Installation Procedures.

8.2. Cleaning environment variables

Identifier: RUSTC_CSTR_0020_CLEAN_ENV

Associated requirement ID: RUSTC_AVD_CHECK_CLEAN_ENV_002

Before using the Ferrocene toolchain, the user shall ensure that the toolchain is available on the user PATH variable, and that none of the disallowed environment variables described in Degraded Environment are set.

8.3. Build monitoring

Identifier: RUSTC_CSTR_0030_BUILD_MONITORING

Associated requirement ID: RUSTC_AVD_CHECK_BUILD_SCRIPT_003

The user shall inspect the build logs to verify that all actions have been completed, executed in the correct order, and the correctness of the build, and in particular that the proper versions of the tools have been used with the appropriate options.

8.4. Cleaning the build environment

Identifier: RUSTC_CSTR_0040_CLEAN

Associated requirement ID: RUSTC_AVD_CLEAN_004

Before building the final version of the safety-related software, the user shall ensure that the build environment is clean of former compilation artifacts, as described in Cleaning the build space.

8.5. Treating warnings as errors

Identifier: RUSTC_CSTR_0050_WARNING_ERROR

Associated requirement ID: RUSTC_AVD_WARNING_AS_ERROR_005

The user shall ensure that, for the final build, the option to treat all warnings as errors is activated as described in Warnings and Errors.

8.6. Source modification while building

Identifier: RUSTC_CSTR_0060_PARALLEL

Associated requirement ID: RUSTC_AVD_PARALLEL_BUILD_006

The user shall not perform source modification when the build of the safety-related software is in progress.

8.7. Testing

Identifier: RUSTC_CSTR_0070_TEST

Associated requirement ID: RUSTC_AVD_TEST_007

The integrated testing objectives of ISO-26262:2018 (Part 8 - Clause 11.4.9) must be performed on the final application or libraries, or on any parts built, using build protocols as close as possible to those used for the final build.

8.8. Problem mitigation

Identifier: RUSTC_CSTR_0080_KP

The user shall implement mitigation strategies for known problems documented in the Known Problems manual.

8.9. Tracking new problems

Identifier: RUSTC_CSTR_0090_NEW_KP

The user shall regularly inspect the new known problems reported via the mechanism documented in Change Tracking. In case of a new safety impact, the user shall ensure the appropriate mitigation strategies are put in place.

8.10. Ensuring memory safety

Identifier: RUSTC_CSTR_0100_UNSAFETY

The user shall identify and evaluate the risks related to all instances of unsafe code as defined in Unsafety, and follow the guidelines outlined in Handling Unsafety.

8.11. Avoiding data races due to hardware interrupts

Identifier: RUSTC_CSTR_0110_INTERRUPTS

The user shall structure their code such that hardware interrupts will not result in data race conditions.