LINUX.ORG.RU
ФорумTalks

Fish shell переписан с C++ на Rust

 , ,


1

5

https://fishshell.com/blog/new-in-40

Разработчики фиша упоролись, и переписали весь шелл с плюсов на раст, на это ушло больше двух лет.

В качестве причин указывается следующее:

  • Никто не любит С++ и Cmake
  • C++ становится легаси языком, искать контрибьюторов на нем сложнее, у Раст активное комьюнити
  • Удобней работать с многопоточкой
  • И вообще надо быть модным и актуальным
★★

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

Заметил что везде в проектах есть bitflags, то что было в паскале и аде еще в прошлом веке, в Rust решили добавить пакетом в стиле npm который уже имеет deprecated части ...

MOPKOBKA ★★★★★
()

Самый большой плюс раста в том, что если осилить борроу-чекер, то в принципе раст не сложнее питона или тайпскрипта.

nikolnik ★★★
()

...надо быть модным и актуальным...

Стильнцм и молодёжным же!

sparkie ★★★★★
()

C++ становится легаси языком, искать контрибьюторов на нем сложнее

Тем временем в соседнем топике, где сравнивают зп:

  • С/С++ 4K jobs
  • Rust: 309 jobs

Короче они просто решили переписать. И начали как и все растаманы - со лжи.

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

Тем временем в соседнем топике, где сравнивают зп:

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

Вопрос в том, сколько С++ разработчиков готовы заниматься в свободное время программированием на C++ и насколько сложен порог освоения кодобазы для программистов на других ЯП, возьмём хоть тех же условных джавистов или питонистов.

Fizzika ★★
() автор топика

<...> переписали весь шелл с плюсов на раст, на это ушло больше двух лет.

В качестве причин указывается следующее

Ожидал список причин почему переписывание заняло больше двух лет. Причины переписывания то и так понятны, указанные я бы мог назвать даже с учетом того что ни на плюсах, ни на расте не писал, это же очевидные штуки (кроме многопоточки разве что, тут бы я не угадал).

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

Вопрос в том, сколько С++ разработчиков готовы заниматься в свободное время программированием на C++

Собственно, автор и отвечает на это:

We have never had a lot of C++ contributors. Over the 11 years fish used C++, only 17 people have at least 10 commits to the C++ code. We also don’t know a lot of people who would love to work on a C++ codebase in their free time.

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

Самый большой плюс раста в том, что если осилить борроу-чекер, то в принципе раст не сложнее питона или тайпскрипта.

Меня еще пугает его стандартная библиотека: 100500 трейтов, типов. Наверное, нужно лет 10 на нем фултайм писать, чтобы хоть половину их запомнить. Ну такое у меня впечатление сложилось со стороны.
Другое дело условная жаба — коллекции освоил, пару классов для синхронизации и все.

urxvt ★★★★★
()

Вот, и небо не обрушилось и твердь земная не разверзлась, и ядро так же перепишут, а то сишники как-то разволновались и трагедию развели последнюю пару недель

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

Вот и ядро так же перепешут

Можете исходя из затраченного времени на переписывание fish, количества разработчиков и числа строк кода fish и linux посчитать необходимое время для переписывания ядра.

Evenik ★★
()

Причины в целом понятны. Разрабы хотят модно, молодежно, интересно, безопасно.

Меня больше интересует результат- довольны ли они переходом, стоило ли оно того или нет? Что стало лучше, а что хуже, как для пользователей, так и для разрабов…

skyman ★★★★
()

Переехал на zsh как только фиш стал заниматься этой ерундой с растом. Мне норм.

В качестве причин указывается следующее:

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

Bfgeshka ★★★★★
()

Никто не любит С++

Это честно, С++ вас всех тоже ненавидит.

ugoday ★★★★★
()

Данный проект и автор данного проекта являются для меня эталоном термина «турбоатизм». Проект сначала написали на Си, затем переписали на цпп и только потом на раст. И если переписывание с Си еще можно оправдать, но с цпп на раст? Причем это не был прототип, это был готовый и законченный проект. Это же насколько у человека нет личной жизни и других увлечений, чтобы ьак бесполезно переставлять кровати.
Еще возникает вопрос о своеобразности данного поделия, учитывая, что подобных решений много, никаких новшеств он не несет(как nushell, например), так еще и не posix.
В общем, лично у меня вопросов больше чем ответов.

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

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

Это зависть к свободному времени?

Еще возникает вопрос о своеобразности данного поделия, учитывая, что подобных решений много, никаких новшеств он не несет(как nushell, например), так еще и не posix.

Он из коробки юзабельный и юзерфрендли, я ничего подобного не видел, есть в любом репозитории. Где взять nushell я не представляю.

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

в принципе раст не сложнее питона

Да, вот мой любимый кусок кода:

macro_rules! forward_to_deserialize_any_method {
    ($func:ident<$l:tt, $v:ident>($($arg:ident : $ty:ty),*)) => {
        fn $func<$v>(self, $($arg: $ty,)* visitor: $v) -> 
        $crate::__private::Result<$v::Value, <Self as $crate::de::Deserializer<$l>>::Error>
        where $v: $crate::de::Visitor<$l>, {$(let _ = $arg;)*
            self.deserialize_any(visitor)}
    };
}

fn try_extract_error_from_region_constraints<'a, 'tcx>(
    infcx: &'a InferCtxt<'tcx>,
    generic_param_scope: LocalDefId,
    placeholder_region: ty::Region<'tcx>,
    error_region: Option<ty::Region<'tcx>>,
    region_constraints: &RegionConstraintData<'tcx>,
    mut region_var_origin: impl FnMut(RegionVid) -> RegionVariableOrigin,
    mut universe_of_region: impl FnMut(RegionVid) -> UniverseIndex,
) -> Option<Diag<'a>> {
    let placeholder_universe = match placeholder_region.kind() {
        ty::RePlaceholder(p) => p.universe,
        ty::ReVar(vid) => universe_of_region(vid),
        _ => ty::UniverseIndex::ROOT,
    };
    let matches =
        |a_region: Region<'tcx>, b_region: Region<'tcx>| match (a_region.kind(), b_region.kind()) {
            (RePlaceholder(a_p), RePlaceholder(b_p)) => a_p.bound == b_p.bound,
            _ => a_region == b_region,
        };
}

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

Finally, subjectively, C++ isn’t drawing in the crowds. We have never had a lot of C++ contributors. Over the 11 years fish used C++, only 17 people have at least 10 commits to the C++ code. We also don’t know a lot of people who would love to work on a C++ codebase in their free time.

Most of the work was done by 7 people (going by those with at least 10 commits to “.rs” files), but we got a lot of help from interested community members.

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

Это зависть к свободному времени?

Никак нет, лишь удивление рафинированной шизе.

Он из коробки юзабельный и юзерфрендли, я ничего подобного не видел, есть в любом репозитории

Да они все юзабельные, если это не древний csh какой нибудь. А конфиг писать все равно нужно, хотя бы чтобы приветствие отключить и промпт изменить.

eyrell
()

C++ становится легаси языком, искать контрибьюторов на нем сложнее, у Раст активное комьюнити

Может проблема не в C++, а в «fish shell»? Кстати что это за поделие? Первый раз слышу о существовании.

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

У раста стандартная библиотека раз в 5 меньше жабы) Нужно просто разобраться для чего каждый трейт служит и все станет ясно. Аннотация типов в питоне гораздо сложнее и замороченнее

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

Да они все юзабельные, если это не древний csh какой нибудь. А конфиг писать все равно нужно, хотя бы чтобы приветствие отключить и промпт изменить.

В fish я только отключал приветствие, все остальное устраивает. В bash я делал уже больше, а для zsh уже совсем неадекватные сборки делают.

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

Мда. Кусок говна. И эти люди бочку катят на C++ :)

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

Ты так говоришь будто тайпскрипт это не говно. Для людей неосиливших жаваскрипт создали какашку, которую обернули в красивый фантик.

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

Странное дело, вот есть такой проект clickhouse. Написан на c++. Контрибуторы находятся.

И второе. В процитированном куске говорится про контрибуторов на плюсах. Вот переписали они на раст. Сколько контрибуторов у них появилось после?

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

Мне кстати постоянно в личку на линке пишут раст-рекрутеры. Я даже готов поговорить, если в вакансии будет значиться лям фунтов в качестве компенсации. Но пока я вижу какие-то копейки.

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

Вот вот. Вся инфра Яндекса на плюсах, от желающих отбоя нет. Многое в opensource.

Reset ★★★★★
()

количество программистов в мире уже не растет(зачем они нужны вообще?), но количество проектов - увеличивается. отсюда удельное число потенциальных коммитеров падает - значит надо выкручиваться, и привлекать маладешь. а чем ее привлечешь, кроме как не желтыми штанами, фиолетовыми волосами и голым проколотым пупком. отсюда и руст.

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

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

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

И второе. В процитированном куске говорится про контрибуторов на плюсах. Вот переписали они на раст. Сколько контрибуторов у них появилось после?

Вроде как они сами говорят, что с 17 контрибуторов увеличилось до 7 :)

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

стоило ли оно того или нет? Что стало лучше, а что хуже, как для пользователей

Пробовал пару раз эту 4.0 – падала.
Откатился на 3.7.1.

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

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

По этой логике самый популярный в мире язык — ALGOL 60.

Rootlexx ★★★★★
()

Никто не любит С++ и Cmake

Кто эти люди?

C++ становится легаси языком, искать контрибьюторов на нем сложнее, у Раст активное комьюнити

Да у раста есть комьюнити, но почему-то токсичное.

Удобней работать с многопоточкой

Ни пробовал не знаю.

И вообще надо быть модным и актуальным

Ну это вообще самое глупое оправдание

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

We have never had a lot of C++ contributors. Over the 11 years fish used C++, only 17 people have at least 10 commits to the C++ code. We also don’t know a lot of people who would love to work on a C++ codebase in their free time.

Как я понял, у человека не хватает разработчиков, что бы разрабатывать проект. И подумал что переход на rust, на волне хайпа по этому языку, поможет привлечь людей к разработке

enep ★★★★★
()

C++ становится легаси языком, искать контрибьюторов на нем сложнее, у Раст активное комьюнити

Может быть это просто для fish сложно искать контрибьюторов? Вне зависимости от языка.

shell-script ★★★★★
()

Но насчёт CMake они правы. Хоть им и пользуюсь в старых проектах, но последнее время поглядываю на meson, который намного приятнее выглядит.
Ну и с многопоточкой в Rust объективнее приятней работать.

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

Странное дело, вот есть такой проект clickhouse. Написан на c++. Контрибуторы находятся.

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

Вот переписали они на раст. Сколько контрибуторов у них появилось после?

Рано об этом говорить, релиз буквально вчера вышел. Поживём - увидим)

Но мне кажется ситуация будет лучше чем с плюсами, много простого тулинга для юникса написано на расте в последнее время, а такой тулинг пишется как раз энтузиастами с свободным времени

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

Там есть более веская причина - ему понравилось писать на расте, для него это оказалось очень фановым языком. Но популярность языка в конкретной нише конечно играет сильную роль)

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

Там есть более веская причина - ему понравилось писать на расте, для него это оказалось очень фановым языком. Но популярность языка в конкретной нише конечно играет сильную роль)

Как то не последовательно.

enep ★★★★★
()

Никто не любит С++ и Cmake

Епт, что за манера свое имхо на всех переносить…

C++ становится легаси языком, искать контрибьюторов на нем сложнее, у Раст активное комьюнити

Чего чего? В каких это реалиях?

Удобней работать с многопоточкой

Удобнее по мнению…

И вообще надо быть модным и актуальным

Вот давайте все уберем, а это оставим, так хотя бы честно.

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

А какой смысол испольпользовать Rust без borrow checker’а? В нём же самая мякотка, самая безопасность и всё прочее.

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

Мне кстати постоянно в личку на линке пишут раст-рекрутеры.

Предлагают увеличить пенис?

hateyoufeel ★★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)