问题标签 [asdf]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
lisp - 为 Common Lisp 项目自动创建 ASDF 文件
有没有图书馆可以做到这一点?玩转 Common Lisp 似乎这将是降低新手入门门槛的最有用的东西之一。ASDF 似乎主要是为部署而设计的,而不是为快速原型设计和开发而设计的。关注 comp.lang.lisp 上的线程,似乎人们同意 CL 的包系统功能强大,但缺乏 Python 死的简单模块系统之类的易用性。从某种意义上说,它是为功率而不是可用性而设计的,这是失败的。
很高兴知道我是否错了。如果我是对的,我很惊讶没有人尝试在 ASDF 之上构建类似 Python 模块的系统。
deployment - ASDF 或其他独立于家庭和站点配置的模块系统
我正在尝试找出实际应用程序开发的最佳实践。我无法理解如何正确配置第三方库以部署为独立包。似乎 ASDF-INSTALL 和 ASDF 旨在将库安装到家庭或站点,从而改变开发平台的状态。如果我正在开发一个服务器端应用程序并且我想为盒子上的整个 CL 安装管理这些依赖关系,那很好。
但是,如果我想创建一个独立的应用程序,通过安装脚本进行部署,并在它自己的 CL 实例中单独运行呢?我希望避免更改任何其他应用程序的 CL 实例或目标系统配置(即覆盖其他应用程序所依赖的库的其他副本)。在 Java 中,我所要做的就是创建一个包含这些库的包含目录并设置我的 CLASSPATH。假设我没有安装自己的 CL 运行时,而是使用系统上的东西,我如何在 CL 中获得相同级别的隔离?
我突然想到这是所有动态编译/解释语言的常见问题,因为运行时的生命周期将比运行时运行的任何特定应用程序(即 Ruby 或 Python)长,并且应用程序将共享相同的库加载状态. 我对这种语言没有任何经验,所以最好的做法可能是盯着我的脸。
IDK 如果这将是特定于实现的,但我正在运行 Clozure CL。
编辑:
拉马伦:
我去看看泥球。谢谢你。
安装库与我想要的相反,因为安装意味着修改主机系统状态。我认为关键必须在你的最后一段。您如何创建启动脚本以将中央注册表设置为隔离目录?是否可以使用 ASDF-INSTALL 将内容提取到所述目录中?如果您的 CL 实现的基本映像不包含 ASDF(Clozure 默认具有 ASDF,但 CLISP 将如何做),您如何引导整个事情?
我也在考虑开发团队。在我创建一个新的 CL 项目存根并对 CVS 或 SVN 进行初始提交后,其他开发人员如何将其签出到他们的本地环境并使用它?即使假设每个人的个人资料/网站启动中都有 ASDF,其他开发人员也可能在他们的central-registry中有一组不同的库。我们不应该仅仅为了一起工作而同步。必须有一种干净的方式来从 Emacs/SLIME 启动项目特定的 CL 运行时实例,并准确地加载项目中指定的内容,不多也不少。
如果在线上有任何最佳实践资源,使用 CL 或任何其他语言,我将很高兴推出自己的解决方案并将其开源。
路易斯:
SAVE-APPLICATION 适用于部署,但不适用于我概述的多开发项目存根。
编辑2:
面包车:
版本依赖性正是这个问题的原因。如果我正在开发 Perl 或 Ruby Web 应用程序,那么我可以依靠 Web 管理员的存在来管理这些依赖项。为 Lisp 是外来技术的零售或中小型企业开发应用程序(我无法说服他们“提高”他们的 IT 组织来管理它),这种方法是不可接受的。
昨晚我能够通过创建一个项目级 .lisp 文件来获得我想要的东西,该文件加载它自己的项目特定的 ASDF 实例,设置一个项目本地中央注册表,并手动下载依赖库(没有 ASDF-INSTALL ,这对于 CLSQL 和 Weblocks 来说是痛苦的级联依赖)。从开发工具的角度来看,它仍然不理想,因为我不得不从我的家和网站上删除所有对 SLIME 和 Clozure 本身的自定义。此外,共享依赖项也没有解决(CLSQL 和 Weblocks 都使用 MD5)。
Java 具有类加载器隔离,这就是它解决版本依赖问题的方式。然后是如何将所需的库放入项目中的单独问题(a la Maven)。前者是核心语言问题;后者与工具有关。我将编写一个 SLIME 扩展,它执行 ASDF-INSTALL 对项目包含目录(a la Maven)所做的工作,并修改 lib 源代码以拦截 defpackage 调用,以某种方式预先添加一个 gensym 字符串以强制隔离。我知道,这种方法有很多漏洞,而且我对封装规范的了解还不够,不知道我能把它埋到多深。
我对 Python 一无所知,但我知道存在零售级应用程序;我一直在使用 MusicBrainz Picard。我将研究 Python 是如何做到的。
lisp - 从命令行安装 asdf 库
来自 Perl 背景,我不得不说我更喜欢cpan Foo::Bar
必须启动 sbcl,(require :asdf-install)
最后是(asdf-install:install :foo-bar)
. 周围还有比这更方便的吗?
lisp - ECL 如何在可执行文件中包含 ASDF 依赖项?
我有这个 ecl-make.lisp:
(stumpwm-system::*components*
是我对 的补充stumpwm.asd
,用于在该文件中生成 ASDF 组件以及上面正确排序的文件列表。)
它只是失败了:
我已经到了只解决以前尝试引入的错误的地步。如果您使用 ECL 构建了一个包含依赖项的程序,请告诉我您是如何做到的。我看到了如何在启动时stumpwm
启动和加载依赖项(即使没有加载 my ~/.eclrc
,它会告诉 ASDF 在哪里找到这些依赖项)。但这应该是可能的。
lisp - SBCL 和 LangUtils
有没有人让 langutils 与 sbcl 一起工作?
lisp - ltk 的问题(常见的 lisp)
我使用 asdf-install 将 ltk 安装到 Steel Bank Common Lisp,但我什至无法开始使用它 V_V。下面的代码是文档中最简单的示例,几乎是逐字复制的。
这是我从 sbcl 收到的错误消息:
zip - 错误:未找到组件“zip”
我正在尝试安装 zip 库。
眼镜:
快板 CL 8.2
ASDF(可能包含在 Allegro 中)
Mac OS X 10.6.4
MacBook Pro 5,1
奇怪的是,ASDF 似乎没有在线搜索 zip。它只是放弃。