Появился новый диалект, в котором решается главная «болячка» С и С++
Стартап Trasec приступил к разработке нового языка программирования TrapC, представляющего собой эволюционную форму С и С++, сообщает The Register. Его главная особенность в безопасной работе с памятью, которая закроет хакерам простор для творчества.
Авторы TrapC предложили свой метод защиты от ошибок при работе с памятью, выход за границы буфера и попытку работы с уже высвобожденной памятью. Идея заключается в пересмотре алгоритмов работы с указателями памяти и создании нового механизма перехвата ошибок.
Этот механизм они предлагают базировать на так называемом «обработчике исключений» (trap), что отражено в названии языка. Также ведётся работа над компилятором для него, код которого авторы в будущем хотят сделать открытым. По плану это должно произойти в следующем году, но точной даты пока нет.
Все новые алгоритмы и механизмы защиты будут реализованы непосредственно в компиляторе. Они будут строго следить за границами выделенных буферов памяти и за тем, что указатели ссылаются только связанные с ними области памяти. Помимо этого, компилятор будет следить за применением типов и «ругаться» на небезопасное, по его оценке, их использование.
Разработчики TrapC стремятся сделать язык более простым, чем С или С++. В частности, в нём нет конструктора malloc — используется конструктор new. Также были исключены вызовы free и delete, а компилятору в числе прочего поручено отвечать за высвобождение памяти. Такой подход дополнительно повышает защиту от утечек памяти. В TrapC намного меньше ключевых слов, чем в С и С++. Так, в нём отсутствует ключевое слово union, применяемое для определения объединений. В то же время этот язык разработан для совместимости с C, поскольку он использует тот же двоичный интерфейс приложения.
У истоков стартапа Trasec, как и языка TrapC, стоит бывший профессор компьютерных наук и бывший член многочисленных комитетов по развитию стандартов С и С++ Робин Роу. Он также известен как соавтор знаменитого опенсорсного графического редактора Cinepaint, который применялся при создании графики примерно для 20 известных фильмов, в том числе «Двойного Форсажа», «Планеты обезьян», «Человека-Паука» и всех фильмов про Гарри Поттера. Помимо этого, Роу разрабатывал POSIX-библиотеку libunistd для Windows. В Trasec он выполняет роль гендиректора. Сейчас стартап занимается поиском инвесторов и сбором средств.
За проблемы с памятью С и С++ в последние годы открыто и всё громче ругают программисты и чиновники. Специалисты призывают избавиться от обоих языков и перейти на их безопасных для памяти конкурентов, а также переписать все проекты на них. Чаще всего в качестве безопасной альтернативы С и С++ упоминается Rust. Его уже предложено использовать для ядра Linux, а Microsoft задумывается о переписывании на нём части своих продуктов. Впрочем, среди программистов пока ещё много тех, кто не собирается отказываться от С и С++ в пользу Rust.
Читать на dev.by