3 Червня, 2026

Не Rust, але вже ближче: Microsoft нарешті взялась за безпеку пам’яті у C#

Компанія Microsoft планує суттєво переробити модель безпеки пам’яті в мові програмування C#. Продакт-менеджер .NET Річард Лендер опублікував розгорнутий допис, в якому описав, як команда збирається переосмислити роботу з ключовим словом unsafe — зробити небезпечний код більш помітним і керованим, зберігши при цьому автоматичне управління пам’яттю, пише The Register.

Читайте также: Скільки Років Тіні Кароль: Вік, Біографія та Кар’єра

Не Rust, але вже ближче: Microsoft нарешті взялась за безпеку пам'яті у C#

«Ми бачимо майбутнє, де C# входить до переліку мов, які обирають і відзначають саме за контроль над безпекою типів і пам’яті», — заявив Лендер.

Що таке unsafe і навіщо він взагалі потрібен

Більшість C#-розробників ніколи не стикається з unsafe — це вузькоспеціалізований інструмент, що існує в мові з першого релізу. По суті, написання unsafe-коду — це написання коду на C всередині C#-програми. Він потрібен там, де без прямого доступу до пам’яті не обійтись: взаємодія з операційною системою, робота з пристроями, що відображаються у пам’ять, або реалізація критично важливого за швидкістю коду. Unsafe дозволяє використовувати вказівники, які не відстежуються збирачем сміття .NET.

Що зміниться в C# 16

Нова модель з’явиться в C# 16 — до неї ще дві версії попереду, реліз заплановано на кінець 2027 року разом із .NET 12 (версія з довгостроковою підтримкою). Preview-версію слід очікувати вже в C# 15 і .NET 11.

Головна зміна: позначення методу як unsafe тепер автоматично вимагатиме, щоб усі його виклики також перебували в unsafe-контексті — якщо тільки це явно не обмежено всередині методу. Іншими словами, «небезпечність» тепер поширюватиметься вгору по ланцюжку викликів, а не ізолюватиметься всередині одного блоку.

Також зміниться область застосування модифікатора: позначати цілий тип як unsafe стане неможливо — дія звужується до окремих методів, властивостей і полів. Крім того, використання самих вказівників і деяких виразів із ними перестане вважатися unsafe — небезпечним залишиться лише безпосереднє розіменування вказівника та доступ до некерованої пам’яті.

Видимість, а не заборона

Принципово важливо: мета змін не в тому, щоб зробити небезпечний код технічно менш небезпечним, а в тому, щоб зробити його більш помітним і зрозумілим при рев’ю. До цього додаються вимоги до документування — спеціальні коментарі на unsafe-членах із описом контракту використання, які заохочуватимуться статичними аналізаторами.

Читайте также: Штучний інтелект для далекого космосу. НАСА тестує унікальний надпотужний процесор

Розглядається також відображення спеціальних значків на пакетах у NuGet — щоб одразу було видно, чи дотримується пакет нової моделі безпеки.

Для C# 16 зміни будуть опціональними: розробники зможуть продовжувати працювати за старою моделлю C# 1.0. Проте стандартні бібліотеки .NET вже підключаться до нової моделі. У майбутніх версіях мови Microsoft планує зробити нову поведінку поведінкою за замовчуванням.

«Наш намір — зробити нову модель безпеки C# новою нормою», — підкреслив Лендер.

Реакція спільноти

Розробники загалом відреагували позитивно. Один із коментаторів на Reddit зазначив, що активно пише на обох мовах і вітає зближення C# з підходами Rust, не заперечуючи проти того, щоб C# ставав дедалі більш схожим на керований Rust.

Є й парадокс: розробники, які пишуть бізнес-застосунки, взагалі не відчують жодних змін — вони ніколи не використовують unsafe. Проте Лендер наполягає, що ця зміна входить до числа найбільш важелевих покращень, які можна зробити для підвищення довіри до безпеки C#-коду загалом.

Нагадаємо, кілька тижнів тому Microsoft опублікувала код найстарішої версії DOS, яку вважали втраченою десятки років.

Читайте также: Невтішний прогноз. Через сорок років населення Землі може скоротитися вдвічі – дослідження

Підписуйтесь на нас у соцмережах: Telegram | Facebook | LinkedIn

Автор admin

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *