Дрю ДеВолт (Drew DeVault), автор пользовательского окружения Sway и почтового клиента Aerc, ради забавы попытался подготовить реализацию Git, написанную на POSIX Shell. Идея возникла после спора о сложности внутренней структуры Git, после которого Дрю решил продемонстрировать свои доводы, написав за день работоспособный вариант Git на чистом Shell. В процессе работы Дрю понял, что немного погорячился с заявлениями о простоте из-за применения в Git бинарного формата индекса, для обработки которого не совсем подходит Shell. Но отступать было поздно и извернувшись реализация Git на Shell была создана...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=52355
Всем уязвимостей и ошибок из-за недостаточного экоанирования за счёт заведения.
> написав за день работоспособный вариант Git на чистом Shell
Мужик сказал - мужик сделал!
Но ведь.. он использовал несколько гнутых расширений, да ещё и целую либу( zlib ) и это всё только для обеспечения функционала, чтобы сделать коммит...Как итог, то, что он сделал, победой назвать нельзя даже при всём желании.
Да, надо было сжатие тоже на Shell писать, тогда бы засчитали.
> Да, надо было сжатие тоже на Shell писать, тогда бы засчитали.Получается, что фактически он ничего и не запилил, а просто посредствам скриптика управлял несколькими модулями/библиотеками.
С таким же успехом можно целый компилятор написать менее чем за минуту и в несколько строк скриптового кода. Только этот скрипт, по сути, будет просто вызывать соотв. модули и передавать им входные параметры.
> Получается, что фактически он ничего и не запилил, а просто посредствам скриптика
> управлял несколькими модулями/библиотеками.Докажи.
Доказывать то, что в статье и так сказано прямым текстом ?)
> Доказывать то, что в статье и так сказано прямым текстом ?)В статье написано, что он реализовал Git на Shell. Ты написал, что он ничего не написал.
Вот и докажи.
Ты это применять собрался? Просто умный человек поразвлекался немного
> Всем уязвимостей и ошибок из-за недостаточного экоанирования за счёт заведения.Главное, не смотреть на оригинал:
https://github.com/git/git
> C 48.8% Shell 35.7%
> экоанированияОшибки делают все. В этой вселенной, других программ нет
Вы забыли, закончить, своё предложение, запятой,
Как вы можете говорить об ошибках! Ведь написано на безопасном языке. Язык без указателей и переполнения буферов! Не то что ваши сишечки и пасты с "unsafe".
Мощно:read_int32() (
path="$1"
offs="$2"
i32=$(od -An -tdI -j"$offs" -N4 "$path" | tr -d ' ')
i32=$((((i32>>24)&0xff) |
((i32<<8)&0xff0000) |
((i32>>8)&0xff00) |
((i32<<24)&0xff000000)))
echo "$i32"
)
Зато название самокритичное
Идеально подходит для Git же
Посмотрите в словаре значение слова git, например. Оно и так достаточно подходящее (по традиции, автор назвал проект в честь себя).А в данном случае имя подходит практически для любого крупного проекта на чистом shell.
Мне лицензия понравилась
Кстати, как переводится это словосочетание?
Там в самом переводе неправильно написано.
Насколько я понял, эта лицензия производная от WTFPL:
wtfpl.net
https://ru.wikipedia.org/wiki/WTFPL
Погодите, да это же она и есть, но опеннетовский переводист зачем-то поменял аббревиатуру на какую-то свою.
Нет, это и есть WTFPL в чистом виде
У этой лицензии аж 2 две версии.
Возникают вопросы.
Первая версия WTFPL совместима со второй?
Совместимы ли эти версии с GPLv2 и с GPLv3?
Чем же, все таки, первая версия отличается от второй?
WTFPL, версия 2 (#WTFPL)Это безвольная неограничительная лицензия свободных программ без авторского лева, совместимая с GNU GPL.
Мы не рекомендуем эту лицензию. Если вам нужна безвольная неограничительная лицензия для небольшой программы, мы рекомендуем Лицензию X11. К более крупной программе, как правило, должно применяться авторское лево; но если вы твердо намерены пользоваться для нее безвольной неограничительной лицензией, мы рекомендуем лицензию Apache 2.0, поскольку она защищает пользователей от патентного предательства.
Мне МС три раза эту лицензию заворачивала. Сначала потому, что они не одобрили слово FUCK, второй раз они не одобрили слово F*CK, третий раз они не одобрили слово F**K. И наконец пропустили F--K.
Не, ну он молодец. Отстоял свою позицию в сраче, как мужик.
В наше время даже у самой дикой затеи найдутся свои последователи :). Ждём новостей вида "вот тут для прикола написали, а вот народ на это присел" :D.
Эта новость уже с бородой - Линус для прикола написал ядро, а народ на это присел.
Осталось теперь Microsoft купить этот shit, и сообщество получит shit от Microsoft-а. Чудная новость, пойду смеяться. Спасибо.
Винде которая shit уже 25 лет... (до 95 не в счёт - та вполне хороша была для своего времени и условий)
Чем Винда до 95й была хороша? Как раз 3.х и более ранние версии -- отличный пример абсолютной бесполезности. Количество софта тоже намекает на востребованность тех фич.
Юноша, вы с дуба рухнули что ли? 3.0 на момент выхода и пять лет после того была лучше всего, что только мог предоставить рынок!Вы, само собой, не застали те времена (а если я ошибаюсь и таки застали, значит работали где-то в ебенях, где ничего о компьютерах не слышали).
Лучше чем? Под пре-3.0 софта вообще не было. А под 3.х не было ничего уникального и важного (ну, может, разве что TWAIN). Да и вообще я не помню была ли совместимость между 3.0 и 3.1 Мне кажется что нихрена её не было. Там вообще всё сильно менялось от версии к версии.
> Лучше чем?Чем нифига, Карл!!! У нее всерьез конкурентов вообще не было. Ну не считать же MS-DOS за конкурент? Проприетарные *никсы к тому моменту были "где-то там", за совсем другие деньги у совсем других людей, *bsd тоже были не там, ... так мы постепенно узнаем почему Торвальдсу вдруг приспичило какую-то операционку под свой i386 зачем-то кодить :)
Конкурентов в чём? С защищённым режимом дружила только самая последняя -- 3.11 винда. Все предыдущие не предлагали ничего особо важного по сравнению с ДОСом. Многозадачность? Машины той эпохи (386-486) всё равно её не тянули в реально полезном виде.
Машины той эпохи отлично тянули многозадачность. Просто превосходно тянули многозадачность. Я даже больше скажу - с той эпохи в многозадачности ничего нового не придумали.И если бы современные программисты не писали говно вместо кода, мой смарт бы вытягивам вычислительные задачи половины города, а не тормозил при рендере одной новостной странички.
> Машины той эпохи отлично тянули многозадачность. Просто превосходно тянули многозадачность.Нет, машины были однозадачными. Любая нетривиальная программа практически полностью нагружала любую персональную машину того времени.
>Я даже больше скажу - с той эпохи в многозадачности ничего нового не придумали.А основной базис ракетостроения не менялся с 19 века. И что?
> А основной базис ракетостроения не менялся с 19 века. И что?Вообще, китайцы ракеты пуляли и 500 лет назад. Но вот где у них был жидкий кислород и турбонасосы, чтоли? Даже пусть и в XIX веке?
Что за бред? А, уже вижу кто пишет.Нет смысла пытаться объяснить упоротому, что такое "вытесняющая мультизадачность", "квант времени", "переключение контекста" и тому подобные вещи. Адью.
Да, смысла нет. Хотя бы потому что разговор не о типах многозадачности. Но чтобы понимать контекст разговора нужно иметь немного больше интеллекта чем для цитирования справочников.
> Машины той эпохи (386...ну загнул! i386 вообще вышел еще в 85 году! И прекрасно тянул и SunOS3, и BSD/OS - все многозадачные.
>> все многозадачные.Ну и что? В ДОСе тоже была эрзац-многозадачность через обработчики прерываний. Я не о теоретической возможности, а о практической применимости.
Нет, в те времена ты не мог запустить графический редактор, текстовый процессор, аудиоплеер, почтовик и комфортно пользоваться машиной. По очереди -- пожалуйста. Вместе -- нет.
>>> все многозадачные.
> Ну и что? В ДОСе тоже была эрзац-многозадачность через обработчики прерываний. Я
> не о теоретической возможности, а о практической применимости.
> Нет, в те времена ты не мог запустить графический редактор, текстовый процессор,
> аудиоплеер, почтовик и комфортно пользоваться машиной. По очереди -- пожалуйста. Вместе
> -- нет.Мог, запускал и пользовался. WinWord, 4й фотошоп (который покруче современного гимпа), Eudora для почты и XingMPEG Player... На 8Мб (не гб - мб!!!) ОЗУ все просто летало...
> Eudora для почты и XingMPEG Player... На 8Мб (не гб -
> мб!!!) ОЗУ все просто летало...Особенно фотошоп, ага. Помню сколько это взлетало даже и на 16 то. И там еще свой :) своп :) программный был. Вот как раз поэтому. Ну и летало оно только если иконку 32х32 редактировать. А открой файло чуть пожирнее - и он будет все время насиловать диск.
с 16-ю в те годы были... проблемы - большинству и 4 за счастье было :) Напоминаю - речь идет о МЕГАБАЙТАХ! :)
> с 16-ю в те годы были... проблемы - большинству и 4 за
> счастье было :) Напоминаю - речь идет о МЕГАБАЙТАХ! :)Для 4 фотошопа 4 мега как-то совсем уж ни о чем, чтоли. Только с свопом на полвинча, и спасибо если запустится вообще.
> ну загнул! i386 вообще вышел еще в 85 году!Так он и стоил тогда извините меня.
> И прекрасно тянул и SunOS3,
Проприетарный, стоивший кучу денег, и решительно недоступный простым смертным.
> и BSD/OS - все многозадачные.
А чего это тогда мистер Торвальдс подорвался Linux кодить, с аргументом "не нашел открытой операционки, которая бы работала на моем i386"? И это малость позднее 85 года было, btw :)
> А чего это тогда мистер Торвальдс подорвался Linux кодить, с аргументом "не
> нашел открытой операционки, которая бы работала на моем i386"? И это
> малость позднее 85 года было, btw :)Просто у него не было гугля - вот и не нашел. Хотя их было :)
> Просто у него не было гугля - вот и не нашел. Хотя их было :)Их как-то было очень специфично. Кто на 386 плевался, кто по судам бегал, отмахиваясь от AT&T, а работоспособной операционки простому парню с его 386 не завезли. Он прямым текстом сказал что если б был бсд который на его компе работает, он бы не попер линух кодить.
> А чего это тогда мистер Торвальдс подорвался Linux кодить, с аргументом "не нашел открытой операционки, которая бы работала на моем i386"? И это малость позднее 85 года было, btw :)Причин несколько, но основная, из-за которой к разработке Linux массово присоединялись, это неясность легального статуса BSD из-за наездов со стороны владельца прав на Unix. Тяжба закончилась практически полной победой разработчиков BSD, но было уже поздно.
> Многозадачность? Машины той эпохи (386-486) всё равно её не тянули в реально полезном виде.Отделение банка, работающее на одном 386DX50 под SCO - два десятка текстовых терминалов, это типа не в счет? :)
> С защищённым режимом дружила только самая последняя -- 3.11 винда.
Вся 3.х дружила с защищеным режимом 386-го, 3.1 просто перестала дружить с защищеным режимом 286-го. 3.0 дружила и с тем и с тем.
>это типа не в счет? :)Почему же не в счёт? В счёт. А вот ты внимательней читай пред ответом. Я говорю про персональные компьютеры. Я не возражаю, что на каком-то сервере вполне могло крутиться много крошечных клиентов к БД. Да и вообще мы в основном про Винду, которая по утверждению анонима была очень важна и полезна ДО 95-й версии.
> Да и вообще мы в основном про Винду, которая по утверждению анонима была очень важна и полезна ДО 95-й версии.Подтверждаю - до 95й венда была очень полезна. Начиная с 3.1 - собственно с 92-го по 95й это был единственный способ получить tcp/ip на ПК - загрузить винду. Так же использовать нормальные, стандартные векторные шрифты - загрузить винду и поставить PS-шрифты. Ну и про PageMaker, CorelDRAW и Photoshop забывать не стоит. :)
Начиная с 3.11 (for Workgroups), конечно же!
Неужели пропустили споры об имени для выпуска Linux-ядра версии 3.11?
неправда. В самой window 3.хх не было tcp/ip как класс, даже в 95 она была сбоку - там был "конкурент" AOL ))))))))): MSN — через телефон на BBS. Билли проспал tcp/ip ))))
Все ставили программку Winsock2, а под досом был свой стек (кажись Trumpet) который работал под 3.1, но под 3.11 м$ его сломала )))))
Я в конце 90х страдал фигней - "сделай набор программ для доски, чтоб можно было в инет ходить". Ну так - джаст фор лулз :) Так что я в курсе. :)
Только вот под доской реально все твои возможности сетевые начинались и закачивалсь на голом деде c FTN и UUCP... :) Все остальное - чисто джаст фор лулз, реально это использовать было нельзя.
> Конкурентов в чём?В GUI и метафоре рабочего стола, да еще чтоб запускалось на офисных персоналках а не майнфреймах и воркстэйшнах за дохреналионы денег.
> С защищённым режимом дружила только самая последняя -- 3.11 винда.
Вообще, IIRC чуть раньше. Но этот защищенный режим стал актуален лишь после пришествия в массы 386.
> Все предыдущие не предлагали ничего особо важного по сравнению с ДОСом.
> Многозадачность? Машины той эпохи (386-486) всё равно её не тянули
> в реально полезном виде.Они предлагали GUI. А дос что, он голый командлайн. Хомякам для запуска игрушек :) требовался хотя-бы нортон, чтоли, и это была единственная команда доса которую они знали.
Именно многозадачность в 3.х была декоративной, как и в DOS task swapper каком: повисшая программа мигом обламывала весь банкет, насильно ее спихнуть с проца - не того. И все-же у 3.х конкурентов толком не было - ну вот даже и не придумывается ничего с абстракцией рабочего стола работавшее на том же железе в том же время и имевшее хоть какое хождение.
Было все, что надо для офисной работы. Причем как для офисного планктона, мышкой тык-тык.Тебе чего в тройке не хватает то? Конкретизируй.
Стабильной работы как минимум. Без постоянных зависаний всей системы с потерей несохранённого. Даже Win9x висла по несколько раз в день, хотя в ней уже была вытесняющая многозадачность. В Win 3.x была кооперативная - любая повисшая программа вешала всю систему
> Тебе чего в тройке не хватает то? Конкретизируй.Ггг стабильности системы. Любая прога могла узурпировать проц - и все, облом. В win16 api программы отдают проц добровольно. И должны толкать "очередь сообщений". А, моя первая виндопрограмма про это была не в курсе, так что локап получился даже и в win95 :P. Да, он при этом даже окошко снятия задач показать не может. Пичалька, да? :)
>Юноша, вы с дуба рухнули что ли? 3.0 на момент выхода и пять лет после того была лучше всего, что только мог предоставить рынок!OS/2 3.0 Warp была несопоставимо лучше вантуза — который, как известно, есть инструмент для проталкивания говна.
OS/2 2.0 была труъ, Warp скатился
... которая вышла позже винды, была дороже винды и устанавливалась поверх винды :)
Не, ну вы хоть википедию идите почитать, дети, прежде чем писать о том, чего не знаете.само собой, разговор не про неюзабельные версии обоих продуктов.
Устанавливалась она на голое железо с пачки дискет (и не дай бог одна из них не читается).
Винда там была опциональна, чтобы виндовый софт запускать.
TCP/IP доставлялся в OS/2 дополнительно, был замечен в глючности.
https://me.me/i/start-process-for-writing-excellent-code-wri...
shithub!
> shithub!А на аватарке типа, логотип? Ну тогда цвет подкорректируй.
Я так понимаю, у него ещё есть примерно месяц и две недели на то, чтобы переписать zlib на sh.
Еще coreutils и еще что там он еще использует
shit pull ...
Бассейн навоза?
Бассейн - pool. На DHCP-серверах можно объявить :)
Скорее так:
Тяни, толкай, shit рукою подгоняй!
push же жь :D
За этим - к маководам
ради наличия таких команд как shit clone, shit add, shit push, shit merge стоит даже поставить... )
Занятный хак.
Следующая реализация будет на Питоне.
Полное название - питон здесь царь
> Полное название - питон здесь царьПри том по давней питонской традиции - плешивый и страдаюший раздвоением личности.
В этом году традиция сломалась — вторую личность таки убрали.
> В этом году традиция сломалась — вторую личность таки убрали.Еще не убрали - на смертном одре лежит, помирает как-то неторопливо, у гугла так львиная доля кода на этом до сих пор. Да и если копнуть, там и оставшаяся личность сама с собой договориться сроду не может.
Есть уже одна, hg называется.
Та, что есть, со своим форматом и протоколом репозитория, а будет с форматом Git.
> а будет с форматом Git.А нафуа? Там не кровати надо переставлять... :)
На питоне тормозить будет.
А на Баше сильно быстрей?
git in the shell: stand alone complex
stay away comrade
> stay away comradeЭ... а вот кстати да, интересно, а можно на shell написать shell? :)
Легко:
#!/bin/sh
exec /bin/sh "$@"
Я на шеле файл менеджер писал. Внешний вид в стиле nc, две панели, пародия на редактор, всё как положено. Конечно для баловства. Как ни странно, времени ушло меньше, чем планировал.Пользы в чистом виде нет, не смотря на то, что всё вполне хорошо работало. Но эти упражнения помогли сделать файл менеджер, не то что на stm32, но и на дохлом avr.
скил прокачал!
Зашарь, полезная ведь штука.
Не поделитесь? Студентов попугать/поучить. :)
Ценители башпортянок оценят
Какой ещё баш? Сказано тебе: POSIX shell!
на bash3+ хотя бы читаемо, и компактно. В разумных пределах.
На более деревяеянный шелл переносимо, и даже ещё читаемо гораздо лучше, чем брайнфак, но нахрена.Кстати, а зачем мне понадобился изврат с башем?
Дело было на море, был под рукой контроллер без компиляторов. Вот вечерами и баловался.
Мужчина, вы - идиот? Нет там вашего баша.
Ну ХЗ, Javascrint же есть для микроконтроллеров. Поэтому неудивительно, если кто и bash для них запилил.
А уже выросла поколение смузи-хлебов, которые не знают в чем разница
bash до sh по скорости работы как python до asm.
Наконец можно будет выкинут зависимость от гит) Пусть и не на проде.
> DWTFYWTv2Потрясающая лицензия. =)
>Код распространяется под лицензией DWTFYWTv2.Эта лицензия называется WTFPL.
http://www.wtfpl.net/about/
Сказано же do what the fuck you want public license, это подразумевает в частности смену аббревиатуры для лицензии по прихоти левой пятки.
Нет. Это значит. что можно делать что угодно с кодом, но не с лицензией.
А лицензия осталась без изменений.
Надо форкнуть
Не читал, но осуждаю
А некоторые на питоне такое много лет пилят. Mercurial называется
Критичные по быстродействию части уже на Rust.
О, тогда Меркурия точно фтопкy. Python хоть и тормозил, но он из коробки во всех известных дистрах есть.
Вы таки думаете, что прога на rust не будет работать без rustc?А прога на сях, соответственно, без gcc тоже не запустится?
Принесите-ка мне это rustc на e2k. Ну или на riscv.
> Принесите-ка мне это rustc на e2k. Ну или на riscv.Под последнего LLVM вроде пилят, значит и rustc постепенно его сможет.
Кстати валидный пойнт: сделав проц недоступным ALL и кодогенерацию проприетарной таки хорошо себя натянули везде в софте где речь заходит о генерации кода. Т.е. JIT у вас в пролете будет вообще ВЕЗДЕ, как я понимаю.
А вот так, пальцем в небо, ежели на этом вашем эльбрусе да браузером на вебфэйс этого вашего мэйлру или яндекса какого заползти, "ощущения" будут хотя-бы на уровне самого поганого PIII? А то современный JS без JIT штука в высшей степени печальная.
> Принесите-ка мне это rustc на e2k.Не, пока e2k стоит как крыло самолёта, и то лишь после подписания контракта кровью, раст там может появиться только лишь при активном субсидировании из казны РФ.
> Ну или на riscv.
$ rustup target list | grep riscv
riscv32i-unknown-none-elf
riscv32imac-unknown-none-elf
riscv32imc-unknown-none-elf
riscv64gc-unknown-none-elf
riscv64imac-unknown-none-elfЯ не проверял, работает это или нет. Врут всё?
Как в старые добрые времена.
Пробовал sh когда добавлял BSD систем и изменял распознавание Linux в os-prober который до сих пор игнорирует /etc/os-release:) и lsb-release распознает с ошибкой. В конечном счёте BSD я убрал, а для Linux патч в Лимбо здесь https://bugs.debian.org/cgi-bin/pkgreport.cgi?pkg=os-prober;...
Хорошее название, и конкурсы веселые!
помнится, когда-то для своего дистрибутива весом в 50 мб делал панель управления системой - веб сервер monkey и cgi-скрипты на busybox shell
Надо было придержать еще полтора месяца.
Прямо респект чуваку. И за название, и за способ реализации.
Настоящий джедай.
Лучше бы он свей допилил
Это он просто офигел с того чувака, продавшего скрипт на баше - и решил что если не продаст это, то уж хотя-бы похайпует! И ведь сработало, смотри ж ты. Ждем резкого роста популярности баша...
Осталось systemd на шелле написать
Причём, на init-скриптах
> Осталось systemd на шелле написатьЕсть уже, OpenRC называется. До ухода основателя был самобытный проект, после превратился в (основном безуспешные) попытки скопировать системду. В итоге тоже получился экспериментальный проект, не предназначенный для промышленного применения.
Вы хоть проект то открывали, эксперты?
Там до реализации гита как до Китая пешком
Ха! А я на шелле в районе 2000 года под BSD написал интерфейс к консольному плееру mp3. Управление, плейлисты, лазание по файловой системе, ID3 теги, всякое такое. Было весело!
> Ха! А я на шелле в районе 2000 года под BSD написал
> интерфейс к консольному плееру mp3. Управление, плейлисты, лазание по файловой системе,
> ID3 теги, всякое такое. Было весело!Дык что ж не релизнул? Эх, стартап, постиг тебя факап... :)