Запуск приложений на Лиспе из командной строки
Многие (не все) реализации Lisp поддерживают механизм save-image (или save-world или dump), который будет инкапсулировать тело кода и запускать функции при запуске. Как сказал другой автор, эти механизмы зависят от платформы и поставщика.
Большинство реализаций Lisp (все?) Имеют интерфейс командной строки. Поэтому традиционный подход к развертыванию приложения на Лиспе - это обернуть сценарий оболочки вокруг Лисп. Сценарий должен настроить программную среду и передать аргументы командной строки. Обычно контекст времени выполнения включает в себя файлы приложения для загрузки (через ASD или LOAD-FILE) и одну или несколько форм для оценки или функции для запуска.
Использование / расширение clbuild
Вы можете свернуть свой собственный сценарий или использовать некоторые существующие технологии. Взгляните на clbuild , который полезен по нескольким причинам. (Подробнее о функциональности и переносимости clbuild см. Ниже)
Вы можете расширить clbuild для запуска собственного приложения с аргументами командной строки. Например, чтобы загрузить систему «myapps» и запустить функцию «myapp1: start», вы должны вызвать clbuild следующим образом:
clbuild run any :myapps "\\(myapp1:start 1 2 3\\)"
Обратите внимание на символьный escape-синтаксис в скобках это необходимо для большинства командных интерпретаторов.
Альтернативный подход - перенаправить стандартный ввод из файла. Например:
clbuild run any :myapps < commands.lisp
функциональность и переносимость сборки
clbuild чаще всего используется для установки и запуска библиотек CommonLisp с открытым исходным кодом.
Это скрипт bash, поэтому он очень переносим. Средство загрузки использует такие программы, как CVS, Subversion, darcs, git и Mercurial.
По умолчанию clbuild запускает sbcl, но его очень легко настроить для запуска другого Lisp, такого как (бесстыдный плагин) Clozure CL (ccl) . Скопируйте clbuild.conf.default
в clbuild.conf
и отредактируйте clbuild.conf
, чтобы указать на исполняемый файл Lisp, который вы хотите использовать.