This project will provide Rust language support for NASA’s core Flight System (cFS). The Rust language is designed to be memory-safe: it detects a wide range of programmer errors at compile-time while allowing low-level access to hardware and high performance. Rust’s safety features make it ideal for writing new cFS applications.More »
The primary benefit of this work will be to make reliable flight software less costly and thus more widely accessible. With a smaller investment required to obtain reliable software, groups with constrained budgets will be able to reduce the negative impacts of software bugs such as loss of science data and even loss of the satellite. This will be especially helpful for improving the reliability of small platforms such as CubeSats.
We will realize this benefit by pairing Rust with cFS to allow developers to provide more reliable code. NASA’s cFS was made trustworthy through flight heritage and extensive testing; Rust allows new cFS applications to become trusted through rigorous compile-time checks that ensure code-correctness. The Rust compiler is more strict than C compilers, and as a result, Rust can eliminate common C run-time errors such as null pointers, double free, and use after free errors. These errors are often difficult to identify as they may only occur under particular run-time conditions.More »
|Organizations Performing Work||Role||Type||Location|
|Goddard Space Flight Center (GSFC)||Lead Organization||NASA Center||Greenbelt, Maryland|
This project demonstrates how to integrate applications written in Rust, a safe systems programming language, with NASA's core Flight System. We provide a raw foreign function interface to allow Rust programs to access cFS, a safe wrapper for select parts of that interface, and a cFS application written in Rust demonstrating use of the wrapper. These are integrated with the build system for cFS 6.7, and we provide a cFS distribution with Cosmos ground station software to demonstrate sending commands to and receiving telemetry from the Rust application. Finally, we have provided a report on our implementation, the issues encountered, and related alternatives.
The purpose of the Goddard Space Flight Center’s Internal Research and Development (IRAD) program is to support new technology development and to address scientific challenges. Each year, Principal Investigators (PIs) submit IRAD proposals and compete for funding for their development projects. Goddard’s IRAD program supports eight Lines of Business: Astrophysics; Communications and Navigation; Cross-Cutting Technology and Capabilities; Earth Science; Heliophysics; Planetary Science; Science Small Satellites Technology; and Suborbital Platforms and Range Services.
Task progress is evaluated twice a year at the Mid-term IRAD review and the end of the year. When the funding period has ended, the PIs compete again for IRAD funding or seek new sources of development and research funding, or agree to external partnerships and collaborations. In some cases, when the development work has reached the appropriate Technology Readiness Level (TRL) level, the product is integrated into an actual NASA mission or used to support other government agencies. The technology may also be licensed out to the industry.
The completion of a project does not necessarily indicate that the development work has stopped. The work could potentially continue in the future as a follow-on IRAD; or be used in collaboration or partnership with Academia, Industry, and other Government Agencies.
If you are interested in partnering with NASA, see the TechPort Partnerships documentation available on the TechPort Help tab. http://techport.nasa.gov/help