Rejestr decyzji architektonicznych: język programowania Rust
Numer decyzji: AR-001
Tytuł decyzji: Przyjęcie języka programowania Rust
Data: 1 grudnia 2021
Status: Zaakceptowany
Opis problemu
W miarę rozwijania aplikacji zauważamy, że coraz trudniej łagodzić potencjalne luki w zabezpieczeniach i zapobiegać błędom w czasie wykonania. W istniejących językach programowania, takich jak C i C++, wciąż mamy problemy takie jak przepełnienia bufora, wycieki pamięci i niezdefiniowane zachowanie prowadzące do awarii aplikacji. Potrzebujemy języka programowania, który zapewnia gwarancje bezpieczeństwa pamięci i jest wystarczająco wydajny, by wspierać aplikacje krytyczne pod względem wydajności.
Rozważania
Kilka języków programowania zaprojektowano, by rozwiązywać istniejące problemy. Wśród nich język programowania Rust zyskał znaczną uwagę społeczności programistów dzięki swoim unikalnym cechom projektowym. Rozważania obejmują:
Bezpieczeństwo pamięci i ochrona
Wydajność i efektywność
Wsparcie społeczności i przyjęcie
Krzywa uczenia się
Narzędzia i ekosystem
Zgodność z istniejącymi systemami oprogramowania.
Ograniczenia
Przyjęcie nowego języka programowania wymaga przeszkolenia programistów, co zajmuje czas i zasoby. Zintegrowanie języka z istniejącym przepływem pracy może być wyzwaniem. Musimy zapewnić zgodność z istniejącymi systemami i unikać zmian łamiących zgodność, aby zachować ciągłość.
Wdrożenie
Nasz zespół programistyczny przejdzie szkolenie, aby poznać język programowania Rust i się z nim zaznajomić.
Utworzymy nowy projekt w Ruście na próbę, aby ocenić jego zgodność i przydatność do naszych celów rozwojowych.
Będziemy stopniowo migrować istniejące systemy napisane w C i C++ do Rusta.
Będziemy współpracować ze społecznością Rusta, aby poznać dostępne narzędzia i biblioteki, które mogą usprawnić nasz przepływ pracy.
Będziemy regularnie monitorować wydajność Rusta i porównywać ją z wydajnością istniejących języków programowania.
Przyjmiemy podejście długoterminowe, które równoważy koszty szkolenia, integracji i potencjalne korzyści z używania Rusta.
Uzasadnienie
Przyjęliśmy Rusta ze względu na jego unikalne cechy, zaprojektowane tak, by zapewniać gwarancje bezpieczeństwa pamięci i ochrony przy zachowaniu wydajności i efektywności. Solidny system typów Rusta, borrow checker i koncepcje bezpieczeństwa pamięci czynią go bardzo odpowiednim do tworzenia aplikacji krytycznych pod względem wydajności i bezpieczeństwa. Ponadto Rust ma znaczną społeczność programistów, co daje nam dostęp do szerokiej gamy narzędzi, bibliotek i ekosystemu wspierającego nasz przepływ pracy. Choć Rust wiąże się z krzywą uczenia się, wierzymy, że korzyści z jego przyjęcia przewyższają koszty i dają doskonałą okazję do dalszego rozwoju i innowacji.
Konsekwencje
Przyjęcie Rusta będzie wymagało znacznej inwestycji czasu i zasobów w szkolenie programistów i integrację języka z istniejącym przepływem pracy.
Przyjęcie Rusta może powodować pewne problemy ze zgodnością z istniejącymi systemami, wymagające refaktoryzacji i modyfikacji.
Przyjęcie Rusta może zwiększyć liczbę programistów, którzy mogą wnosić wkład w nasz projekt, przyciągając programistów Rusta, którzy chcą pracować nad ciekawymi projektami.
Przyjęcie może prowadzić do poprawy wydajności, efektywności i bezpieczeństwa w porównaniu z istniejącymi językami.
Wreszcie przyjęcie Rusta niesie potencjalną korzyść w postaci zmniejszenia liczby luk w zabezpieczeniach w naszych aplikacjach.