Наследник на C и C++ елиминира основен проблем

Много програмисти открито критикуват небрежното отношение към паметта на C и C++
(снимка: CC0 Public Domain)

Бойкотът на езиците за програмиране C и C++ изглежда се отменя. Разработчици създадоха нов “диалект”, лишен от основния проблем на двата популярни езика – уязвимата работа с паметта, която насърчава хакерите.

В ход е разработката на един вид „наследник” на езиците C и C++, наречен TrapC. Проектът може да се нарече разклонение на тези езици, но по-скоро е тяхна еволюционна форма. Авторите на TrapC са елиминирали основния недостатък на C и C++ – неспособността на двата езика да работят безопасно с паметта, което отваря много широко поле за творчество на хакерите.

C++ по нов начин

Стартъпът Trasec започна да разработва нов език за програмиране TrapC, който се явява развитие на езиците C и C++ – техния fork, диалект. Според публикация на The Register за проекта, Trasec залага на идеята, че за разлика от оригиналните C и C++, неговият език знае как безопасно да работи с паметта.

През последните години много програмисти, включително членове на общността на софтуера с отворен код, все по-открито критикуват изключително небрежното отношение към паметта на C и C++. Признати експерти твърдят, че е време общността да се отърве от двата езика и да премине към безопасни за паметта конкуренти, като в същото време се пренапишат всички проекти на тяхна база.

Rust е най-често споменаваният език като безопасна алтернатива на C и C++. Вече има предложения той да се използва за ядрото на Linux и дори Microsoft обмисля да пренапише някои от своите софтуерни продукти върху него. Американските власти също говорят негативно за сигурността на C и C++ и изискват преход към Rust.

Въпреки това, все още има много „староверци” сред програмистите – тези, които няма да се откажат от C и C++ в полза на Rust.

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

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

Те предлагат новият механизъм да се базира на така наречения „обработчик на изключения” (trap), който е отразен в името на езика. В момента се работи не само върху самия език, но и върху компилатор за него, чийто код авторите искат да направят отворен в бъдеще. По план това трябва да стане през 2025 г., но все още няма по-точна дата.

Всички нови алгоритми и механизми за защита ще бъдат внедрени директно в компилатора. Те стриктно ще следят за границите на заделените буфери на паметта и че указателите ще препращат само към области на паметта, свързани с тях. В допълнение, компилаторът ще следи използването на типове и ще „ругае”, ако то не е безопасно.

Колкото по-просто, толкова по-добре

Разработчиците на TrapC очевидно се стремят да направят този език по-прост от C или C++. По-специално, той няма конструктор malloc – използва се нов конструктор.

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

Наред с това TrapC има много по-малко ключови думи, в сравнение със C и C++. Така например, липсва ключовата дума union, която се използва за дефиниране на обединения.

В същото време новият език за програмиране е проектиран да бъде съвместим със C, тъй като използва същия приложен двоичен интерфейс ABI – програмен интерфейс между два модула, дефиниран на ниво машинен код.

Кой стои зад проекта

В основата на проекта Trasec, както и на езика TrapC, стои много видна фигура в общността на програмирането, без която разработването на C и C++ не би било възможно. Това е Робин Роу, бивш професор по компютърни науки и бивш член на множество комитети за разработване на стандарти за C и C++.

Роу е известен и като един от авторите на графичния редактор с отворен код Cinepaint, който е използван за създаване на графики за приблизително 20 известни филма, вкл. 2 Fast 2 Furious, The 6th Day, Planet of the Apes, Spider-Man и всички филми за Хари Потър. Освен това Роу разработи POSIX библиотеката libunistd за Windows.

В момента Роу е главен изпълнителен директор (CEO) на Trasec, но самият стартъп не е основан само от него. Вторият съосновател е Габриел Пантера, бивш топ мениджър на Disney. В Trasec тя работи като главен оперативен директор (COO). Двамата са заети с търсене на инвеститори и набиране на средства за проекта си.

Коментар