Автор: | Admin |
Дата: | 06 мар 2009 22:39 |
Заголовок сообщения: | Сравнение ASDF и LispWorks Common Defsystem |
Большая часть библиотек с исходным кодом на языке Коммон Лисп сопровождается файлом определения системы в формате ASDF. В LispWorks встроен собственный способ определения систем исходных файлов - макрос lw:defsystem и сопутствующие функции. Стоит ли их использовать, несмотря на наличие более универсальной и работающей на разных реализациях Лисп asd:defsystem? За годы работы у меня сложилось впечатление, что стоит. 1. Определение в специальном пакете. asd:defsystem рекомендуют помещать в собственный уникальный пакет. В целом, это слегка обременяет пакетную систему Лисп-реализации и выглядит не очень элегантно. Можно этого не делать и помещать в пакет cl-user, но это грозит конфликтами символов. lw:defsystem не требует пакета - все будет работать без проблем в пакете cl-user. 2. Разделение скомпилированных файлов. lw:defsystem позволяет отдельно хранить бинарники в собственных папка в зависимости от опций, например: Код: (lw:defsystem my-system (: object-pathname (lw:current-pathname #+debug "bin/debug/" #- debug "bin/")) ...) Значит, отладочная версия проекта всегда будет храниться отдельно от окончательной, причем обе отделены Напротив, asd:defsystem помещает бинарники в тот же директорий, где и исходные Лисп-файлы. Разделение разных "версий" скомпилированных файлов невозможно встроеннымы средствами. Можно, конечно, определить подкласс asd:system, но это будет уже другая система Если кому интересно, как, спрашивайте. В целом, lw:defsystem берёт начало от Лисп-машин и лучше подходит для процесса разработки. Встроенный в LispWorks IDE браузер систем обеспечивает наглядность и дополнительные удобства. Для дистрибуции же готового проекта asd:defsystem вполне достатотчно. При необходимости можно использовать утилиту из комплекта lw-add-ons, позволяющую транслировать "на лету" определение системы: asd:defsystem -> lw:defsystem. | |
Автор: | Admin |
Дата: | 16 апр 2010 17:00 |
Заголовок сообщения: | Сравнение ASDF и LispWorks Common Defsystem |
Дополнения. 3. ASDF не поддерживает логические пути (logical pathnames). Это значит, что если требуется компонент с исходником вне директория системы, в опции :pathname необхдимо указывать "физический" путь. Это весьма странно, ибо логические пути - весьма гибкий механизм, почти незаменимый, если Вы отлаживаетесь на разных компьютерах. Пример задания логического пути: :pathname #P"LIB:doc;settings;general.html" 4. В LispWorks 6.0 встроена поддержка ASDF. Определение системы может быть визуализировано в браузера систем (System Browser). Более полная версия статьи помещена в новый раздел сайта "Лиспа у Истоков" -> Русский LispWorks. | |
стр. 1 из 1 | Часовой пояс: UTC + 3 часа |
Разработка сайта Исток-Системы (www.ystok.ru) | Powered by phpBB (www.phpbb.com) |