10. Compilation targets overview¶
Ferrocene has support for multiple compilation targets and host platforms. Targets are categorized into levels of support. This page lists the current support status for all targets, and individual pages with more details are provided for all Qualified and Quality managed targets, along with some other selected targets.
There are two kinds of targets available:
Host platform: can be used by developers and build systems to compile Rust code from that platform, either targeting the same platform or cross-compiling to a different one. Host platforms cannot neccessarily target other host platforms.
Cross-compilation: can only be used to cross-compile to the platform from any host platform.
There are also two variants of the standard library available:
Bare-metal: provides the
coreandallocbuilt-in crates.Full: provides the
core,alloc,std,testandproc_macrobuilt-in crates.
Note
alloc, std, test, and proc_macro, and uncertified parts of core
are provided are evaluated and tested within the scope of Ferrocene qualification for
compiler use only. The use of these libraries by end-use code is outside the scope of the
current Ferrocene qualification.
It is the end-user responsibility to certify these libraries if they are used in their code.
A subset of core is certified against IEC 61508 (SIL 2) on qualified targets; see the
Core library overview and Core Library Certification.
A summary of the assurances and support offered by target levels is summarized immediately below. For more details, refer to the appropriate section.
Feature |
Qualified |
Quality managed |
Supported |
Experimental |
|---|---|---|---|---|
Binaries |
Yes |
Yes |
Yes |
Best effort |
Tested |
Per merge |
Per release |
Best effort |
No |
Qualified |
Yes |
No |
No |
No |
Known Issues |
Yes |
Yes |
Documented only |
No |
Customer Support |
Yes |
Yes |
Yes |
Best effort |
Support Patches |
2 years |
2 years |
2 years (critical only) |
None |
Deprecation |
1 year |
1 year |
1 year (with exceptions) |
Any time |
LTS available |
Yes |
Yes |
Yes (with exceptions) |
No |
10.1. Qualified targets¶
Qualified targets are provided with the highest level of assurance and are qualified for use in safety-critical contexts.
Support is available. Known problems are tracked and available.
The full Ferrocene test suite is executed on the target before any change is merged.
Qualified targets have a two year support window from their release date. Qualified targets may be removed from future release after a deprecation period of 1 year after announcement or when circumstances outside our control require removal, for example when the target vendor no longer supports the target.
Most qualified targets come with a “certified equivalent” target. This certified target allows using the certified core library. The core library is not certified when using qualified targets, only when using certified targets. Refer to Certified targets.
Only stable releases of qualified targets are qualified. Other releases, such as beta, should be considered Quality Managed. Such releases can be qualified upon request.
Target |
Tuple |
Kind |
Standard library |
Notes |
|---|---|---|---|---|
|
Cross-compilation |
Bare-metal |
Only qualified when cross-compiled from x86-64 Linux (glibc). |
|
|
Cross-compilation |
Full |
Only qualified when cross-compiled from x86-64 Linux (glibc). |
|
|
Cross-compilation |
Bare-metal |
Only qualified when cross-compiled from x86-64 Linux (glibc). |
|
|
Cross-compilation |
Bare-metal |
Only qualified when cross-compiled from x86-64 Linux (glibc). |
|
|
Host platform |
Full |
- |
|
|
Cross-compilation |
Full |
Only qualified when cross-compiled from x86-64 Linux (glibc). |
10.2. Quality managed targets¶
Quality managed targets are targets which are suitable for use in production outside of safety critical contexts.
Support is available. Known problems are tracked and available.
The Ferrocene test suite is executed on the target prior to release.
Quality managed targets have a two year support window from their release date. Quality managed targets may be removed from future release after a deprecation period of 1 year after announcement or when circumstances outside our control require removal, for example when the target vendor no longer supports the target.
Quality managed targets are not qualified, but can usually be qualified on request.
Target |
Tuple |
Kind |
Standard library |
Notes |
|---|---|---|---|---|
|
Host platform |
Full |
- |
10.3. Supported targets¶
Supported targets are targets which are suitable for use outside of safety-critical contexts, and may be suitable for production given adequate user testing.
Support is available. Known problems are tracked and documented, but are prioritized lower than Qualified or Quality Managed targets.
While supported targets are built and provided to customers, the Ferrocene test suite may not always be fully executed.
Supported targets may be removed from future release after a deprecation period of 1 year after announcement or when circumstances outside our control require removal, for example when the target vendor no longer supports the target.
Supported targets can often be qualified or quality managed upon request.
Target |
Tuple |
Kind |
Standard library |
Notes |
|---|---|---|---|---|
Armv8-A Linux (glibc) |
|
Host platform |
Full |
- |
Armv8-A Linux (musl) |
|
Cross-compilation |
Full |
- |
Armv7-R bare-metal (hard-float) |
|
Cross-compilation |
Bare-metal |
- |
Armv8-R AArch32 bare-metal (hard-float) |
|
Cross-compilation |
Bare-metal |
- |
RV64GC Linux (glibc) |
|
Cross-compilation |
Full |
Available as a cross-compile target on Armv8-A Linux (glibc) and x86-64 Linux (glibc). |
Armv6-M bare-metal |
|
Cross-compilation |
Bare-metal |
- |
Armv8-M Baseline bare-metal |
|
Cross-compilation |
Bare-metal |
- |
Armv8-M Mainline (soft-float) |
|
Cross-compilation |
Bare-metal |
- |
Armv8-M Mainline (hard-float) |
|
Cross-compilation |
Bare-metal |
- |
|
Host platform |
Full |
- |
|
x86-64 Linux (musl) |
|
Cross-compilation |
Full |
- |
10.4. Experimental Targets¶
Experimental targets are provided as a preview and without any assurances. Use for production is generally not advised.
Limited support available. Known problems are not tracked.
The Ferrocene test suite may have been executed at some point.
Experimental targets may be removed for any reason without warning or deprecation period.
It is sometimes possible for Experimental targets to be qualified or quality managed upon request.
Target |
Tuple |
Kind |
Standard library |
Notes |
|---|---|---|---|---|
Armv7-R bare-metal (hard-float, big-endian) |
|
Cross-compilation |
Bare-metal |
- |
WASM bare-metal |
|
Cross-compilation |
Full |
The full standard library is available, but unsupported functions in |
10.5. Unsupported targets¶
The Rust compiler includes support for additional targets that are not yet included in Ferrocene. If you need support for them please reach out to the Ferrocene support team.