Бойкот С и С++ отменяется. Создан новый диалект, лишенный главной «болячки» этих языков. С ним память в безопасности, а хакеры в унынии

Началась разработка своего рода «наследника» языков С и С++ под названием TrapC. Его можно назвать форком этих языков, но, скорее, это все же их новая эволюционная форма. Авторы TrapC устранили главный недочет С и С++ – их неумение безопасно работать с памятью, что открывает хакерам очень широкий простор для творчества.

С++ по-новому

Стартап Trasec приступил к разработке нового языка программирования TrapC, представляющего собой развитие языков С и С++ – их форк, диалект. Как пишет The Register, главная особенность детища Trasec в том, что он, в отличие от оригинальных С и С++, действительно умеет безопасно работать с памятью.

За крайне халатное отношение к памяти С и С++ в последние годы открыто и с каждым годом все громче и больше ругают программисты и чиновники, в том числе и участники сообщества ПО с открытым исходным кодом. Все больше признанных специалистов утверждают, что пора избавиться от обоих этих языков и перейти на их безопасных для памяти конкурентов, а заодно и переписать все проекты на них.

С TrapC программисты начнут создавать более безопасное ПО

Чаще всего в качестве безопасной альтернативы С и С++ упоминается язык Rust. Его уже предложено использовать для ядра Linux, и даже Microsoft задумывается о переписывании на нем части своих программных продуктов. Власти США тоже негативно отзываются о безопасности С и С++ и требуют перехода на Rust. Впрочем, среди программистов пока еще много «староверов» – тех, кто даже не собирается отказываться от С и С++ в пользу Rust.

Указатели важны

Авторы TrapC предложили свой метод защиты от ошибок при работе с памятью, выход за границы буфера и попытку работы с уже высвобожденной памятью. Их идея заключается в пересмотре алгоритмов работы с указателями памяти создании нового механизма перехвата ошибок.

Этот механизм они предлагают базировать на так называемом «обработчике исключений» (trap), что отражено в названии языка. В настоящее время ведется работа не только над самим языком, но и над компилятором для него, код которого авторы в будущем хотят сделать открытым. По плану, это должно произойти в 2025 г., однако более точной даты пока нет.

Пример кода на TrapC

Все новые алгоритмы и механизмы защиты будут реализованы непосредственно в компиляторе. Они будут строго следить за границами выделенных буферов памяти, и что указатели будут ссылаться только связанные с ними области памяти.

Помимо этого, компилятор будет следить за применением типов и «ругаться» на небезопасное, по его оценке, их использование.

Чем проще, тем лучше

Разработчики TrapC явно стремятся сделать этот язык более простым, нежели С или С++. В частности, в нем нет конструктора malloc – используется конструктор new.

Также были исключены вызовы free и delete, а компилятору отведена значительная роль – в числе прочего, именно ему поручено отвечать за высвобождение памяти. Такой подход дополнительно повышает защиту от утечек памяти.

{video id="4930"}
Пример кода на TrapC

Наряду с этим в TrapC намного меньше ключевых слов в сравнении с С и С++. Так, в нем отсутствует ключевое слово union, применяемое для определения объединений.

В то же время этот язык программирования разработан для совместимости с C, поскольку он использует тот же двоичный интерфейс приложения (application binary interface ABI) – программный интерфейс между двумя модулями, заданный на уровне машинного кода.

Кто стоит за проектом

У истоков стартапа Trasec, как и языка TrapC, стоит весьма видная фигура в сообществе программистов, без которого не обошлась разработка непосредственно С и С++. Это Робин Роу (Robin Rowe), бывший профессор компьютерных наук, а также бывший член многочисленных комитетов по развитию стандартов С и С++.

Роу также известен как соавтор знаменитого графического редактора Cinepaint с открытым исходным кодом. Cinepaint применялся при создании графики приблизительно для 20 известных фильмов. В их числе: «Двойной Форсаж» (2 Fast 2 Furious), «Шестой день» (The 6th Day), «Планета обезьян (Planet of the Apes), «Человек-Паук» (Spider-Man), а также все фильмы про Гарри Поттера.

Помимо этого, Роу разрабатывал POSIX-библиотеку libunistd для Windows. 

Роу – это генеральный директор Trasec (CEO), но сам стартап основан не им единолично. Второй соучредитель – это Габриэль Пантера (Gabrielle Pantera), в прошлом топ-менеджер в компании Disney. В Trasec она занимает пост главного операционного директора (СОО). 

В настоящее время Пантера и Роу заняты поиском инвесторов и сбором средств для своего проекта, пишет The Register.