LINUX.ORG.RU

Язык для скриптов из одного файла

 ,


0

3

Всегда есть shell, python, perl. Но вот я решил повысить планку и добавить еще несколько нетипичных требований помимо стандартных, может что-то и найдется

Поехали

  • Как у всех языков для скриптов - поддержка shebang
  • Статическая типизация
  • Быстрая сборка
  • Высокая производительность
  • Автоматическое закачивание зависимостей если они отсутствуют со своего сервиса пакетов на основе текста того же единственного файла с shebang
★★★★★

Пока что по всему кроме подкачивания зависимостей подходит OCaml. Если подскажете и в нем какую-то магию, скажу спасибо.

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

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

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

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

И статическую типизацию прогонит он же? Просто Python очень на поверхности, но я думал о чем-то что умудряется за миллисекунды собрать бинарь, как OCaml/Go

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

Фанбои D рекламируют его, используя аналогичные фразы. Но последнего пункта может совсем не быть, не в курсе.

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

Ну если в то упрется, то я в три присеста напишу утилитку, которая одним махом просканит и прохеширует сорц, определит путь для целевого бинаря в кеш-каталоге. Если он есть и новее, то сразу запустит.

Если нет, то экстрагирует комментарии в файл сборки, скачает зависимости, соберет и положит куда надо.

И тут тебе хоть С++ используй если ты двинулся (напиример с conan).

Я просто как-то подумал, что учитывая что это все не rocket science, то может кто-то уже такое напейсал

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

Если всерьез его потом использовать как замену shell скриптов, то нужна еще фаза SubstrateVM. Я бы оооочень не хотел 1000 раз в xargs запускать и тушить jvm

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

1000 раз в xargs

Вообще, скрипт лучше писать так, чтобы он умел принимать текстовый поток, а не связываться с вот этим вот

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

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

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

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

моя утилита - хитрый prompt для bash

Rust.

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

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

Deleted
()

Нет такого. Уже искал. Разве что reason/typescript. Но оно от лукавого.

RazrFalcon ★★★★★
()

Автоматическое закачивание зависимостей если они отсутствуют со своего сервиса пакетов на основе текста того же единственного файла с shebang

Кстати, Deno.

anonymous
()

D и его rdmd. Автоматическое скачивание зависимостей – не в курсе, раньше не было, но раньше и dub-а для D не было.

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

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

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

а там в nix'е можно устанавливать всё в стандартный префикс (/bin, /usr/bin) и лишь для некоторых пакетов задавать свой префикс?

teod0r ★★★★★
()

Питон с сишкой вполне удовлетворяют перечисленному.

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

D по всем пунктам подходит, но для работы последнего в системе помимо компилятора должен быть ещё dub

SR_team ★★★★★
()

Какие еще зависимости ты собрался закачивать? Это уже будет не скрипт, а целый прожэкт.

bread
()

Автоматическое закачивание зависимостей если они отсутствуют со своего сервиса пакетов на основе текста того же единственного файла с shebang

в *опу такие сриптики

ты хочешь docker без docker или вирусы писать?

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

Ну с современными пакетными менеджерами можно наимпортиррвать 20 пакетов говна, а сам код будет 100 строчек. И так можно многого достичь

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

Хочу всякую скриптятину вроде панелей i3wm писать однофайловыми скриптами, но на взрослых языках

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

20 тонн говна, а сам код будет 100 грамм.

anonymous
()

Почти все хотелки, это не про скрипты.

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

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

С другой стороны если на всех хостах нода.жс то можно стрелять в пятку её методом.

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

Так оно ж зависимости не качает. Я же говорю, я на коленке могу настрочить штуку которая например package.json (условный) из комментов будет экстрагировать и собирать все во временном кеше. В следующий раз сверять хеши скрипта и сразу запускать бинарь.

При таком раскладе мне и Python скрипт круче через эту штуку пускать, могу проверить типы и байткоды сгенерировать

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

Из скриптов остаются баш и более ничего.

Какой еще баш, только posix sh и perl. Хватит всем.

bread
()

D умел из шебанга. когда я проверял, компиляция + запуск были на глаз мгновенные, ну быстрее питона точно. правда в шебанг режиме у D были оптимизации отключены, на долгом cpu-интенсивном коде оракловская jit жаба его обгоняла (правда она и C может обогнать). но жава запускалась дольше, за заметное на глаз время.

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

Скучнотища, я именно что подза*****ся, хочу писать скрипты на C++/Rust/OCaml/Go. Все по одному файлу, но без компромиссов в плане необходимости пересборки руками, каталога с кучей сорцов и например производительности, это должен быть релиз билд. И зависимости должны качаться

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

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

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

чем питон-то не устраивает?

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

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

А где ты видел, чтобы зависимости сами выкачивались? Везде приходится колупаться с пакетными менеджерами. Да и не хватало еще, чтобы скрипт при запуске чего-то там качал. А так gorun почти то, что нужно, как мне кажется. И язык подходящий для утилит, и быстрая компиляция.

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

Если сделать alias для действий след. последовательности:

  1. Установка временного GOPATH;
  2. Скачивание зависимостей с помощью go get -d ./ (если на ПК уже есть какая-то версия, заново ничего не закачивается);
  3. Запуск необходимого файла путём go run,

будет сильно медленно?

А вообще, в Go давным-давно обещали поддержку сценария «Go как скрипт» (вроде, сам Пайк где-то в рассылке что-то такое и упоминал). Я не слежу, есть успехи в этой области?

anonymous
()

https://docs.haskellstack.org/en/stable/GUIDE/#script-interpreter

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

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

Да я понял, но ты хочешь странного. Сделай сам.

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

Концептуально да, но хуже Groovy ад ничего не выплевывал на Землю. Да, я думаю это самое убогое что я видел

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

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

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