LINUX.ORG.RU

Corrode, проект транслятора из C в Rust, получил финансирование Mozilla

 , , , ,


2

8

Джеймс Шарп (James Sharp), отметившийся ранее в проекте X.org, в начале мая 2016 начал разработку проекта Corrode, целью которого является трансляция программ, написанных на C, в исходный код на Rust. Corrode написан на Haskell и распространяется под GNU GPLv2.

На текущий момент проект обзавёлся сообществом, научился транслировать некоторые программы и обрёл первые ближайшие цели и ориентиры: трансляция неподдерживаемых программ на C в Rust. В качестве субъекта тестирования был выбран исходный код CVS — давно устаревшей, но ещё используемой, системы контроля версий. Разработка и поддержка CVS была остановлена в 2008 году, а первая до сих пор не закрытая remote-уязвимость была обнаружена в 2012 году.

Джеймс рад сообщить, что он получил финансовый патронаж Mozilla, и как минимум на ближайшие несколько месяцев он может сконцентрироваться на своём свободном проекте. Mozilla рассматривает Corrode не только в качестве полуавтоматического транслятора для устаревшего кода, но и как статический анализатор нового поколения для кода на C.

>>> Подробности

★★★★★

Проверено: Shaman007 ()

10/10, Г-ди, 10/10!

Быстрее бы вымерло это Си и ЦПП, только Haskell и Rust!

Kostya69 ()

А какой толк от этого проекта? Либы новые на расте писать лень, видимо?

Bfgeshka ★★★★★ ()

А браузер они профинансировать не хотят?

anonymous ()

Даёшь Linux на Расте! Назовём его Растинукс.

AlarinPerfect ★★ ()

Corrode написан на языке Haskell

Интересно, у Haskell есть черты, облегчающие написание подобного рода трансляторов, или это предмет личных симпатий автора?

hobbit ★★★★★ ()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от hobbit

Да.

И, как написал автор, он выбрал этот язык за то, что там уже есть парсер сишки.

GoodRiddance ()

но и как статический анализатор нового поколения для кода на C.

Трепещи PVS-Studio для Linux (для C).

gag ★★★★★ ()
Ответ на: комментарий от Kostya69

Быстрее бы вымерло это Си и ЦПП, только Haskell и Rust!

Пока Линукс жив, будет и жить Си.

anonymous ()

Не понятна мотивация автора подобного инструмента. Если каким-то древним C-шных проектом не пользуются и развивать его некому, то неужели автоматическая конвертация с C на Rust как-то поможет этому позабытому-позаброшенному проекту? Ведь проблема с легаси не столько в языке реализации, сколько в том, что никто не знает, как там внутри все устроено, почему это устроено именно так, как вносить изменения, чтобы ничего не поломать и учесть все крайние случаи... Что-то сомнительно, что автоматическая трансляция на другой язык как-то облегчит поиск ответов на эти вопросы. Не говоря уже о том, что нужны эти ответы очень малому количеству любителей покопаться в окаменевших копролитах.

eao197 ★★★★★ ()

А транслятор из C в Go c2go был уже давно сделан одним человеком. С очень прагматичной целью: перевести весь golang toolchain из C в go. Что команде и удалось. Да, скорость компилятора упала, но не в 10 раз.

gag ★★★★★ ()
Ответ на: комментарий от hobbit

Интересно, у Haskell есть черты, облегчающие написание подобного рода трансляторов, или это предмет личных симпатий автора?

Скорее второе, тут логично было взять libclang и rust же, а не велосипедить с нуля на третьем языке.

П.С. посмотрел репозиторий - оно совсем в зайчаточном состоянии, пока говорить можно только про идею.

anonymous ()

Хорошая новость. Цепепе должен умереть, как мертворожденный урод-мутант. Це - должен уйти на достойную пенсию.

FilosofeM ()

Вроде rust и неплохой язык, но его евангелисты как-то очень смущают

buddhist ★★★★★ ()
Ответ на: комментарий от eao197

Не понятна мотивация автора подобного инструмента.

Перевод на безопасный язык позволит избежать хотя бы ошибок и дыр, отлавливаемых рантаймом.

tailgunner ★★★★★ ()
Ответ на: комментарий от hobbit

Интересно, у Haskell есть черты, облегчающие написание подобного рода трансляторов, или это предмет личных симпатий автора?

Как минимум DSL. А вообще Haskell рулит не по детски.

Rodegast ★★★★★ ()
Ответ на: комментарий от tailgunner

Чтобы перевести на безопасный язык, надо вывести столько инфы, что ошибки найдутся в процессе перевода, и собственно перевод будет уже не нужен.

anonymous ()
Ответ на: комментарий от Wizard_

Интересно, у Haskell есть черты, облегчающие написание подобного рода трансляторов

GoodRiddance ()
Ответ на: комментарий от buddhist

евангелисты как-то очень смущают

Казалось бы, какое отношение залетный хаскелятор имеет к евангелизму Rust.

tailgunner ★★★★★ ()
Ответ на: комментарий от anonymous

тут логично было взять libclang и rust же, а не велосипедить с нуля на третьем языке

Нелогично. Писать анализатор на крестах - мазохизм, а для хаскеля парсер тоже готовый.

anonymous ()
Ответ на: комментарий от anonymous

Мне тоже кажется, что приличная трансляция невозможна, но речь шла о мотивах.

tailgunner ★★★★★ ()

C, в исходный код на Rust. Corrode написан на Haskell

Квинтэссенция хипстоты!

anonymous ()

Транслятор для ненужно-старобыдлокода из сишки в ненужно, написанный на ненужно, за чужой счет (за счет чего Mozilla, кстати, кормится?).

Парень молодец: решил выучить хацкиль, а Мозилла решила ему это оплатить.

Случись подобное c «резидентом Сколково» с Роснано в роли спонсора, тут бы уже было 5 страниц комментариев в духе: «Распил! Откат! Котлета!». Но это же святая Мозилла, разве они будут таким заниматься?

kawaii_neko ★★★ ()

И на это тратятся деньги меценатов... Мда. В FLOSS надо жертвовать с осторожностью. А лучше не жертвовать, а точечно финансировать нужные тебе функции.

Sociopsih ★★ ()
Последнее исправление: Sociopsih (всего исправлений: 1)
Ответ на: комментарий от tailgunner

Да я не про автора поделки, а про контингент треда

buddhist ★★★★★ ()
Ответ на: комментарий от buddhist

Вроде rust и неплохой язык, но его евангелисты как-то очень смущают

Хуже лисперов!

Oxdeadbeef ★★★ ()
Ответ на: комментарий от anonymous

Нелогично. Писать анализатор на крестах - мазохизм, а для хаскеля парсер тоже готовый.

Во-первых кресты никто не предлагал, libclang можно из под rust использовать, и даже нужно в случае подобной задачи, во-вторых напиши на хаскеле что-то уровня божественной pvs-studio, а потом рассказывай про мазохизм.

anonymous ()
Ответ на: комментарий от tailgunner

Спасибо, кэп. Но хотелось бы, чтобы ты подумал чуть больше, прежде чем ответить. Т.к. такая «мотивация» очевидна и, очевидно, она вряд ли сработает.

И так ли уж Rust _безопасен_ для того, чтобы в него делать автоматическую трансляцию из C? Например, Rust-овый код, собранный в release, проверяет такие вещи, как целочисленное переполнение и выходы за пределы векторов? Ну и трюки с void-указателями, коих в старом C-шном коде будет предостаточно, наверняка будут транслироваться в unsafe-конструкции.

eao197 ★★★★★ ()
Последнее исправление: eao197 (всего исправлений: 1)
Ответ на: комментарий от anonymous

Писать (очень) высокоуровневый код на системном языке? Нужно? okay.

божественной pvs-studio

omg. Ну хоть бы на LLVM дальше ссылался...

anonymous ()

Corrode написан на Haskell

Ха-ха-ха. Вот это и есть диагноз мультипарадигменному расту!

asaw ★★★★★ ()
Последнее исправление: asaw (всего исправлений: 1)
Ответ на: комментарий от eao197

Спасибо, кэп.

Всегда пожалуйста.

Но хотелось бы, чтобы ты подумал чуть больше, прежде чем ответить.

Я ответил на вопрос, который ты задал. Если ты хотел задать другой вопрос - подумай чуть больше, прежде чем нажать кнопку «Отправить».

tailgunner ★★★★★ ()
Ответ на: комментарий от anonymous

C, в исходный код на Rust. Corrode написан на Haskell

Квинтэссенция хипстоты!

Не хватает трансляции из C в Rust из браузера (с помощью микросервисов на Go, конечно), голосового ввода кода и машинного обучения на биг дате

vmx ★★ ()
Ответ на: комментарий от Oxdeadbeef

Вроде rust и неплохой язык, но его евангелисты как-то очень смущают

Хуже лисперов!

Хуже эфирщиков))

asaw ★★★★★ ()

X.org

C

Rust

Haskell

GPLv2

CVS

Mozilla

Сразу семь «ненужно» в одной небольшой новости! По-моему, это рекорд.

CARS ★★★★ ()
Ответ на: комментарий от tailgunner

на безопасный язык

Единственный действительно безопасный язык, который мне известен — HQ9+.

GoodRiddance ()
Ответ на: комментарий от anonymous

Писать (очень) высокоуровневый код на системном языке? Нужно? okay.

Rust не более системный чем С++.

omg. Ну хоть бы на LLVM дальше ссылался...

А зачем, ты и с pvs-studio слился.

anonymous ()
Ответ на: комментарий от GoodRiddance

на безопасный язык

Единственный действительно безопасный язык, который мне известен

Но ведь речь не о действительно безопасных языках и тем более не о тех, которые тебе известны.

А так - напомню, мы находимся в Вселенной, где Rust считается безопасным языком.

tailgunner ★★★★★ ()

целью которого является трансляция программ, написанных на C, в исходный код на Rust

На солнце можно посмотреть в телескоп два раза...

anonymous ()
Ответ на: комментарий от tailgunner

Да, мы, к сожалению, находимся во Вселенной, где есть фанб^Wлюди, не осилившие теорему Гёделя, и верящие, что некая «магическая система типов»© защитит их от собственного несовершенства, позволяя при этом решать сколько-либо интересные проблемы.

GoodRiddance ()

Написан на Haskell? Что-то тут не так!

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.