LINUX.ORG.RU

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

 , corrode, , ,


3

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 ()
Последнее исправление: Shaman007 (всего исправлений: 6)

Ответ на: комментарий от red75prim

Согласен. Собственно, с того момента, как я закончил работать C++-макакой, притрагиваться к нему не хочется. Про Rust особо много не читал (никак руки не дойдут), но с первого взгляда его синтаксис показался мне ужасным. Попробую потом еще.

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

Однако, на C++ предпочитают не программировать
И таких, как мне кажется, отнюдь не мало.

Ну так, а зачем же испытывать боль от копирующих конструкторов, SFINAE, виртуальных базовых классов, всяких прочих PIMPL, тормозной компиляции и связанной с этим бесконечной организации исходных файлов для укрощения инклюдов, всяких противоречий вроде «функция-член» vs. «функция не член», всяких дублирующих реализаций функций вроде x.begin() и begin(X), всяких академических думок-ломок о том, что vector<>::operator[] быстрее аж в 1,5 раза чем vector<>::at()!!1 и так далее по длинному списку, когда можно программировать без этого всего? :-) Ну ты, Женька, даёшь :-)

у Rust-а есть три очень привлекательные черты, которых не будет у C++ в ближайшем обозримом будущем

Конечно, не будет :-) Ведь даже unified call syntax не осилили :-) Так и не смогли определиться, что круче, f(x,y) или x.f(y) и что куда транслировать :-) Ещё лет 5 надо всё обдумать, чтоб решить :-) Лол :-)

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

а зачем же испытывать боль

Ну у меня-то, допустим, вообще никакой боли это не вызывает.

Но вот вы-то зачем на C++ программируете, если это такая боль и, главное, «когда можно программировать без этого всего?»

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

Ну вот многие в качестве одной из основных негативных особенностей Паскаля поминают begin/end. Это отмечали, начиная с Кернигана все кому ни попадя. В то же время высказываться против фигурных скобок почему-то нельзя. Я вот не вижу в них ничего страшного, но считаю неудобным и неуместным в настоящее время элементом, вызванным плохим вкусом авторов и непродуманностью дизайна C. Ну и ладно, фиг с ними, пусть будут.

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

Чем они дурацкие? Как по мне, намного лучше int32_t, const, decltype.

От себя замечу, что единого стиля нет и в самом Rust. Он еще пилится. Я безмерно счастлив, что компилятор ругает за неверное форматирование, типа snake_case и тд. Но в то же время у нас есть Vec, а не Vector, len а не length и with_capacity вместо чего-то более короткого.

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

Ну тут пример не очень. Скобки создают меньше визуального шума.

Ну и не будет забывать про миллион мух. Почти все популярные языки используют или скобки или вообще ничего (python), а begin-end остался только в Ruby.

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

Скобки создают меньше визуального шума.

И глаз на них не фиксируется, что плохо.

Ну и не будет забывать про миллион мух.

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

Почти все популярные языки используют или скобки

Julia, Matlab/Octave, SciLab, Frotran, используют end, Ocaml пару begin/end. Может быть, ещё есть, не помню на вскидку. Наверняка вы назовёте их маргинальными, неоперившимися, специфическими и просто никому не нужными.

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

Чем они дурацкие?

Потому, что i32 — это больше похоже на название переменной (математики очень любят в своем вычислительном коде использовать ii, jj, i1, i2, i22 и т.д.). Ну а fn вместо function или хотя бы func — это вообще следствие какой-то упоротости функциональщиной.

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

Julia, Matlab/Octave, SciLab, Frotran, используют end, Ocaml пару begin/end.

+ Ada, Eiffel, Ruby.

Тем не менее, фигурные скобки удобнее.

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

Julia, Matlab/Octave, SciLab, Frotran, используют end, Ocaml пару begin/end

end шума почти не создает. А в Ocaml begin почти не используется, так что и не шумит.

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

Parsec/attoparsec/accelerate чем не embedded DSL?

Доводилось только с Parsec сталкиваться, но как по мне, это не DSL, просто код на хаскеле может выглядеть «более выразительным». Но на остальные примеры посмотрю повнимательнее.

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

Не считаю путь следования миллионам мух разумною стратегией развития

Ну а мне влом идти против течения.

Наверняка вы назовёте их маргинальными, неоперившимися, специфическими и просто никому не нужными.

5 балов по чтению мыслей.

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

Все же, какие предпосылки если уже есть Rust?

Раст сильнее заставляет ломать привычки. Если в D можно будет легко отключать GC и при этом сохранять удобства хотя бы на уровне плюсов, то расширить аудиторию он сможет. Хотя да, создать хайп им будет сложнее.

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

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

Ну так эволюция выбрала скобки. А вы, с begin/end, как раз и отстали.

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

и не забивать голову r-values, l-values, pr-values, x-values, неявными приведениями...

Ты же понимаешь, что список «страшных терминов» для раста можно не меньше подобрать?

С тем, что раст меньше «приятных неожиданностей» устраивает не спорю.

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

i32

Вот это как раз прикольно получилось. Вместо кучи платформозависимого барахла и монструозных uint64_t лаконичные названия, которые одинаково работают и в виде суффиксов и при объявлении типов.

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

Речь не о том, что нравится вам. А о том, что другим не нравится в Rust-е.

Ну и если вы говорите о вкусовщие, то примените этот аргумент и к собственным словам про int32_t, const и пр.

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

Если в D можно будет легко отключать GC и при этом сохранять удобства хотя бы на уровне плюсов

Уверены в том, что в D без GC будут такие удобства? Там ведь, как минимум, лямбды отвалятся.

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

Вкусовщина меня не волнует.

Правда? А как же:

«Скобки создают меньше визуального шума.»

«Как по мне, намного лучше int32_t, const, decltype.»

«Я безмерно счастлив, что компилятор ругает за неверное форматирование, типа snake_case и тд.»

Когда речь о синтаксисе, это все о вкусовщине.

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

Когда речь о синтаксисе, это все о вкусовщине.

Буду знать.

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

Я проигрываю с этих влажных мечтателей. Спорят о D и Rust - двух совершенное ненужных языках, которые позиционируют себя как замена совершенно ненужного С++. А тем динозаврам, которым нужен С++, нафиг не сдались никакие замены, ни D с отсутствием спонсора, ни Rust, где на плечи программиста переложили еще тонну мозгопляса с лайфтаймами и пародией на ФП (причем по перформансу до Си там очень далеко)

Я знаю С++ программистов, не хисптеров, которых в вузе заставляли учить синтаксис, а реальных, со стажем 10-15 лет. Так вот, для этих разработчиков С/С++ богаподобный язык, где ты можешь все и не платишь реально ни за что.

Так что прямая работа с указателем важная фича, а мнимая борьба за безопасность, это сова натянутая на глобус. И если тебе стало не безопасно, тогда нехер писать свои Crud'ы на С++, возьми язык с ГЦ и не парь мозги.

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

Ты же понимаешь, что список «страшных терминов» для раста можно не меньше подобрать?

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

В Расте сложности связаны с обеспечением memory- и race-safety.

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

Фанбой, но только чего? Я ровным слоем говна полил все три языка. Или просто бомбануло и ляпнул?

Лучше не флуди, а скажи - как можно пытаться заменить язык (С++), который и сам живет где-то в узких местах?

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

Фанбой, но только чего? Я ровным слоем говна полил все три языка

Фанбой говна, очевидно.

как можно пытаться заменить язык (С++), который и сам живет где-то в узких местах?

Да никаких проблем. Берешь и пишешь не на Си++, а на Rust.

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

Но вот вы-то зачем на C++ программируете, если это такая боль и, главное, «когда можно программировать без этого всего?»

С чего ты взял, что я пишу на цепепе? :-) Лол :-)

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

Нет. Мне просто смешно читать ваш бред. Продолжайте в том же духе. Тут клоунам всегда рады.

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

Берешь и пишешь не на Си++, а на Rust.

Так ты таки возьмешь?

Нет. Но у меня и возможности нет.

Или только другим советуешь?

Советую? Я ответил на вопрос «как?». А нужно ли - каждый пусть решает сам.

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

У вас Альцгеймер?

Ой, а ты ещё кто таков? :-)

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

С чего ты взял, что я пишу на цепепе?

Слишком много разговоров о боли. Слишком много примеров говнокода.

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

Тред скатился в синтаксис, это тухло.

В одном из прошлых тредов скромно проигнорировали моё наблюдение, что отрыв раста от C на benchmarkgame хорошо так коррелирует с количеством unsafe в коде. Это к разговору о переписывании узких мест на Rust. На ум приходит пословица про обмен острого инструмента на предмет гигиены.

Кстати, в этом ITT треде как-то мало хайпа про отсутствие GC. Напоминаю, что преподносящие это как некое несомненное преимущество, судя по моим наблюдениям, как правило приходят из мира C/C++, т.е. этого зверя они видели лишь на картинках. Плюс к ним пытаются примкнуть карго-культисты, которые никакого hard realtime, low latency софта не пишут. Но вот оказия — в benchmark game, за исключением двух примеров, раст жрёт больше памяти, чем Go.

Надеюсь, светочи раста это мигом объяснят.

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

Нет. Но у меня и возможности нет.

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

Но вот смотреть за тем, что будет с Rust-ом через пару лет, интересно. Пока это самая жизнеспособная заявка в области нейтива без GC.

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

Слишком много разговоров о боли. Слишком много примеров говнокода.

Следуя этой логике, на цепепе только говнокод и пишется :-) Через боль :-) Долгими годами :-) А то и десятилетиями :-) Но только я тут не причём :-) Кто-то скажет, что не так? :-) Лол :-)

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