Microsoft выложила в открытый доступ более безопасную версию языка Си

Microsoft выложила в открытый доступ свой закрытый проект, названный Checked C, который является версией языка Си с несколькими новыми элементами синтаксиса и типами данных. Целью проекта было исключить риски при программировании на Си, которые приводят к таким багам, как Heartbleed и Shellshock.

Checked C — модифицированная версия Си, устраняющая проблемы с указателями и механизмом доступа к памяти напрямую. Также язык предоставляет несколько новых типов указателей и массивов. Они отличаются от существующих небезопасных типов указателей в Cи, так что программист может использовать новый тип, проверить указатели на безопасность и вернуться к небезопасным типам, если потребуется.

Новая версия также предоставляет проверенные программные области видимости. Они представляют собой блоки программного кода, где проверка границ включена по умолчанию. Если программист пытается использовать непроверенный указатель внутри такой области, компилятор отклонит его. Кроме того, можно указать, чтобы была включена по умолчанию проверка всей программы — путем директивы компилятора #pragma.

Каждая новая версия уже существующего языка сталкивается с как минимум двумя проблемами — обратная совместимость и изменения в инструментарии. Microsoft частично заботится о обратной совместимости — изменения, вносимые Checked C, не нарушают существующие программы на Cи. Все новые изменения в языке мирно сосуществуют с его наследием.

Но остается другая проблема — изменения в инструментарии. Microsoft частично решает эту проблему путем внедрения в Checked С широко используемого компилятора LLVM. Таким образом, если Checked C обретет популярность, это пойдет на пользу основному проекту, LLVM.