Sylvestre Ledru rozpoczął pracę nad reimplementacją GNU Coreutils w Rust podczas pandemii COVID-19 i zaprezentował ją w zeszłym tygodniu podczas edycji FOSDEM 2023. Wysiłek o nazwie uutils jest obecnie pakowany przez wiele dystrybucji Linuksa i jest również używany przez słynną sieć społecznościową za pośrednictwem projektu Yocto.
Porównania języków Rust i C++ mają wspólny wątek: podkreślenie wyższości Rusta nad C++ pod względem bezpieczeństwa pamięci. Redaktor RisingWave wyjaśnia, dlaczego po opuszczeniu projektu C++ napisał od nowa swój natywny Cloud DBMS w Rust.
„Rust zapewnia bezpieczeństwo pamięci i wątków w czasie kompilacji, wprowadzając zasady własności. Wykracza poza RAII, mechanizm zarządzania pamięcią powszechnie używany w C++. Ma dwie zalety. Pierwsza jest oczywista: gdy kompilator Rusta zwaliduje nasz program, nie będziemy mieć żadnych błędów segmentów ani warunków wyścigu w czasie wykonywania, co wymagałoby dziesiątek godzin debugowania, zwłaszcza w wysoce współbieżnej bazie kodu iw większości asynchronicznej. Drugi jest bardziej subtelny: kompilator Rust po prostu ogranicza typy awarii, co zmniejsza liczbę ściśle zagnieżdżonych fragmentów kodu, które mogą powodować takie błędne zachowanie. Replikacja błędów została znacznie ulepszona dzięki zastosowaniu wykonywania deterministycznego. »
GNU Coreutils to pakiet z projektu GNU który zawiera wiele podstawowych narzędzi potrzebnych w systemach operacyjnych typu Unix: cp (skopiuj plik lub katalog), mkdir (utwórz katalog) itp. Deweloper oferuje reimplementację w języku Rust.
Jeden z celów: aby pakiet był użyteczny w innych systemach operacyjnych: Windows, macOS, Android, FreeBSD itp. Posunięcie to ożywia debatę na temat tego, czy kontynuować rozpoczynanie nowych projektów w C i C++, czy po prostu wybrać język Rust.
„Język Rust domyślnie oferuje gwarancje bezpieczeństwa, jeśli chodzi o zarządzanie pamięcią. Inaczej jest w przypadku C i C++, których użycie w Mozilli jest przyczyną problemów z bezpieczeństwem pamięci”, podkreśla Sylvestre Ledru.
Jednak Bjarne Stroustrup nie zgadza się, że porównania między Rust i C++ ograniczają pojęcie zabezpieczania oprogramowania do zabezpieczania pamięci:
„Nie ma jednej definicji pojęcia „bezpieczeństwo” i możemy osiągnąć różne rodzaje bezpieczeństwa poprzez połączenie stylów programowania, bibliotek pomocniczych i wykorzystanie analizy statycznej. Bjarne Stroustrup sugeruje zatem, że to, co można uzyskać z C++ w zakresie bezpieczeństwa oprogramowania, zależy między innymi od programisty, a w szczególności od znajomości narzędzi, które oferuje język, jego opanowania kompilatora itp.
Inżynierowie Google świadomi tego, jakie możliwości daje im C++, podjęli się stworzenia weryfikatora kredytów w tym języku. Jest to funkcja kompilatora Rust, która zapewnia bezpieczeństwo pamięci poprzez zarządzanie alokacją wskaźników pamięci.
zespół Google'a, którego publikacja ukazała się w trzecim kwartale roku poprzedniego, doszedł do wniosku że system podobny do C++ nie nadaje się do takiego ćwiczenia. I do że można osiągnąć bezpieczeństwo pamięci w C++ ze sterowaniem podczas wykonywania programu. Innymi słowy, to przy wolnym kodzie C++ możliwe jest osiągnięcie poziomu bezpieczeństwa równoważnego poziomowi Rusta.
Wydanie edytora RisingWave następuje w momencie, gdy Rust wyróżnia się na tle innych języków, które od lat przedstawiane są jako alternatywy dla C i C++. W rzeczywistości jądro Linuksa staje się coraz bardziej otwarte na systemowy język programowania Mozilli.