LINUX.ORG.RU

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

 ,


0

3

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

Поехали

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Deleted ()

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

Кстати, Deno.

anonymous ()

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

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

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

anonymous ()

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

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

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

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

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

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

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

vertexua ★★★★☆ ()

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

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

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

vertexua ★★★★☆ ()
Последнее исправление: vertexua (всего исправлений: 1)
Ответ на: комментарий от 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

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

bread ()