Decision Number: AR-001
Decision Title: Adoption of Rust programming language
Date: December 1, 2021
Status: Accepted
As we continue to develop software applications, we have observed that it is increasingly challenging to mitigate potential security vulnerabilities and prevent runtime errors. With the existing programming languages, such as C and C++, we continue to experience issues such as buffer overflows, memory leaks, and undefined behavior leading to applications' crashes. We require a programming language that provides memory safety guarantees and is efficient enough to support performance-critical applications.
Several programming languages are designed to address the existing problems. Among them, Rust programming language has gained significant attention from the developers' community due to its unique design features. Considerations include;
-
Memory safety and security
-
Performance and efficiency
-
Community support and adoption
-
Learning curve
-
Tools and ecosystem
-
Compatibility with existing software systems.
Adopting a new programming language requires retraining developers, which takes time and resources. Integrating the language into the existing development workflow may be a challenge. We must ensure compatibility with the existing systems and avoid breaking changes to maintain continuity.
-
Our development team will undergo training to learn and familiarize themselves with the Rust programming language.
-
We will create a new project using Rust on a trial basis to evaluate its compatibility and suitability for our development purposes.
-
We will gradually migrate existing systems written in C and C++ to Rust.
-
We will collaborate with the Rust community to explore the available tools and libraries that can enhance our development workflow.
-
We will monitor the performance of Rust and compare it to the performance of the existing programming languages regularly.
-
We will adopt a long-term approach that balances the costs of training, integration, and potential benefits of using Rust.
We have adopted Rust due to its unique features designed to provide memory safety and security guarantees while maintaining performance and efficiency. Rust's robust type system, borrow checker, and memory safety concepts make it highly suitable for developing performance-critical and safety-critical applications. Moreover, Rust has a significant community of developers, enabling us to access a wide range of tools, libraries, and ecosystem that support our development workflow. Although Rust comes with a learning curve, we believe the benefits of adopting Rust outweigh the costs and provide an excellent opportunity for continued growth and innovation.
-
The adoption of Rust will require a significant investment in time and resources to train developers and integrate the language into the existing development workflow.
-
Adopting Rust may cause some degree of compatibility issues with existing systems, requiring refactoring, and modifications.
-
Rust's adoption may increase the number of developers who can contribute to our project by attracting Rust developers who want to work on exciting projects.
-
The adoption could lead to improved performance, efficiency, and safety as compared to the existing languages.
-
Finally, adopting Rust comes with the potential benefit of reducing security vulnerabilities in our applications.