技术文章

了解最新技术文章

当前位置:首页>技术文章>技术文章
全部 4 常见问题 0 技术文章 4

使用 Wolfram 语言 Paclet 存储库更容易分享您的创作

时间:2023-06-16   访问量:1019

自从我们于 2019 年 6 月发布Wolfram 函数存储库以来,我们经常遇到这样的情况:有人想要分发无法轻易包含在单个独立函数中的内容。答案通常是创建一个 paclet,Wolfram 语言相当于其他编程语言中所谓的包。Paclets 已经存在了很长一段时间。Wolfram 开发人员经常使用它们来交付和更新系统级功能,并且自 Wolfram 语言版本 12.1 以来就已记录在案。

编程语言拥有一个中央存储库也变得越来越普遍,用户可以在其中发布和共享他们的包。现在,我们很高兴地宣布为我们的用户提供一个可以做同样事情的地方:Wolfram Language Paclet Repository到目前为止,Wolfram 语言代码包的共享都是在一小部分站点上完成的,没有一个一致的、简化的系统来统一它们。使用 paclets 和 Paclet Repository,我们的社区可以找到并分享为与 Wolfram 语言一起工作而制作的任何类型的内容。

但什么是小数据包?

Paclets 是一种打包 Wolfram 系统功能单元的方法,因此可以轻松找到、分发、更新和加载它们。许多 paclet 包含 Wolfram 语言包,但 paclet 可以像单个文档笔记本一样简单,一直到具有多个包、文档、前端调色板、库等的大型应用程序。Paclet 已用于分发原始数据、函数、样式表、调色板笔记本甚至全新的使用界面。

安装后,小程序将无缝且持久地集成到您的 Wolfram 语言系统中。如果 paclet 提供了新功能,它们就可以通过一行代码在未来的任何会话中加载。如果 paclet 提供样式表或调色板,则可以立即在相关菜单中找到它们。

存储库功能

便于使用

使用 Wolfram 语言 Paclet 存储库有什么好处?首先,很容易从存储库中查找、安装和更新内容。每个 paclet 都有自己的一组页面来显示其所有文档和示例。在每个 paclet 的首页上,我们显示了安装它所需的代码。您不需要单独下载文件并将它们移动到特定目录——这一切都是自动处理的。paclet 立即准备好在当前会话以及所有未来会话中使用:

安装小包的说明

大多数 paclet 提供函数和符号以供您自己的 Wolfram 语言代码使用。安装后,paclet 的 Wolfram 语言代码仅可用且尚未加载;像任何其他包一样用Needs加载它。每个 paclet 的首页通常也会包含用于加载其主要内容的“需求声明”。

预览

如果您想试用 paclet,但又不想将其永久安装到您的系统中,我们也已将其简化。Paclet Repository 中的所有示例都是单击复制并使用PacletSymbol访问 paclet 的符号:

小包符号

细胞[“\<\PacletSymbol[\"Wolfram/CodeEquivalenceUtilities\", \\"Wolfram`CodeEquivalenceUtilities`CodeEquivalentQ\"][RandomInteger /@ \范围[5], 数组[RandomInteger, 5]]\\>", "输入"]

从表面上看,PacletSymbol只是一种提取符号全名的便捷方式:

小包符号

Cell["\<\PacletSymbol[\"Wolfram/CodeEquivalenceUtilities\", \\"Wolfram`CodeEquivalenceUtilities`CodeEquivalentQ\"]\\>", "Input"]

在幕后,PacletSymbol做了很多工作,以减少使用 paclets 对您的系统的影响。如有必要,它将下载 paclet,并暂时使其在您的系统中可用。如果您退出会话,系统将完全忘记该小数据包。PacletSymbol还将为您完成在 paclet 的上下文中调用Needs的工作,但这样做的方式不会更改$ContextPath如果有多个 paclet 对其符号使用相同的名称(通常称为“阴影”),这将很有用。

声誉、信任和安全

与 Wolfram Function Repository 或Wolfram Data Repository不同,向 Paclet Repository 提交的内容在公开之前不需要 Wolfram 工作人员的审查。这意味着在使用 Paclet Repository 中的 paclet 时,信任和审查非常重要。这就是为什么我们在每个 paclet 的名称中包含开发者的发布者 ID 的部分原因。

在每个 paclet 的主页上,在示例部分下方,您可以找到一些信息,以便在决定是否信任该 paclet 时使用。首先是发布者 ID,它内置于每个 paclet 的名称中。资源系统中的每个发布者都有一个页面,其中列出了他们所有其他 paclet 作为他们在我们的存储库中发布的其他内容:

来自 WolframChemistry 的已发布资源

我们还鼓励所有作者提供指向其源代码的链接。此链接可用于验证 paclet 的功能。它还可以作为作者允许其他人为他们的项目做出贡献的地方:

数据包源示例

Paclet Repository 中的一个功能是能够将 paclet 评为好并给它一个“星”。随着时间的推移,这将揭示哪些 paclet 被社区广泛采用并受到高度重视。我们将来会将此功能扩展到其他存储库:

CodeEquivalenceUtilities 评级

我们还提供了一些作者可以用来标记他们的 paclet的披露类别。当 paclet 可能与笔记本外部的文件交互时,披露旨在传达信息。例如,提供三角函数集合的小数据包不太可能有任何披露。但是,如果文件在您的本地系统上,则创建或编辑文件的 paclet 应该有“本地文件”披露,如果文件位于 Wolfram Cloud 中,则应有“Wolfram 帐户”披露

披露选择的例子

我们确实认为披露是强制性的,任何使用 Wolfram 语言这些特性的 paclet 都应该让用户知道。如果您发现任何 paclet 没有正确披露这些行为,您可以报告它们以供 Wolfram 工作人员审查。

我什么时候应该做一个小包?

如果您曾经向 Wolfram 函数库提交过函数,您可能想知道函数和 paclet 之间的分界线。在很多情况下,您想要的功能可以包含在一个函数中。对于这样的功能,小数据包会增加更多的复杂性而没有太多好处。如果您正在为 Wolfram 产品创建任何类型的附加内容,而这些内容不适合我们的其他存储库之一,您应该以 paclet 的形式创建它。

在以下情况下创建小数据包很有用:

如何制作 Paclet?

制作 paclet 的过程太大了,无法在本文中涵盖。如果您想编写 paclet,我们创建了此文档以帮助您开始为 Wolfram 语言 Paclet 存储库创建 paclet。它将向您介绍创建 paclet 的基本步骤和指南,无论您是计划将 paclet 发布到存储库还是只想将其直接分发给一个小组,都可以使用这些步骤和指南。

我们还创建了一个Paclet 资源定义笔记本,其中包含许多用于组织和构建 paclet 的有用工具。它将帮助您组织文件、填写 paclet 的元数据、构建文档并构建 paclet 本身以进行分发。将 paclet 提交到存储库需要使用定义笔记本,但笔记本也可用于通过云帐户共享或仅用于创建可分发文件。

还有什么是新的?

在准备对社区完全开放的 paclet 存储库的过程中,我们必须做大量的基础工作。创建 paclet 是一个内部过程,我们不得不重新考虑每一步,有时还会质疑我们的基本假设。在版本 12.1 中,我们开始正式记录数据包系统。在版本 13.0 中,我们引入了更多用于创建小数据包的工具、一组文档工具以及用于使用$ContextAliases处理上下文和阴影符号的更多选项

我们在 paclet 系统和 Wolfram 语言 Paclet 存储库方面的工作远未完成。将来,您可以期待在可发现性、搜索和安全性方面的改进,以及用于处理数据包相互依赖性的工具。与此同时,我们非常自豪能够将如此强大的工具带到我们社区的手中,并期待看到您所创造的成果。


上一篇:计算天文学:借助 Wolfram Technologies 学习星空之外的知识

下一篇:没有了!

发表评论:

评论记录:

未查询到任何数据!

在线咨询

点击这里给我发消息 售前咨询专员

点击这里给我发消息 售后服务专员

在线咨询

免费通话

24小时免费咨询

请输入您的联系电话,座机请加区号

免费通话

微信扫一扫

微信联系
返回顶部