Создать тему  Создать ответ 
Common Lisp: сервер для SBCL
13-05-2015, 23:23    
Сообщение: #1
Quasus

Гоф-фурьер
Сообщений: 625
Зарегистрирован: 17.06.12

Common Lisp: сервер для SBCL
Раз я писал о возможности настройки лиспов для скриптования.
http://aluarium.net/forum/thread-944.html
Основная идея там была в том, чтобы набить библиотек в образ и использовать cl-launch для генерации скриптов-обёрток.

На самом деле не могу сказать, чтобы этот подход мне нравился. Архетипическое приложение на CL - это большая долгоиграющая система, которую можно хакать в рантайме. Иначе говоря, сервер. Теоретически его написать, кажется, не так сложно: лисп должен слушать на сокете, а клиент должен отправить ему форму для вычисления, после чего отправлять свой стандартный ввод в сокет и читать из сокета.

Есть такая штука как scriptl
http://quickdocs.org/scriptl/
которая по описанию мне нравится, но которую я никак не мог скомпилировать (ей нужна лисповая библиотека iolib, которой нужна какая-то нестандартная сишная библиотека, которую я не хочу ставить).

Я, наконец, написал кое-какой сервер для SBCL и клиент к нему. Идея такова, что для запуска написанных на лиспе программ не нужно было бы запускать отдельный лисп-процесс для каждой, а вместо загрузить весь софт в сервер на старте и связываться с сервером через клиент. Среди прочего софта можно загрузить и slime, и хаканье в рантайме осуществляется обычным способом, через Emacs vim.

Фичи:
  • *standard-output* и *error-output* направляются в stdout и stderr клиента;
  • поддерживается код возврата;
  • поддерживаются командные аргументы;
  • минимальные зависимости.
Лежит здесь:
https://sourceforge.net/projects/trivialsbserver/
Makefil'а пока нет, так что как ставить, неясно.

В качестве дополнения планируется сделать удобной работу с пользовательским софтом: в первую очередь, автоматически генерировать скрипты-обёртки для клиента.
Найти все сообщения
Цитировать это сообщение
28-06-2015, 02:36    
Сообщение: #2
Quasus

Гоф-фурьер
Сообщений: 625
Зарегистрирован: 17.06.12

RE: Common Lisp: сервер для SBCL
Перекочевал на github:
https://github.com/quasus/lispserver
Код растёт потихоньку.

Кстати, подумалось, что если потоки выполнения будут изменять рабочую директорию процесса, они могут конфликтовать друг с другом, так что пригодность всякого сервера для административного скриптования несколько ограничена.
Найти все сообщения
Цитировать это сообщение
12-07-2017, 01:30    
Сообщение: #3
Quasus

Гоф-фурьер
Сообщений: 625
Зарегистрирован: 17.06.12

RE: Common Lisp: сервер для SBCL
В реализации lispserver-а был такой глупый момент, что клиент старался сразу съесть весь доступный стандартный ввод, пока тот не кончится, что неправильно. Нужно читать столько, сколько просят. Так что я всю эту красоту переписал.
https://notabug.org/quasus/lserver
На данный момент находится в состоянии «работает для автора».
Найти все сообщения
Цитировать это сообщение
Создать ответ 


Переход:


Пользователи просматривают эту тему: 1 Гость(ей)