Nowe standardy bezpieczeństwa w C++ – Stroustrup chce zachować konkurencyjność języka

Nowe standardy bezpieczeństwa w C++ – Stroustrup chce zachować konkurencyjność języka

Bjarne Stroustrup, twórca języka C++, wezwał komitet WG21, odpowiedzialny za rozwój standardów C++, do podjęcia działań mających na celu utrzymanie konkurencyjności języka w kontekście rosnącej popularności języków zapewniających bezpieczne zarządzanie pamięcią. Według niego C++ już teraz oferuje wszystkie mechanizmy potrzebne do bezpieczeństwa pamięci, ale brakuje standaryzowanych narzędzi, które gwarantowałyby programowanie wyłącznie w bezpiecznym podzbiorze języka.

Presja na języki z bezpiecznym zarządzaniem pamięcią

Zdaniem Stroustrupa czas na działanie jest ograniczony. Do 2026 roku producenci oprogramowania powinni przedstawić plan wdrożenia technologii minimalizujących ryzyko błędów pamięciowych lub przejścia na języki, które natywnie oferują takie zabezpieczenia. Zalecenie to pochodzi od amerykańskiej Agencji ds. Cyberbezpieczeństwa i Infrastruktury (CISA) oraz FBI, które intensyfikują działania na rzecz zwiększenia bezpieczeństwa kodu.

Stroustrup podkreśla, że standaryzacja narzędzi ułatwiających bezpieczne programowanie w C++ pozwoli zachować zainteresowanie językiem, szczególnie wśród programistów korzystających obecnie z C i C++, którzy w przeciwnym razie mogliby zostać zmuszeni do migracji na inne technologie. Dzięki temu projekty w języku C mogłyby zostać stopniowo przeniesione do C++, a następnie przekształcone na bezpieczne konstrukcje zgodnie z wytycznymi C++ Core Guidelines.

Standardowe profile bezpieczeństwa dla C++

Aby poprawić bezpieczeństwo kodu, Stroustrup proponuje wprowadzenie systemu profili C++, które nakładałyby dodatkowe wymagania na kod źródłowy. Mechanizm ten byłby podobny do używania flag "-Wall" i "-Wextra", lecz zamiast ostrzeżeń, blokowałby kompilację kodu niespełniającego określonych zasad.

Przykłady profili, które mogłyby zostać wdrożone:

  • type – wymaga inicjalizacji każdego obiektu, zabrania rzutowania typów.
  • lifetime – blokuje odwołania do zwolnionej pamięci, operacje na surowych wskaźnikach i jawne użycie new/delete.
  • bounds – wymaga sprawdzania zakresów dla wskaźników, zabrania operacji arytmetycznych na wskaźnikach.
  • arithmetic – uniemożliwia przepełnienia liczb całkowitych i niebezpieczne konwersje między typami.
  • concurrency – eliminuje operacje prowadzące do zakleszczeń i wyścigów danych.
  • RAII (Resource Acquisition Is Initialization) – wymaga ścisłego zarządzania zasobami.

Profile mogłyby być stosowane na poziomie projektu, plików lub nawet poszczególnych konstrukcji kodu. Przykładowo:

  • [[profile::enforce(type)]] – wymusza stosowanie bezpiecznych typów w całym pliku.
  • [profile::suppress(lifetime)] this->succ = this->succ->succ; – wyłącza kontrolę nad czasem życia obiektów w danym fragmencie kodu.

Bezpieczny kod w C++ zamiast migracji do innych języków

Zastosowanie profili pozwoliłoby na stopniowe eliminowanie niebezpiecznych praktyk w kodzie, takich jak surowe wskaźniki, rzutowania typów czy niejawne odwołania do nieinicjalizowanych obiektów. Przykładowo, zamiast surowych wskaźników można by stosować std::unique_ptr i std::shared_ptr, a klasyczne iteracje po tablicach zastępować zakresową pętlą for (type variable : vector).

Główne gwarancje bezpieczeństwa, które miałyby wynikać z nowych profili:

  • Każdy obiekt jest poprawnie zainicjalizowany i zwolniony.
  • Każdy wskaźnik wskazuje na poprawny obiekt lub ma wartość null.
  • Każda operacja na wskaźnikach i indeksach tablic odbywa się w dozwolonym zakresie.

Propozycja Stroustrupa to próba ratowania pozycji C++ w obliczu presji na migrację do języków z bezpiecznym zarządzaniem pamięcią.

Czy komitet WG21 zdecyduje się na tak radykalny krok?

Avatar
Lut 7, 2024

Grammarly lays off 20% of staff due to restructuring

Grammarly announced a business restructuring to advance focus on the AI-enabled workplace of the future. As part of this restructuring, they lay off approximately 230 members of our global team.
0
Kwi 30, 2025

Duolingo wprowadza strategię „AI-first” i rezygnuje z pracy z kontraktorami

Duolingo, jedna z najpopularniejszych aplikacji do nauki języków, ogłosiła, że wdraża strategię „AI-first”, koncentrując się na wykorzystaniu sztucznej inteligencji w tworzeniu treści, rekrutacji i ocenie wyników pracy. Firma poinformowała, że stopniowo zrezygnuje z usług zewnętrznych wykonawców na rzecz automatyzacji.
0
Kwi 4, 2025

Akcje spółek technologicznych gwałtownie spadły po wprowadzeniu przez Trumpa nowych taryf

Akcje spółek technologicznych gwałtownie straciły na wartości w czwartek po tym, jak prezydent USA Donald Trump ogłosił szerokie wprowadzenie nowych ceł importowych, wywołując panikę na światowych rynkach finansowych i obawy przed wojną handlową
0

Ta strona używa plików cookie, aby zapewnić Ci lepsze wrażenia podczas przeglądania.

Dowiedz się więcej o tym, jak używamy plików cookie i jak zmienić preferencje dotyczące plików cookie w naszej Polityka plików cookie.

Zmień ustawienia
Zapisz Akceptuj wszystkie cookies