Clojure 是一个伞形项目,它包含许多名为 Clojure contrib 的额外库,这些库都存在于 GitHub 上的 Clojure 组织 下。
这些库使用与 Clojure 本身相同的贡献模型(贡献者协议、许可证和版权),以及 Clojure 核心团队维护的共享基础设施。
每个项目都有一个或多个所有者(通常是社区成员),他们决定库的方向、对补丁进行分类等等。项目所有者拥有完整的提交权限,并在构建盒子上对其项目进行身份验证的访问权限以进行发布。
Contrib 库是开源库,与任何其他开源 Clojure 库一样。它们的开发活动和质量差异很大,在整个生态系统中,它们可能不是其功能的最佳替代方案。您应该在使用之前对其进行评估,就像您要使用的任何其他开源库一样。
如果您发现某个库的活跃开发已经停止,并且您希望接管所有者角色,请联系 [email protected]。库的良好管理者通常是那些积极使用该库并了解其功能的目标和替代方案的人。
状态图例
活跃 - 正在积极进行定期开发
稳定 - 工作正常,但开发不规律
不活跃 - 不再开发,不会再进行任何操作
库 | 描述 | 所有者 | 状态 |
---|---|---|---|
常用函数的通用版本 |
Konrad Hinsen |
稳定 |
|
Monad 宏和定义 |
Konrad Hinsen |
稳定 |
|
用于异步编程和通信的工具 |
Rich Hickey |
活跃 |
|
实现各种缓存策略的缓存库 |
Sean Corfield |
活跃 |
|
Clojure 中的契约式编程 |
Fogus |
不活跃 |
|
提议包含在核心中的函数 |
不活跃 |
||
基于 miniKanren 的逻辑编程库 |
David Nolen |
稳定 |
|
模式匹配和谓词分派 |
David Nolen |
稳定 |
|
可操作的、可插拔的、记忆化框架 |
Sean Corfield |
活跃 |
|
基于 RRB-Tree 的向量 |
Michał Marczyk, Andy Fingerhut |
活跃 |
|
逐步类型化 |
Ambrose Bonnaire-Sargent |
活跃 |
|
统一库 |
Fogus |
稳定 |
|
AVL 树 |
Michał Marczyk |
稳定 |
|
本机编解码器实现 |
Alexander Taggart |
稳定 |
|
读取和写入 CSV 文件 |
Jonas Enlund |
稳定 |
|
手指树 |
Chouser |
稳定 |
|
可扩展的二进制数据表示法 |
Stuart Halloway |
稳定 |
|
随机数据生成器 |
Stuart Halloway |
不活跃 |
|
针对整数键优化的映射和集合 |
Alex Miller |
稳定 |
|
JSON 编码/解码 |
Alessandra Sierra |
稳定 |
|
优先级映射 |
Mark Engelberg |
稳定 |
|
延迟 XML 解析 |
Ryan Senior, Herwig Hochleitner |
稳定 |
|
操作拉链 |
稳定 |
||
类路径实用程序 |
Alessandra Sierra |
稳定 |
|
使用 Java Bean |
Sean Corfield |
活跃 |
|
基于 JDBC 的 SQL 接口 |
Sean Corfield |
稳定 |
|
JMX 接口 |
Nick Bailey |
稳定 |
|
常见组合函数的延迟序列 |
Mark Engelberg |
稳定 |
|
数学函数和数字塔 |
Mark Engelberg |
稳定 |
|
属性测试框架 |
Alex Miller |
活跃 |
|
测试数据生成和执行工具 |
Stuart Halloway |
不活跃 |
|
用于 Clojure 代码的分析器框架 |
Nicola Mometto |
活跃 |
|
tools.analyzer 的 JVM 特定传递 |
Nicola Mometto |
活跃 |
|
用于编写 Clojure 构建程序的函数 |
Alex Miller |
活跃 |
|
命令行参数处理器 |
Sean Corfield |
活跃 |
|
依赖项作为数据和类路径构建 |
Alex Miller |
活跃 |
|
用于 Clojure CLI 的 Deps 函数 |
Alex Miller |
活跃 |
|
为 deps.edn 项目创建依赖项图 |
Alex Miller |
活跃 |
|
用于检索、缓存和使用基于 git 的项目的工具 |
Alex Miller |
活跃 |
|
JVM 字节码生成器 |
Nicola Mometto |
活跃 |
|
日志记录工具 |
Alexander Taggart |
活跃 |
|
用于宏编写者的工具 |
Konrad Hinsen |
稳定 |
|
用于处理命名空间声明的工具 |
Alessandra Sierra |
稳定 |
|
网络 REPL |
不活跃 |
||
Clojure 读取器 |
Nicola Mometto |
活跃 |
|
用于管理 CLI 工具的 Clojure CLI 工具 |
Alex Miller |
活跃 |
|
执行跟踪 |
Luc Prefontaine |
稳定 |
此外,以下库是 Clojure 本身的依赖项,由核心团队直接管理。这些库使用与 Contrib 库相同的共享基础设施,因此在很大程度上相同。这些库的开发通常与核心语言本身的开发相关联。
core.specs.alpha 用于 clojure.core 的规范
spec.alpha 使用规范描述数据和函数的结构
spec-alpha2 正在开发中的下一个 spec 版本
最后,Clojure GitHub 组织中还有一些根本不是库的仓库。
clojure-site - 此网站,请参阅 网站贡献
brew-install - clj
安装程序构建
build.ci - 用于 contrib 的 Jenkins 项目构建器
build.poms - 用于 contrib 库的 Maven 超级 pom
clojure-api-doc - Clojure api 文档构建器
contrib-api-doc - contrib 库 api 文档构建器
在 Clojure 1.3 之前,Clojure 只有一个名为 clojure-contrib 的“包含电池”库,它包含许多由社区贡献的独立辅助命名空间。在 Clojure 1.3 期间,该库被拆分为今天存在的具有独立所有者的独立库。一些命名空间被视为实验性的,并没有被推广到任何公共库。Alessandra Sierra 在他的 帖子 中更详细地描述了这一点。
当时有一个想法是,一些 contrib 库最终可能会被提升到 Clojure 的核心库中。随着时间的推移,人们越来越希望将 Clojure 的核心库保持在较小的规模,并允许这些独立库保持独立,并以自己的速度发展。
另请参阅 Contrib 历史,了解 contrib 拆分的某些遗留历史。
在 Contrib 操作指南 中,您可以找到一些关于参与或为 contrib 做出贡献的较旧内容。