Clojure

貢獻函式庫

Clojure 是主控層級專案,承載許多額外的函式庫,稱為「Clojure 貢獻」,這些函式庫都存在於 GitHub 上的 Clojure 組織 中。

這些函式庫使用與 Clojure 相同的貢獻模式(貢獻者協議、授權和著作權),以及由 Clojure 核心團隊維護的共用基礎架構

  • 原始碼控制 - GitHub 上的 Git 函式庫

  • 問題 - JIRA

  • 開發模式 - JIRA 中的修補程式,無公關

  • 持續整合 - 各個專案中的 GitHub 操作

  • 文件產生和承載 - Autodoc 和 GitHub 頁面

  • 建置 - Maven,並在 groupId org.clojure 下部署到 Maven Central

每個專案都有一個或多個擁有者(通常是社群成員),他們決定函式庫的方向、分類修補程式等。專案擁有者擁有完整的提交權限,並在建置匣上經過驗證後可以存取其專案以進行版本發布。

貢獻函式庫是開放原始碼函式庫,就像任何其他開放原始碼 Clojure 函式庫一樣。它們的開發活動和品質差異很大,在整體生態系統中,它們可能不是其功能的最佳替代方案。在使用之前,您應該評估它們,就像您會評估任何打算用作依賴項的開放原始碼函式庫一樣。

如果您發現某個函式庫的活躍開發已停止,而您想接手成為擁有者,請聯絡 clojure@cognitect.com。函式庫的良好管理者通常是積極使用該函式庫且了解該功能目標和替代方案的人。

貢獻函式庫

狀態圖例

  • 活躍 - 處於活躍的定期開發中

  • 穩定 - 正在運作中,但開發不定期

  • 不活躍 - 不再開發中,將不再進行開發

函式庫 說明 擁有者 狀態

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 樹的向量

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 Beans

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

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 在他的 文章 中更詳細地描述了這一點。

當時有一個想法,即有些貢獻函式庫最終可以提升到 Clojure 的核心函式庫本身。隨著時間的推移,人們希望保持 Clojure 的核心函式庫精簡,並讓這些獨立函式庫保持獨立,並以自己的步調演進。

另請參閱 貢獻歷史,了解貢獻拆分的某些舊有歷史。

貢獻操作指南

可以在 貢獻操作指南 找到一些較舊的內容,說明如何參與或貢獻貢獻。