LINUX.ORG.RU

Выбор встраиваемого интерпретатора

 , ,


0

4

Привет! Поделитесь опытом внедрения разных встраиваемых реализаций.

Есть идея для одного приложения. Планирую, что оно будет поставляться в двух вариантах:

  • Как обычное веб-приложение для развёртывания и запуска на сервере.
  • Как статический бинарь (appimage?) со всем кодом внутри. «Запустил и работает», для локалхоста.

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

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

Вспомнились такие встройки:

  • Для Ruby: mruby
  • Для Python: micropython
  • Для JS: quickjs, duktape, десятки их

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

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

P.S.:

Жирный V8 в appimage тащить не хочу. Электрон не предлагать.

★★

Последнее исправление: wandrien (всего исправлений: 1)

В чем проблема сразу писать на Python, JS?

QuickJS выглядит удобным по сравнению с другими JS-движками. А Lua выглядит надежным и распространенным.

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

electron

Niet!

Такого рода GUI мне не нужен. Морду можно показывать в дефолтном браузере пользователя.

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

Мой вопрос в том, какой инструмент выбрать.

  • Docker
  • Podman
  • и т.п.
vvn_black ★★★★★
()
Последнее исправление: vvn_black (всего исправлений: 1)
Ответ на: комментарий от ya-betmen

Нет, на lua я, пожалуй, не осилю веб-приложение писать просто из любви к искусству.

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

Выбор встраиваемого интерпретатора
Как статический бинарь (appimage?) со всем кодом внутри. «Запустил и работает», для локалхоста.

Зачем тебе встраиваемый интерпретатор для приложения на локалхосте? Бери обычный нужный тебе интерпретатор нужной версии и запихивай в свой appimage\snap\flatpak. В этом случае, твое приложение будет способно работать как в изолированном контейнере так и без него, без потерь возможностей самого интерпретатора.

Встраиваемый интерпретатор, в большинстве своем, он на то и встраиваемый, что адаптирован для работы на разных платформах (в частности микроконтроллерах) а не для того что бы его встраивать в свое приложение. Соответственно, такие интерпретаторы, как правило имеют свои ограничения.

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

И нахрена мне тащить огромный ruby или nodejs, когда само приложение будет не больше сотни килобайт кода?

Привыкли палить из пушки по воробьям.

Это некоммерческий проект. Я лучше сделаю компактно и красиво и без титанических зависимостей сборки.

wandrien ★★
() автор топика
Ответ на: удаленный комментарий

Сделал красиво не на V8.

resurtm ★★★
()

встройка то куда?

глядя на микропитон в списке думается о контролешках, но так ли это?

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

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

Ты вероятно не знаешь как работают встраиваемые интерпретаторы. Полистай документацию к тем ВИ которые ты перечислил, и думаю твой вопрос отпадет сам по себе. Успехов.

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

Нет, обычное приложение под линукс.

Мне от среды нужна только работа с файлами и каталогами, даже БД не надо.

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

ну тогда я выше предложил, подождем остальных мнений

Morin ★★★★
()

логика приложения в браузере будет всяко на js.

Альтернативой жсу может быть разве что c# со своим blazor. На нём же, кстати, можно написать нормальное десктопное приложение - через avalonia, uno и xamarin на выбор. Даже appimage не потребуется - .net core умеет компилироваться в single-file executable, почти как голанг

Ford_Focus ★★★★★
()
Последнее исправление: Ford_Focus (всего исправлений: 1)

Не хочешь Lua? Бери Chibi Scheme!

http://synthcode.com/scheme/chibi/

Ruby

Почти лисп.

количество проблем по поддержанию совместимости кода приложения одновременно с мейнстримовым интерпретатором и со встраиваемым?

Наименьшее. Интерпретатор один и тот же.

Жирный V8 в appimage тащить не хочу.

Chibi влезет в мегабайт.

Мне от среды нужна только работа с файлами и каталогами

http://synthcode.com/scheme/chibi/lib/chibi/filesystem.html

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

Точнее QuakeC.

Владимир Мономах.

anonymous
()
Ответ на: удаленный комментарий

А ты видно анчихрист

Это точно.

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

pyinstaller же! Правда экзешники жирные получаются, но зато никакого пердолинга с Си/Си++.

shkolnick-kun ★★★★★
()
Ответ на: комментарий от wandrien

Мне от среды нужна только работа с файлами и каталогами, даже БД не надо.

Нода.

javascript
()

forth если упороться.

для всего остального js.

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