Состоялся релиз интерактивной командной оболочки fish 4.0.0 (friendly interactive shell), нацеленной на создание более дружественной пользователю альтернативы bash и zsh. Fish поддерживает такие возможности как подсветка синтаксиса с автоматическим выявлением ошибок ввода, предложение возможных вариантов ввода на основе истории прошлых операций, автодополнение ввода опций и команд с использованием их описания в man-руководствах, комфортная работа из коробки без необходимости дополнительной настройки, упрощённый язык написания сценариев, поддержка буфера обмена, средства поиска в истории выполненных операций. Код проекта распространяется под лицензией GPLv2. Готовые пакеты сформированы для Ubuntu, Debian, Fedora и openSUSE...Подробнее: https://www.opennet.me/opennews/art.shtml?num=62811
Не POSIX совместимо. Опять поделка уровня привет мир.
Напомню что линукс это "mostly POSIX-compliant".
В отличии например от макоси.
Так что над№№№вать на ПОФИГС можно но абсолютно бессмысленно.
>В отличии например от макоси.Хоооороошая операционная система ! Хааарошей архитектуры!
>"mostly POSIX-compliant" линукснапротив операционная система плохая. Распухшее, плохо администриуемое моноядро , практически невозможно перевести на прогрессивные безопасные языки программирования. Ибо для этого нужно как минимум вдвое, а на самом деле - и втрое больше разработчиков ,чтобы разрабатывать и то,и другое , и еще и патчи принимать.А их и так не хватает.И прекратить разработку , и взять и за 4 года все на rust переписать - смелости нет.
Ложь
Макос - сертифицирован как unix, что совсем не тоже самое, что и посикс.
На данный момент наиболее поддерживающими последние посикс стандарты как раз являются некоторые линуховые дистры и то далеко не все.
Эта поделка существует дольше, чем ты слово POSIX знаешь.
Миллионы мух не могут ошибаться!
Ещё бы скрипты кто-то posix-совместимые писал, кругом же башизмы и никакой posix shell их не переварит
Так и запускай скрипты башем, в чём проблема? Жалеко места в системе на бинарник баша?
Вендорлока гнутого не хочется.
> Вендорлока гнутого не хочется.В условиях, когда код открыт, допускает копирование, изменение, компиляцию и распростренение; говорить о каком-то вендоролке -- просто моветон.
Гнутым нет веры после того, как они свою лицуху поправили по принципу "компильнул что-нибудь gcc - вся твоя прога гнутой станет". Потом это дело откатили, но осадочек остался. https://www.gnu.org/licenses/gcc-exception-3.1.html - память о тех делах.
> Гнутым нет веры после того, как они свою лицуху поправили по принципу
> "компильнул что-нибудь gcc - вся твоя прога гнутой станет". Потом это
> дело откатили, но осадочек остался. https://www.gnu.org/licenses/gcc-exception-3.1.html
> - память о тех делах.Если хорошенько поискать, у каждого можно найти свой скелет в шкафу. Но нам ведь ехать, а не шашечки?
> Если хорошенько поискать, у каждого можно найти свой скелет в шкафу. Но
> нам ведь ехать, а не шашечки?Ага, поэтому я еду на clang/llvm)))
Потому что там все предсказуемо:
- да могут закрыть
- но все предыдущие версии остаются открытые
- с учетом того сколько заинтересованных - вероятность что закроют минимальнаяНо даже если не ворошить прошлое, то в GPL есть "any later version" clause.
И оно есть вот прямо сейчас.
Да оно опциональное, но как по мне это как подпись на пустом листе бумаги.
> - да могут закрыть
> - но все предыдущие версии остаются открытыеС GPL всё то же самое, кроме первого пункта :)
> Но даже если не ворошить прошлое, то в GPL есть "any later
> version" clause.Хоть я и не юрист, но вот моё понимание. Если выйдет гипотетическая GPLv4, в которой вводится необходимость платить по 1000 баксов за каждую попытку компиляции, это ещё не означает, что вас тут же заставляют платить. Вы можете пользоваться продуктом под старой лицензией -- GPLv3.
Это утверждение про "any later version" скорее является опасностью для автора ПО. Т. к. если в гипотетической GPLv4 корпоратам дадут возможность закрывать код, то они с удовольствием этой возможностью воспользуются. У пользователя же старую лицензию никто не отбирает. Ещё раз, это всё имхо.
Завидую людям с бесконечным бесплатным временем...
Таким, как сидящим на опеннете и изливающим душу о своей зависти к возможностям других?
> Так и запускай скрипты башем, в чём проблема? Жалеко места в системе
> на бинарник баша?Жалоба была что POSIX совместимости не было, но кому она нужна если её не хватит для большинства скриптов? У меня у самого лишь bash да fish стоит
Для чего конкретно posix shell не хватит, есть примеры?
> Ещё бы скрипты кто-то posix-совместимые писал, кругом же башизмы и никакой posix shell их не переваритА зачем? Предложение весьма глупое - баш идёт отдельным софтом - если нужно, берете и пользуетесь. К командной оболочке оно не имеет отношения в общем-то. А выражать недовольство раздувая из мухи слона на пустом месте без единого существенного аргумента - просто предрассудки. И даже посмотреть на это с другой стороны - отечественная командная оболочка... ну и какой она должна быть чтобы делать не копию и какие выгоды? А если про скрипты это не так сложно на самом деле. Я как-то за один день весьма простую оболочку на Си написал с использованием кириллицы - просто обида была на американцев, накатило как-то. Но это не сложно. На gitflic можете поискать Тор (по русски, не браузер, не рекомендую, не безопасно, просто для развлечения).
ведь это так важно куда ты будешь вводить свои `cd` и `ls`
Не понимаю сарказма. У тысяч людей от админов, девопсов до разработчиков самых разных мастей шелл является одним из основных и самых часто используемых инструментов работы. Если тебе это неважно (может ты просто редко этим пользуешься), то нам это действительно важно.
А posix вообще актуален? В мире победившего linux как-то не очень понятно, в чём смысл.Разве posix это не стандарт? Стандарты вообще для чего пишут, знаешь? Чтоб проще было обеспечивать совместимость. Совместимость между linux и чем? Между linux и бздном? Между linux и яблоком? Не очень-то хотелось, не очень-то они совмещаются. Ввиду не слишком пересекающихся ниш.
Да хотя бы между разными осями. Единожды написанный сценарий на posix shell выполнится с одинаковым результатом и на Linux bash, и на Debian dash, и на Android mirksh, и т.д. Но до умения делать универсально ещё надо дорасти.
А зачем шеллу обязательно быть posix-совместимым? Для запуска скриптов всегда есть /bin/sh.
Копипастить команды из мануалов в интерактивный сеанс неудобно. В мануалах будет скорее всего posix shell. Возможно это допилили в последние годы, слышал что добавили &&, || в дополнение к самобытным and, or. Меня оттолкнуло в своё время.Кроме того, невозможность посорсить 3rd-party скрипты из системных каталогов типа /etc/profile.d/... несколько обескураживает, и *.fish я в них не встречал. Инфа по состоянию на несколько лет назад, возможно уже начали поставлять, меня опять же оттолкнуло (вижу например что в активаторы venv/virtualenv генерацию *.fish -- добавили).
>Не POSIX совместимоЕдинственный плюс posix, по сравнению с альтернативами - популярность.
В чем это популярность проявляется? В восхищении аббревиатурой в отдельно взятой голове?
Не думал, что рыба может заржаветь
Смотря какой рыбец.
Хм...
А аналоги по функционалу есть? zsh - не то.
О! А я помню, были разговоры про "поиграют с ростом и вернуться", при обсуждении fish.
> решить проблемы с многопоточностьюКакие?
https://fishshell.com/blog/rustport/
если бы они писали на С то таких проблем бы небыло.
С самого начал fish был написан на Си. Потом переписали на С++, теперь на Раст. Через пару лет начнут на что-то другое переписывать. Главное показать деятельность
Следующий перепис на очереди - на Zig.
> Следующий перепис на очереди - на Zig.Если людям это нравится, то почему бы и нет.
Хобби разные бывают, кто-то генту пересобирает.Хотя я не вижу преимуществ zig.
Я бы поставил на Rust++ (раст + наследование как в плюсах), но его еще никто не придумал))
На javascript пусть перепишут уже и успокоятся.
Не хвастайтесь здесь своим обширным багажом знаний, завистники заклюют.
> Не хвастайтесь здесь своим обширным багажом знаний, завистники заклюют.Что не так? Хочешь сказать жс небезопасно работает с памятью?
Там ответ в духе: "сложнаа, нипанятна". Собственно, зачем разработчику такая глупая вещь как компьютерные науки, лол
Писать многопоточный код именно что сложно и непонятно. Одна из наиболее сложных вещей в CS. Но чтобы это понять надо написать чуть больше, чем c:\laba1.
Шелл красивый и хипстерский, но несовместимость с бгмерзским башем всё портит.
Был бы он совместим - был бы таким же мерзким как баш.
Для существующих скриптов слой совместимости есть, чтобы их sourceить - bass, зачем что-то ещё?
Да если бы они ценой потери совместимости чего-то радикально лучшее сделали - так ведь нет же. То же самое перекидывание строчками из 70х, но с клубничным привкусом, ага.
> Да если бы они ценой потери совместимости чего-то радикально лучшее сделали - так ведь нет же.Вот поэтому надеюсь на nushell.
>> Да если бы они ценой потери совместимости чего-то радикально лучшее сделали - так ведь нет же.
> Вот поэтому надеюсь на nushell.Ну, если не заморачиваться интерактивной работой - то можно не ждать и пользоваться вот powershell. Да, даже под онтопиком :)
и возможно при его установке тебе по почте сразу вазелин приходит
К сожалению в новость не добавили предпосылки и причины этого действия.
fishshell.com/blog/rustport/index.htmlВ общем они уже один раз переписывали с С на С++.
Но получили пачки проблем в виде
- compiler/platform differences
- ergonomics and (thread) safety
- communityУ них было мало С++ контрибьюторов "Over the 11 years fish used C++, only 17 people have at least 10 commits to the C++ code"
Но много С++ проблем: it is extremely easy to run into use-after-free bugsОни делают проект по фану и им важно получать от этого удовольствие.
"For one, fish is a hobby project, and that means we want it to be fun for us. Nobody is being paid to work on fish, so we need it to be fun. Being fun and interesting also attracts contributors"При работе они использовали autocxx, создали биндинги и заменяли код по кусочку.
В итоге 7 человек, в свободное время заменили весь старый код.
autocxx что это ? Авто связка как понятно , что вообще нового сделано кроме пере байтирования и пере дампирования чужого труда в другую директорию ?
> autocxx что это ?interop между растом и с++
> что вообще нового сделано кроме пере байтирования и пере дампирования чужого труда
Чьего труда?
Это их же код.
Много что кто говорит
Да, т.е. на цпп было 17 человек, которые коммитили, а на расте 7 человек, круто. Ну и переписали шелл(что не рокет сайнс) ВСЕГО за 2 года. Потрясающий результат. Все причины высосаны из пальца в желании скрыть истинную причину - автору просто захотелось. Но, видимо, яиц не хватило напрямую написать.
Учитывая что им просто по фану, причин быть и не должно.Написали обычный хелло-ворд. Э... переписали.
Что бы показать что умеют пользоваться растом.
Ну так претензия к тупому списку причин, которые им пришлось придумать, чтобы оправдать свое решение. Могли бы просто заявить Я ХОЧУ.
Ну и фанатов Х не особо стоит слушать по поводу Х. Там и хрен лучше стоять начал, и трава 100% позеленела и деньги сами в кармане начали появляться.
Про деньги это да. На что модно, хайпует, в тренде, на то и переписывают, тут и грантик подрезать можно.
> Ну так претензия к тупому списку причин, которые им пришлось придумать, чтобы оправдать свое решениеЭээ.. чувак ты вообще читал, что они написали?
Они прямо говорят:
"нас заколебал С++, народу нет и вообще это не fun.
Поэтому прикола ради мы сделали мемный тикет rewrite to rust.
А потом понеслось ибо раст это fun"
> Да, т.е. на цпп было 17 человек, которые коммитили,За 11 лет.
> а на расте 7 человек, круто.
За два года.
> Ну и переписали шелл(что не рокет сайнс) ВСЕГО за 2 года.
В свободное время?
> Потрясающий результат.
Уверен ты бы справился лучше и поделишься своими достижениями.
(Ладно это была шутка, понятно что ты сольешься)> Все причины высосаны из пальца в желании скрыть истинную причину - автору просто захотелось.
Он прямо пишет "Nobody is being paid to work on fish, so we need it to be fun."
> Но, видимо, яиц не хватило напрямую написать.
Не, скорее у тебя мозгов почитать)
>За 11 лет.Видимо свободного времени было меньше. Кстати, а написание кода на Си с последующим переписыванием на цпп по чистой случайности в эти 11 лет не входит?)
>Уверен ты бы справился лучше и поделишься своими достижениями.
>>ряяя сперва добейсяВ чем смысл этого тупого аргумента? По такой логике никто никого не должен обсуждать, пока не пройдет его путь.
>Он прямо пишет "Nobody is being paid to work on fish, so we need it to be fun."
Ага, а теперь читаем пост, где только начиналось переписывание с аргументами уровня "нуу, вот цпп никому не нужен, потому что я так сказал"
>За два года.Да и вообще грязая подмена изначального тезиса, но в прочем от растобл®дей такое ожидаемо. Изначально переход аргументировался привлечением новых разработчиков к проекту, но их количество снизилось с 17 до 7, лол. Но вы решили это опустить и набросили свои фантазии про переписывание за 2 года против 11, которые никак нельзя проверить, ибо неизвестно сколько времени уделялось раньше и не входит ли в это время написание проекта на Си.
Ну и это просто смешно "ДА РАЗРАБОТЧИКОВ СТАЛО МЕНЬШЕ, НО НАМ ЭТО УЖЕ И НЕ НУЖНО, ПОСМОТРИТЕ КАК МЫ БЫСТРО ПИШЕМ".
Жалкое зрелище. Из-за таких как вы у раста и плохая репутация, никто не любит гнилых и изворотливых червей, которые специально откровенно набрасывают.
Стул не сожги)
> По такой логике никто никого не должен обсуждать, пока не пройдет его путьПочти так, только не «его путь», а «свой путь». Но тут 99.99999999% никакие пути не ходят, и пишут не вставая с дивана. На что тебе и указали. Talk is cheap, show me the code.
Развитый навык ээээ... дупочтения, поздравляю.
Если что - в тексте новости указано, что "В создании выпуска 4.0 приняли участие более 200 разработчиков." - но кто ж ту новость читал-то, когда надо было успеть комментарий выложить...
Ага, я заметил что у тебя он развит на 100%
Вот прямая цитата
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. [1]Приняли участие это понятие растяжимое.
Может они меняли color на colour.
А может тестировали.
Или закоммитили 1 строку.
[1] fishshell.com/blog/rustport/ - The Timeline
> Ага, я заметил что у тебя он развит на 100%
> Вот прямая цитата
> 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. [1]
> Приняли участие это понятие растяжимое.
> Может они меняли color на colour.
> А может тестировали.
> Или закоммитили 1 строку.
> [1] fishshell.com/blog/rustport/ - The TimelineДа-да, давай еще про "ненастоящих шотландцев" с ненастоящим участием...
> Да-да, давай еще про "ненастоящих шотландцев" с ненастоящим участием...Ты не понимаешь разницы между
"Most of the work was done" и "приняли участие" ?Не уверен что есть смысл с тобой спорить.
> Состоялся релиз интерактивной командной оболочкизачем это в 21 веке - где кнопки мышью тыкать? ещё два года переписывали 200 человек, пипец похоже на расте то быстро пишется бгг
Ну, спроси любого - консоль по прежнему самый удобный и продуктивный способ взаимодействия с железом. А почему - потому что это то же общение, прямо как в чате с реальными людьми. Для людей, ничего естественнее, чем диалог, просто быть не может, вот и все.
> консоль по прежнему самый удобный и продуктивный способ взаимодействия с железоммне busybox ash достаточно, лучше бы потратили время на его переписывание и развитие - офигенная тема, заменяет базовую систему одним маленьким бинарником, особенно актуально для раста. Разработать ещё для него новую систму инициализации и systemd на помойку отправить.
Для людей. Но техника — не человек. Посмотрите на панель управления любым устройством — от музыкального центра до ядерного реактора. Вы видите там консоль? Нет. Вы видите там кучу кнопочек, тумблеров и разнообразных индикаторов.
Я не знаю, где вы видели ядерный реактор, но у музыкального центра функций почти нет. Громче/тише, старт/пауза - вот и почти все кнопки. Возьмём для примера тот же докер: там одних настроек сети будет куча. Попробуйте всё это засунуть в гуи, не потеряв при этом функциональности, и чтобы в этих кнопках нельзя было бы заблудится.
Консоль - это инструмент для автоматизации, для повторяемости, для сохранения последовательности действий.У неё есть большая проблема. Консоль не может показать все доступные действия. Их надо откуда-нибудь выковыривать. А GUI - может. Может показать совместимые команды. Может валидировать ввод. Может показать дефолтные настройки (в CLI их легко забыть задокументировать).
Посмотри на MKVToolNix -> Multiplexer -> Show command line.
Можно накликать в GUI план действий и получить консольную команду (копируешь её и потом переиспользуешь в шелловых скриптах), если надо. Если не надо - команда запустится под капотом через GUI. Это идеал.
>Консоль не может показать все доступные действияВозьмите любой современный консольный софт, тот же docker. Они очень сильно продвинулись в этом плане
>А GUI - можетКак только гуи начинает содержать кучу настроек, в них мгновенно становится сложно ориентироваться. Вот почему те же настройки лежат в пункте правка? А руководство начинает напоминать фотоальбом с картинками, поскольку иначе понять где что лежит становится очень сложно, когда всяких меню уже куча
>Может показать совместимые командыТолько в самых простых случаях
>Может показать дефолтные настройки (в CLI их легко забыть задокументировать).Кто помешает забыть задокументировать их в гуи?
> Возьмите любой современный консольный софт, тот же docker. Они очень сильно продвинулись в этом планеВзял. Вижу неплохой графический интерфейс к консольному интерфейсу. Графический интерфейс называется "docs.docker.com/reference/cli/docker/".
> Как только гуи начинает содержать кучу настроек, в них мгновенно становится сложно ориентироваться.
А как только CLI начинает то же самое, то что становится?
Например, вот это: https://git-man-page-generator.lokaltog.net
Или вот это:
Running you suggested answer:
ffmpeg -v info -hide_banner -f lavfi -i smptehdbars=rate=25:size=1920x1080 -filter_complex "[0:v]drawtext=text=text1:x=100/2:y=100:fontsize=50[txt1];[txt1]drawtext=text=text2:x=200/2:y=200:fontsize=50[txt2];[txt2]drawtext=text=text3:x=300/2:y=300:fontsize=50,split=2[txt3][out3];[txt3]drawtext=text=text4:x=400/2:y=400:fontsize=50[txt4]" -map "[out3]" -t 10 -y ~/Desktop/mapstuff1.mp4
I get "Filter drawtext:default has an unconnected output"[1]Если фильтры превратить в node-based UI, то получится уже графический интерфейс.
Если превратить в domain-specific language, то интерфейс будет уже не консольный.
Такие портянки можно оправдать только дешевизной автоматизации - новый DSL не надо изобретать, синхронизировать GUI и CLI как в MKVToolNix не надо.>>Может показать дефолтные настройки (в CLI их легко забыть задокументировать).
> Кто помешает забыть задокументировать их в гуи?Выпадающий список сам показывает, что у него по дефолту выбрано. Это не приходится сообщать через документацию.
Программисты вот превозносят самодокументируемый код. А самодокументируемые интерфейсы - это не покушение ли на святость консоли?
[1] https://stackoverflow.com/questions/74807979/ffmpeg-filter-c...
> зачем это в 21 веке - где кнопки мышью тыкать.Подсмотрел у друга программиста он тыкает кнопочки copy - paste, на ios, mac.
Зачем консоли.
Этот комментарий ты тоже мышью написал, надеюсь.
Вот что разработчики пишут в https://github.com/fish-shell/fish-shell/pull/9512#issuecomm...C++'s string handling is subpar, and it's much too easy to fall into passing raw wchar_t * around (and we don't have access to string_view and that just enables even more use-after-free bugs!). This is annoying, because a shell is almost entirely string handling and unix api wizardry.
Fish also uses threads, for things like the autosuggestion and syntax highlighting ...
C++ offers few guarantees on what can be accessed from which thread. @ridiculousfish has been trying to crack this for years, and hasn't been confident enough in his solution. We want a tech stack that helps us here, and C++ doesn't.
-----
Вобщем, вывод такой: разработчики фиша просто плохо знают С++, чтобы программа на С++ была надёжной, разработчик должен быть ответственным и дисциплинированным, а они хотят по fun'у всё делать, чтоб язык за них всё сделал. А С++ will never thank you.
Если вместо std::string использовать С-массив из wchar_t, то конечно будет ненадёжно
Ага, какие плохие разработчики Рыба.
Но странное дело андроид тоже избавляется от С++, новый код стараются не писать.
И в хроме какая-то движуха.
А в ядро С++ даже не взяли, в отличии от))> чтоб язык за них всё сделал
Действительно, какая наглость!
Надо чтобы программист все ручками писал и каждый битик считал.
>Надо чтобы программист все ручками писал и каждый битик считал.Кто-то должен и это уметь делать. Как-то дали мне задание чтоб на микроконтроллере определённую работу сделать не более чем за 17 микросекунд, так пришлось все команды программы перевести в циклы процессора чтобы время подсчитать
>>Надо чтобы программист все ручками писал и каждый битик считал.
> Кто-то должен и это уметь делать.Кому надо, пусть учится.
> Как-то дали мне задание чтоб на микроконтроллере определённую работу сделать не более чем за 17 микросекунд, так пришлось все команды программы перевести в циклы процессора чтобы время подсчитать
Как это соотносится с командной оболочкой?
Так с такими трендами, что творяться сейчас в индустрии, попросто не останется тех, кто будет учиться таким вещам. И учебников тоже не станет, потому что все отменят.
Нейронки, пишущие код, язык, не дающий работать с памятью и процессором напрямую, такие вещи до добра не доведут.
>попросто не останется тех, кто будет учиться таким вещамКогда-то очень важным навыком считалось умение охотиться. И где теперь этот навык, и кому он особо нужен?
>язык, не дающий работать с памятью и процессором напрямую
Вы Rust с Python перепутали, похоже. В Rust никто не запрещает работать с памятью. А вот с процессором напрямую работать можно только с помощью Ассемблера.
> Так с такими трендами, что творяться сейчас в индустрии, попросто не останется тех, кто будет учиться таким вещам.Что значит не останется?
Вот тебя же жизнь (задача с микроконтроллером) заставила?> И учебников тоже не станет, потому что все отменят.
Какие учебники отменят? Что ты несешь?
> язык, не дающий работать с памятью и процессором напрямую
Ты сейчас про раст? Он позволяет писать bare metal и для микроконтроллеров, если нужно.
Так что мимо.
> Так с такими трендами, что творяться сейчас в индустрии, попросто не останется тех, кто будет учиться таким вещамИ что, всем теперь обязательно учиться "таким вещам"? Только чтобы "у вас не убыло" человекоресурсной базы? Мне за 27 лет не пригодилось ни разу, прям чтоб "ручками битики считать". Ну разве что отдаленно и однократно - когда "вручную на коленке", на ассемблере дешифратор диска написал для DOS (диск был зашифрован вирусом OneHalf и DOS'овский ДокторВеб в тот раз почему-то вылечить и расшифровать его не смог).
> на ассемблере дешифратор диска написал для DOS (диск был зашифрован вирусом OneHalf и DOS'овский ДокторВеб в тот раз почему-то вылечить и расшифровать его не смог).Была у Dr.Web'а одна версия, где он OneHalf удалял, а диск расшифровывать забывал. Интересно, пользователи Вирусную Лабораторию Данилова задолбали обращениями, или все сошло на нет?
BTW: Your PC is now stoned!
>Как-то дали мне задание чтоб на микроконтроллере определённую работу сделать не более чем за 17 микросекундМикрокотноллеры - отдельный мир, который к счастью с остальным it практически не пересекается.
> Вобщем, вывод такой: разработчики фиша просто плохо знают С++да лучше раст изучать чем тратить молодость на плюсы
> да лучше раст изучать чем тратить молодость на плюсылучше тратить молодость на раст, чем тратить молодость на плюсы
Поправил.
Правда в таком варианте звучит сомнительно.
Молодость знаете на что надо тратить? На работе случай был: лето, жара, окна и двери в коридор открыты, работать особо неохота, вдруг слышим в коридоре незнакомые женские каблучки, идут по коридору и приближаются к нашему коридору. Все уставились в открытую дверь в ожидании кто же это. И прошла мимо красивая высокая блондинка в коротком летнем платье. Все застыли в оцепении. Начальник показывает пальцем вслед блондинке и говорит "Вот, ребята, чем надо заниматься, а не той ф**нёй, которой мы сейчас здесь занимаемся".
Земля итак идиотами переполнена. А вам всё мало?Кроме того, сама постановка проблемы звучит сомнительно. Кому надо? И почему надо на это, а не на улучшение качества программ?
Хорошо, что есть рабы, подобные тебе. Пока ты РАБотаешь, пацаны делают бабки. В стойло, паграмист!
> женские каблучки, идут по коридору
> Начальник показывает пальцем вслед блондинке и говорит "Вот, ребята, чем надо заниматься, а не той ф**нёй, которой мы сейчас здесь занимаемся".Ходить на каблуках.
А почему начальник как надо не показал на своем примере.
Может и показал
ага, и тратить оставшуюся жизнь, на переписывание проекта под каждую новую версию хрустяшки, после впердоливания очередной порции стабилизяшек.
Вы выбираете из двух зол. Зачем?? Есть язык Ди - куда приятнее и перспективнее всякой ржЫ.
> Вобщем, вывод такой: разработчики фиша просто плохо знают С++, чтобы программа на
> С++ была надёжной, разработчик должен быть ответственным и дисциплинированным, а они
> хотят по fun'у всё делать, чтоб язык за них всё сделал.
> А С++ will never thank you.То есть приблизительно "одни и те же люди" попробовали и у Rust порог вхождения оказался (в первом приближении; понятно, что опыт с Rust не окончен) ниже?
Если что, то они и с Си не справились, потому что многопоточность у Си и Плюсов одна и та же. Может дело не в языке?!)
> Если что, то они и с Си не справились, потому что многопоточность
> у Си и Плюсов одна и та же. Может дело не
> в языке?!)Ну... да, я ж и написал "порог вхождения ниже". :)
> Вобщем, вывод такой: разработчики фиша просто плохо знают С++, чтобы программа на С++ была надёжной, разработчик должен быть ответственным и дисциплинированным, а они хотят по fun'у всё делать, чтоб язык за них всё сделал. А С++ will never thank you.ЯП должен позволять писать надёжный софт даже неопытному разработчику. C++ не полволяет даже опытному.
>> Вобщем, вывод такой: разработчики фиша просто плохо знают С++, чтобы программа на С++ была надёжной, разработчик должен быть ответственным и дисциплинированным, а они хотят по fun'у всё делать, чтоб язык за них всё сделал. А С++ will never thank you.
> ЯП должен позволять писать надёжный софт даже неопытному разработчику. C++ не полволяет
> даже опытному.Язык никому ничего не должен: он недоговороспособен, потому долговым обязательствам на нём появиться неоткуда.
А вот зачем в айтишечке непонимающие что пишут персонажи - это любопытный вопрос.
> Fish 4.0.0 only says "Segmentation Fault (core dump)" https://github.com/fish-shell/fish-shell/issues/11187Ах-ах-ах, безопасный раст не спас от ошибок сегментации.
По ссылке шедевр. Бедолага даже ссаный шелл сбилдить не смог по причине РАСТ. Я емакс на 2х ядрах и 1.5гб озу собирал. Какой позор...
Hello world собирается нормально без проблем. Не знаю какие проблемы там у автора. (На большее раст не способен)
Раст, конечно, способен, если те, кто его использует, имеет голову на плечах и руки, растущие из плеч. Остальным же можно просто посочувствовать.
Нет, раст это о шутках в стиле Чак Норрис: Если бы <name> было написано на Раст то это было бы безопасно
>если те, кто его использует, имеет голову на плечах и руки, растущие из плечТак это же самое верно и в отношении C. Зачем тогда Rust?
>Я емакс на 2х ядрах и 1.5гб озу собиралСколько лет назад? При столь малом объёме памяти, двух ядер становится много, поскольку если два процесса компиляции в память не влезут, то собирать всё равно придётся на одном.
Так у него старый проц, бинарь просто собран с оптимистичными флагами
Ну допустим это так. Но сбилдить то под себя почему не получается? Чтоб сбилдить шелл (шелл, Карл!) из исходников уже C2D и 2Гб RAM недостаточно?
Мда, ну и шеллы пошли. А ведь когда-то шелл портировался первым при переходе (после ядра) на новую платформу из-за своей легкости. Такой минимальный UI к ядерным интерфейсам.
>Чтоб сбилдить шелл (шелл, Карл!) из исходников уже C2D и 2Гб RAM недостаточно?А с чего вы взяли что достаточно? И потом, чем шелл такой особенный, что вот ему, в отличии от других программ, точно должно хватить?
Во времна, когда данное железо было актуальным, в ходу были x86 программы, а сейчас x64. Сама по себе программа под x64 только на указателях будет тратить до двух раз больше памяти, чем x86, при прочих равных. Далее, из этих 2 Гб часть уйдёт на систему, и компилятор в своё распоряжение получит менее 2 Гб. Даже современный gcc будет тратить больше памяти чем пятнадцатилетней давности, не говоря уже про библиотеки и всё прочее.
> Ну допустим это так. Но сбилдить то под себя почему не получается?
> Чтоб сбилдить шелл (шелл, Карл!) из исходников уже C2D и 2Гб
> RAM недостаточно?Там LTO включён, т.е вся компиляция идёт все исходники (llvm биткод) на вход, бинарь на выход, и оптимизация идёт всего сразу, с инлайнингом вообще всего во всё например.
Это требует очень много памяти в сравнении с типичным .c => .o (без llvm биткода, с нативным кодом) => линковка, но оптимизации того стоят, зачем компилировать на машине с 2гб рамы?
Это определенно наш кумир> CPU: Intel Core 2 Duo T6670 (2) @ 2.201GHz
Core 2 Duo 2Ghz уже недостаточно для шелла?
Для готовой оболочки - достаточно. Но речь же о компиляции. Для компиляции - нет, недостаточно, очевидно. И?
Готовый шелл у него не работает, скомпилировать тож не получается. Нет, речь не про компиляции гугл хром из исходников идёт, а про командную оболочку.
Но Bash на таком железе скомпилялся бы на ура.
И чего ж он башем не пользуется? Старому компьютеру — старый софт. Всё справедливо. А то знаешь, баш этот ваш на PDP7 не собирается. Стало быть выбрасывать?
Если внимательно почтитать переписку, то внезапно, ему не хвтатет памяти.
Там еще интереснее:> Okay I wasn't able to compile Fish right on that laptop since apparently 3 GB RAM isn't enough? It's just running out of memory.
> Yeah, compiling rust programs is fairly memory intensive.Я на таком же компе целый Firefox собирал из pkgsrc, а тут какой-то шелл. Блин, что с этим растом не так?
а что с ним так?
Растолюбы говорят там какие-то боровы есть
скорее медведи
> Я на таком же компе целый Firefox собиралСколько лет назад ты это смог сделать?)
> Блин, что с этим растом не так?
С растом все так. Проблема в хламе.
До сих пор могу. Или этот шелл в сабже толще фаерфокса?
Если можете до сих пор, то проблема не в расте, поскольку в фаерфоксе тоже есть раст
Я бы поставил вопрос иначе: что не так с человеком, который в 2025 сидит на таком говне мамонта и ещё пытается в разработку?
С этим человеком все нормально - он захотел попробовать шелл, который у него не заработал. Ему ответили, что раст туда понапихал всяких инструкций, которых у него нет и надо просто пересобрать бинарь под свой проц. Но и тут облом - шелл невозможно скомпилировать на коре 2 дуба с 3 гигами оперативы. Очевидно тут дело не в проце и количестве памяти вк, потому что на таком проце можно make world на FreeBSD сделать и целое ядро линукс собрать. Это проблема в кривом языке. Это как современные кодер на электроне советуют докупить памяти, она ведь дешёвая (хз только куда её вставлять, если слотов больше нет, или она припаяна). То есть проблему кривого дизайна, неоптималтныз и жрущих алгоритмов предлагается затыкать заменой железа. А речь то идёт про какой-то сраный шелл.
> он захотел попробовать шелл, который у него не заработал. Ему ответили, что раст туда понапихал всяких инструкций, которых у него нет и надо просто пересобрать бинарь под свой процО, сколько его открытий чудных ждёт, что на этом мусоре ещё не заработает.
>Но и тут облом - шелл невозможно скомпилировать на коре 2 дуба с 3 гигами оперативы. Очевидно тут дело не в проце и количестве памяти вк, потому что на таком проце можно make world на FreeBSD сделать и целое ядро линукс собратьМне очень интересно посмотреть, как вы текущую версию ядра на таком железе будете собирать, хватит ли вам памяти на make -j3 или нет. И можно ли будет на таком устройсте хоть чем-то параллельно заниматься.
>То есть проблему кривого дизайна, неоптималтныз и жрущих алгоритмовДоказательства неоптимизированности будут? Вы совершенно напрасно считаете, что ранее алгоритмы были какими-то особо оптимизированными. Основная задача софта раньше - пролезть хоть как-то на то железо, что было доступно. Что при этом отвалится или не будет работать - не важно, главное, чтобы оно хотя бы иногда запускалось. Если сравнивать си с растом, то в си нет боров чекера, соответственно на него память тратить не нужно. Макропроцессор в си это что-то вроде sed-а, он берёт строку и заменят одну подстроку на другую, в то время как в rust макропроцессор работает с синтаксическим деревом. Да даже взять тот же strcpy, тут даже в названии функции аж целый байт сэкономили, которая не проверяет размер буфера, это экономия аж на два size_t. И так буквально во всём. За счёт таких хаков оно и пролазит на то железо, где расту места не хватает. Только вот и проблем за счёт этого огромная куча.
>С этим человеком все нормально - он захотел попробовать шелл, который у него не заработалДля таких целей придумана кроскомпиляция. Поскольку столь древнего железа мало, а в ходу оно будет ещё долго. Нет никакого смысла отбрасывать себя лет на пятнадцать, а то и двадцать, ради полутора землекопов.
> Основная задача софта раньше - пролезть хоть как-то на то железо, что было доступно. Что при этом отвалится или не будет работать - не важно, главное, чтобы оно хотя бы иногда запускалосьАга, конечно. Верим.
Давайте, оспорьте.
Для скептиков: если строкам добавить размер, то потребуется всего 128 нетерминалов, чтобы занять 1 Кб. В коде
void main() {
printf("Hello world\n");
}
Нетерминалов 4: "void", "main", "printf", "Hello world\n". Это без учётов того, что будет включено всякими includ-ами. Так что думайте
Не совсем понятно о чем Вы?
Перед тем, как утверждать, что современный софт жрёт память, потрудитесь узнать, на что эта память расходуется. А я говорю о том, как легко может увеличится потребление памяти лексером, при незначительном изменении кода.
До C были FORTRAN и ALGOL 60, где спокойно тратились на длинные и очень длинные ключевые слова (вплоть до equivalence и double precision). Затем эту многословность уже в сишные времены перенял Pascal. Затем пошли персональные компьютеры, которым весьма надо быть дешёвыми и это не мешало им иметь интерпретатор BASIC'а (написанный на ассемблере и влезающий в ~5 килобайт).А сишники в основном просто выё-кхе-кхе. Известная шутка:
memmove - более безопасная функция
memcpy - на 1 символ короче и на 1 условный переход меньше!
Что выберет настоящий сишник?> пролезть хоть как-то на то железо, что было доступно. Что при этом отвалится или не будет работать - не важно, главное, чтобы оно хотя бы иногда запускалось.
> И так буквально во всём. За счёт таких хаков оно и пролазит на то железо, где расту места не хватает.В голову лезут глупые шутки вроде "деда, а ты на самом деле динозавров видел?"
>До C были FORTRAN и ALGOL 60, где спокойно тратились на длинные и очень длинные ключевые словаЯ же написал: "нетерминалы". Ключевые слова здесь не влияют, так как уже на этапе лексера они превращаются в токен с фиксированным размером. И здесь подсчт просто 1024/8=128. Это только размер size_t для строки, без самой строки
>написанный на ассемблере и влезающий в ~5 килобайтТеперь осталось подсчитать, что это бейсик мог. Я более чем уверен, что почти ничего.
>memcpy - на 1 символ короче и на 1 условный переход меньше!
>Что выберет настоящий сишник?Верно подмечено
> Я же написал: "нетерминалы". Ключевые слова здесь не влияютУгу, а ещё написал "void". "Если на клетке слона прочтёшь надпись «буйвол», не верь глазам своим".
> И здесь подсчт просто 1024/8=128. Это только размер size_t для строки
Борода отклеилась. Во времена 1-64КБ оперативки size_t - это 2 байта. Жалко один из этих двух байтов, хочется догнать нуль-терминированные строки? Так использовать при написании компилятора 1 байт на длину строки как в ShortString. Жалко терять длинные строковые литералы? С ними можно много чего придумать*, главное, что чепуха про неизбежность нуль-терминированных строк опровергнута.
> Верно подмечено
Только гордиться нечем. Просто во времена B отцов-основателей штырило посильнее, поэтому там был "extrn". Во времена C послабее, но всё же штырило, поэтому "memcpy". Безопасность? Ну, в те времена к ней было другое отношение. А было бы не другое - глядишь, и Rust бы в ядро не стали упихивать.
* Начать хоть с того, что в C89 гарантировалась поддержка только литералов длиной до 509 байт. 256 - это как 509, только 256.
>Угу, а ещё написал "void"С точки зрения синтаксиса там может быть абсолютно любая строка, так что утверждать, что там будет терминал - скорее всего преждевременно.
>Борода отклеилась. Во времена 1-64КБ оперативки size_t - это 2 байтаЭто тогда. А сейчас на C2D скорее всего будет запущен вполне себе x64.
>Так использовать при написании компилятора 1 байт на длину строки как в ShortStringЭто будет свосем уж бессмысленно, так как удобства практически не добавляет, а вот проблем от этого уже много
>* Начать хоть с того, что в C89 гарантировалась поддержка только литералов длиной до 509 байт. 256 - это как 509, только 256.Сурово...
Но там уже void. Так можно договориться до того, что преждевременно это называть C. Может, это на самом деле Powershell: https://godbolt.org/z/9o4a53ah4> Это тогда. А сейчас на C2D скорее всего будет запущен вполне себе x64.
Так теперь при компиляции надо волноваться не об оверхеде size_t, а об оптимизациях, проверках в компиляторе, об оверхеде метапрограмм (на макросах ли, на шаблонах ли).
При этом могут быть сюрпризы: "You can't de-optimize the kernel ... kernel as a whole requires -O2 because the code itself is written with assumptions that certain functions will be optimized in a certain way." - https://stackoverflow.com/a/33595979
> Это будет свосем уж бессмысленно, так как удобства практически не добавляет, а вот проблем от этого уже много
Об удобстве ведь и речи не могло быть, мы "аж целый байт сэкономили", чтобы "пролезть хоть как-то на то железо, что было доступно", чудо что компилятор работает, "что при этом отвалится или не будет работать - не важно, главное, чтобы оно хотя бы иногда запускалось". /s
> Сурово...
Ну, изобретаем мы C. В начале 70-х, как положено. Но с 255 вместо 509. И что принципиально изменится в той альтернативной вселенной?
по прежнему работаю на одноядерном х64 ноутбуке в качестве тестовой площадки под небольшие эксперименты, полет в целом вполе нормальный.
Ну...> Okay, that CPU is from 2009.
Почему кто-то ожидает, что всё будет работать из коробки на устаревшем неподдерживаемом оборудовании? При том, что проблема скорее всего фиксится перекомпиляцией, о чём там и сказанно.
Откуда вообще может взяться эта несовместимость? Новые процы содержат кучу полезных инструкций, благодаря которым можно оптимизировать некоторые части кода. Например какое-нибудь сравнение строк через SIMD. 99% пользователей получают улучшение (в данном случае производительности), 1% получают проблемы (фиксятся, но в ручную). Вполне справедливый обмен, как по мне.
Блин... Вы ваще не читаете на что отвечаете? То что там куча новых полезных инструкций в проце это даже растоманам понятно.> 1% получают проблемы (фиксятся, но в ручную)
Ну вот он попытался вручую пофиксить - оперативы не хватило, чтоб собрать hellowor^W шелл.
Для систем, которые по современным меркам можно уже считать микроконтроллерами, есть кросскомпиляция.
>оперативы не хватило, чтоб собрать hellowor^W шелл.Не отождествляйте два этих понятия. Той же подсветки синтаксиса в helloworld нет и не будет
Нормально они так зарелизили - сотни регресионгых багов, уже 4.1 версия на подходе
Ну так. С нуля переписать на другой язык. На 100 тысяч строк 100 багов - думаю это вполне себе окей..
> Нормально они так зарелизили - сотни регресионгых багов, уже 4.1 версия на подходеА я повёлся) Вот и доверяй в следующий раз Анониму.
Изначально написали на Си, потом переписали на Си с плюсами, теперь переписали на Ржавом. Жду завершение нового переписывания кодовой базы на язык УНАСМНОГОСВОБОДНОГОВРЕМЕНИНАЧНЁМПЕРЕПИСЫВАТЬРАДИПЕРЕПИСКИ.
медленно движутся к электрону, познают себя
Неё электрон уже не модно, скоро будет новый язык который вот точно будет безопаснее всех и по последним меркам со встроенным ИИ
"ИИ" уже не модно, сегодня модно мемкойн
ЭТО НАЗЫВАЕТСЯ ПРОГРЕСС!
неа
так ничего не поменялось, значит прогресса нед
> так ничего не поменялось, значит прогресса недПочему не поменялось?
Пересталось падать в многопотоке. Одно это достаточная причина для переписывания.
В отличии от bash они почти смогли избавится от проблемы с переменными включающими в себя пробел. https://fishshell.com/docs/current/language.html#quoting-var... К сожалению для полного решения проблемы нужен принципиально другая оболочка
переписали бы на питон, там и многопоточность не нужна, можно легковесных докеров накидать, и изоляция сама получится
>переписали бы на питонНесравнимо. Питон скучнейший язык, я вообще не понимаю людей, добровольно пишуших на этом.
Эту штуковину прикручиваем к этой штуковине... )
Не вижу комментария о том, а зачем, собственно, шеллу многопоток. Создаю. Думайте.
Нужно как в девяностые, кода у дидов пока дискета не доформатируется, система зависала. Точнее, пока автодополнение с диска или сети всё не прочитает, отредактировать уже введённый текст было нельзя. Думайте
Для логов, к примеру! Выполнил задачу - отдельно в треде кинул лог "всё сделано", а в это время уже выполняется другая функция.
>упрощённый язык написания сценариев,или язык написания упрощенных сценариев?
"you can set your colors and view functions, variables, and history all from a web page."
Чтобы всё прозрачно утекало в Интернет.
из-за того что ето не поддерживает баш скрипы, перешёл на ble.sh