Rust zmienił całą branżę i teraz zmienia też C#. Microsoft nie miał wyboru


Rust zmienił całą branżę i teraz zmienia też C#. Microsoft nie miał wyboru

Microsoft szykuje jedną z największych zmian w historii języka C#. Firma chce poprawić bezpieczeństwo pamięci i ograniczyć ryzyko błędów prowadzących do luk bezpieczeństwa, ale bez porzucania charakterystycznego dla platformy .NET automatycznego zarządzania pamięcią.

Nowy model ma pojawić się w C# 16 i już teraz wywołuje ogromne zainteresowanie wśród programistów. Wielu z nich twierdzi, że Microsoft wyraźnie inspiruje się Rustem, językiem, który w ostatnich latach stał się symbolem nowoczesnego i bezpiecznego programowania systemowego. Różnica polega jednak na tym, że gigant z Redmond nie chce całkowicie przebudowywać C# ani zmuszać deweloperów do radykalnej zmiany sposobu pisania aplikacji.

Microsoft bierze na celownik „unsafe”

Kluczowym elementem planowanych zmian jest przebudowa działania unsafe. To specjalny mechanizm obecny w C# od pierwszej wersji języka, pozwalający programistom korzystać z operacji niskopoziomowych przypominających kod znany z C lub C++. Takie rozwiązania są potrzebne między innymi przy komunikacji z systemem operacyjnym, sterownikami, urządzeniami czy fragmentami kodu wymagającymi maksymalnej wydajności. Problem polega na tym, że właśnie tam najczęściej pojawiają się błędy prowadzące do podatności bezpieczeństwa.

Microsoft chce, aby niebezpieczne fragmenty kodu były znacznie bardziej widoczne i łatwiejsze do kontrolowania. W nowym modelu oznaczenie metody jako unsafe ma propagować się dalej w aplikacji. Programista wywołujący taki kod również będzie musiał świadomie zaakceptować pracę w niebezpiecznym kontekście.

To podejście przypomina filozofię Rusta, który od początku projektowano tak, by wymuszać świadome obchodzenie się z potencjalnie ryzykownymi operacjami.

Firma otwarcie przyznaje, że celem zmian nie jest całkowite wyeliminowanie niebezpiecznego kodu. Chodzi raczej o jego lepszą widoczność, łatwiejsze audyty bezpieczeństwa i dokładniejsze analizowanie ryzykownych fragmentów aplikacji.

C# ma pozostać wygodny dla zwykłych programistów

Microsoft bardzo wyraźnie podkreśla jednak, że nie zamierza zamieniać C# w kopię Rusta. Firma chce zachować prostotę tworzenia aplikacji biznesowych oraz automatyczne zarządzanie pamięcią przez garbage collector .NET. Dla ogromnej części programistów zmiany mogą być praktycznie niewidoczne. Typowe aplikacje webowe, biznesowe czy desktopowe bardzo rzadko korzystają z unsafe. Wiele osób piszących w C# nigdy nie dotknęło tego mechanizmu.

Nowe zasady mają przede wszystkim dotknąć twórców bibliotek systemowych, silników, narzędzi niskopoziomowych oraz komponentów komunikujących się bezpośrednio ze sprzętem i systemem operacyjnym.

Microsoft chce jednocześnie ograniczyć chaos związany z oznaczaniem niebezpiecznych fragmentów kodu. W przyszłości unsafe nie będzie już mogło obejmować całych typów czy klas. Zakres zostanie zawężony do konkretnych metod, właściwości i pól.

Rust coraz mocniej wpływa na branżę

Rosnąca popularność Rusta od kilku lat wywiera ogromny wpływ na największe firmy technologiczne. Microsoft już wcześniej zapowiadał stopniowe odchodzenie od części kodu pisanego w C i C++, właśnie ze względu na problemy związane z bezpieczeństwem pamięci.

Google, Amazon, Cloudflare i Mozilla również inwestują w Rusta lub wdrażają jego elementy do swoich projektów. Powód jest prosty, ogromna część krytycznych podatności bezpieczeństwa wynika właśnie z błędów pamięciowych. C# przez lata był postrzegany jako bezpieczniejsza alternatywa dla C++, ale Microsoft uznał najwyraźniej, że obecne mechanizmy nie są już wystarczające wobec rosnących wymagań bezpieczeństwa.

Programiści reagują zaskakująco pozytywnie

Co ciekawe, pierwsze reakcje społeczności deweloperskiej są w dużej mierze entuzjastyczne. Wielu programistów od dawna oczekiwało lepszego oznaczania niebezpiecznych operacji i bardziej restrykcyjnego podejścia do kodu niskopoziomowego. Część komentujących otwarcie przyznaje, że chciałaby dalszego zbliżenia C# do filozofii Rusta, ale bez utraty wygody pracy charakterystycznej dla platformy .NET.

Microsoft planuje wprowadzać zmiany stopniowo. Pierwsze elementy nowego modelu mają pojawić się wcześniej w wersjach testowych C# 15 i .NET 11. Pełna implementacja przewidziana jest dla C# 16 oraz .NET 12 pod koniec 2027 roku.

Spodobało Ci się? Podziel się ze znajomymi!

Pokaż / Dodaj komentarze do:

Rust zmienił całą branżę i teraz zmienia też C#. Microsoft nie miał wyboru
 0