Clojure

Contrib 库

Clojure 是一个伞形项目,它包含许多名为 Clojure contrib 的额外库,这些库都存在于 GitHub 上的 Clojure 组织 下。

这些库使用与 Clojure 本身相同的贡献模型(贡献者协议、许可证和版权),以及 Clojure 核心团队维护的共享基础设施。

  • 源代码控制 - GitHub 上的 Git 库

  • 问题 - JIRA

  • 开发模型 - JIRA 中的补丁,不使用 PR

  • 持续集成 - 每个项目中的 GitHub actions

  • 文档生成和托管 - Autodoc 和 GitHub 页面

  • 构建 - Maven,部署到 Maven Central,groupId 为 org.clojure

每个项目都有一个或多个所有者(通常是社区成员),他们决定库的方向、对补丁进行分类等等。项目所有者拥有完整的提交权限,并在构建盒子上对其项目进行身份验证的访问权限以进行发布。

Contrib 库是开源库,与任何其他开源 Clojure 库一样。它们的开发活动和质量差异很大,在整个生态系统中,它们可能不是其功能的最佳替代方案。您应该在使用之前对其进行评估,就像您要使用的任何其他开源库一样。

如果您发现某个库的活跃开发已经停止,并且您希望接管所有者角色,请联系 [email protected]。库的良好管理者通常是那些积极使用该库并了解其功能的目标和替代方案的人。

Contrib 库

状态图例

  • 活跃 - 正在积极进行定期开发

  • 稳定 - 工作正常,但开发不规律

  • 不活跃 - 不再开发,不会再进行任何操作

描述 所有者 状态

algo.generic

常用函数的通用版本

Konrad Hinsen

稳定

algo.monads

Monad 宏和定义

Konrad Hinsen

稳定

core.async

用于异步编程和通信的工具

Rich Hickey

活跃

core.cache

实现各种缓存策略的缓存库

Sean Corfield

活跃

core.contracts

Clojure 中的契约式编程

Fogus

不活跃

core.incubator

提议包含在核心中的函数

不活跃

core.logic

基于 miniKanren 的逻辑编程库

David Nolen

稳定

core.match

模式匹配和谓词分派

David Nolen

稳定

core.memoize

可操作的、可插拔的、记忆化框架

Sean Corfield

活跃

core.rrb-vector

基于 RRB-Tree 的向量

Michał Marczyk, Andy Fingerhut

活跃

core.typed

逐步类型化

Ambrose Bonnaire-Sargent

活跃

core.unify

统一库

Fogus

稳定

data.avl

AVL 树

Michał Marczyk

稳定

data.codec

本机编解码器实现

Alexander Taggart

稳定

data.csv

读取和写入 CSV 文件

Jonas Enlund

稳定

data.finger-tree

手指树

Chouser

稳定

data.fressian

可扩展的二进制数据表示法

Stuart Halloway

稳定

data.generators

随机数据生成器

Stuart Halloway

不活跃

data.int-map

针对整数键优化的映射和集合

Alex Miller

稳定

data.json

JSON 编码/解码

Alessandra Sierra

稳定

data.priority-map

优先级映射

Mark Engelberg

稳定

data.xml

延迟 XML 解析

Ryan Senior, Herwig Hochleitner

稳定

data.zip

操作拉链

稳定

java.classpath

类路径实用程序

Alessandra Sierra

稳定

java.data

使用 Java Bean

Sean Corfield

活跃

java.jdbc

基于 JDBC 的 SQL 接口

Sean Corfield

稳定

java.jmx

JMX 接口

Nick Bailey

稳定

math.combinatorics

常见组合函数的延迟序列

Mark Engelberg

稳定

math.numeric-tower

数学函数和数字塔

Mark Engelberg

稳定

test.check

属性测试框架

Alex Miller

活跃

test.generative

测试数据生成和执行工具

Stuart Halloway

不活跃

tools.analyzer

用于 Clojure 代码的分析器框架

Nicola Mometto

活跃

tools.analyzer.jvm

tools.analyzer 的 JVM 特定传递

Nicola Mometto

活跃

tools.build

用于编写 Clojure 构建程序的函数

Alex Miller

活跃

tools.cli

命令行参数处理器

Sean Corfield

活跃

tools.deps

依赖项作为数据和类路径构建

Alex Miller

活跃

tools.deps.cli

用于 Clojure CLI 的 Deps 函数

Alex Miller

活跃

tools.deps.graph

为 deps.edn 项目创建依赖项图

Alex Miller

活跃

tools.gitlibs

用于检索、缓存和使用基于 git 的项目的工具

Alex Miller

活跃

tools.emitter.jvm

JVM 字节码生成器

Nicola Mometto

活跃

tools.logging

日志记录工具

Alexander Taggart

活跃

tools.macro

用于宏编写者的工具

Konrad Hinsen

稳定

tools.namespace

用于处理命名空间声明的工具

Alessandra Sierra

稳定

tools.nrepl

网络 REPL

不活跃

tools.reader

Clojure 读取器

Nicola Mometto

活跃

tools.tools

用于管理 CLI 工具的 Clojure CLI 工具

Alex Miller

活跃

tools.trace

执行跟踪

Luc Prefontaine

稳定

核心库

此外,以下库是 Clojure 本身的依赖项,由核心团队直接管理。这些库使用与 Contrib 库相同的共享基础设施,因此在很大程度上相同。这些库的开发通常与核心语言本身的开发相关联。

最后,Clojure GitHub 组织中还有一些根本不是库的仓库。

历史

在 Clojure 1.3 之前,Clojure 只有一个名为 clojure-contrib 的“包含电池”库,它包含许多由社区贡献的独立辅助命名空间。在 Clojure 1.3 期间,该库被拆分为今天存在的具有独立所有者的独立库。一些命名空间被视为实验性的,并没有被推广到任何公共库。Alessandra Sierra 在他的 帖子 中更详细地描述了这一点。

当时有一个想法是,一些 contrib 库最终可能会被提升到 Clojure 的核心库中。随着时间的推移,人们越来越希望将 Clojure 的核心库保持在较小的规模,并允许这些独立库保持独立,并以自己的速度发展。

另请参阅 Contrib 历史,了解 contrib 拆分的某些遗留历史。

Contrib 操作指南

Contrib 操作指南 中,您可以找到一些关于参与或为 contrib 做出贡献的较旧内容。