Вопрос

1) Каков правильный метод создания изображения в CCL? Или в чем точная разница между:

(compile-file "foo.lisp") а также (progn (load "foo.lisp") (save-application "foo"))?

2) Есть ли возможность загружать несколько изображений (предпочтительная командная строка)?

Это было полезно?

Решение

Компилятор файла в общих системах LISP создает представление исходного источника на каком -то виде машинного языка (в зависимости от целевого процессора) или для некоторой виртуальной машины (например, в CLIPS). Этот составленный файл может быть загружен в систему запущенной LISP с функцией загрузки и создает определения источника (функции, классы, переменные, ...) и выполняет другой код в файле.

Можно напрямую загружать исходные файлы (также используя функциональную нагрузку). Если LISP использует компилятор даже для загрузки форм, преимущество компилятора файла:

  • Загрузка скомпилированного кода должна быть немного быстрее
  • Некоторая проверка ошибок во время компиляции
  • Возможно, более агрессивный компиляцию с более быстрым кодом во время выполнения
  • Код может быть меньше (зависит)

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

Если вы хотите начать приложение LISP, у одного есть несколько вариантов:

  • Загрузите весь исходный код на стартап
  • Загрузите весь скомпилированный код при запуске
  • Загрузите изображение со всем включенным кодом

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

Давайте снова посмотрим на ваш вопрос.

(compile-file "foo.lisp")

Выше просто компилирует один файл в скомпилированный файл (FASL -файл, «Fast Load»). Эффект компиляции также заключается в том, что некоторая информация была записана в системе LISP, но определения файла недоступны. Тогда вам нужно загрузить скомпилированный файл.

(progn (load "foo.lisp") (save-application "foo"))

Выше сначала загружает файл. Обратите внимание, что LISP с инкрементным компилятором может собирать некоторые или все операторы в этом файле (CCL и SBCL делают это). Save-Application-это специфическая функция CCL, которая выбрасывает полное состояние LISP (минус файловые подключения, ...) и создает приложение, которое затем может быть запущено.

Если вы хотите создать приложения LISP, которые начинаются, как и другие приложения, Save-Application-это путь.

Если можно загрузить несколько изображений, зависит от системы. В CCL вы не можете. На липпи -машине можно загрузить базовое изображение, а затем несколько инкрементных изображений поверх этого.

Другие советы

compile-file Делает то, что он говорит: он собирает исходный файл в собственный код и хранит результат в другом файле. Файлы, составленные с compile-file может быть загружен с помощью load функция Компиляция - это просто оптимизация, поэтому эффект очень похож на загрузку исходного файла напрямую.

Напротив, основные магазины изображения Полное состояние из среды LISP, включая кучу LISP (со всеми загруженным кодом и данными), а также состояние выполнения, поэтому попытка загрузить несколько основных изображений в один экземпляр LISP не имеет никакого смысла. Как описано в руководстве, вы можете Сохранить основное изображение используя (ccl:save-application "image_name") куда image_name Имя файла изображения, который вы хотите создать. Основное изображение можно загрузить только путем запуска нового экземпляра CL Clozure и поставки файла изображения с помощью -I Опция командной строки.

Как правило, если вы пишете часть программного обеспечения, состоящего из нескольких исходных файлов, вы обычно действительно не хотите компилировать и загружать вещи вручную. Вместо этого рассмотрим Создание определения системы Файл и загрузка вашего программного обеспечения с помощью ASDF.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top