This page is a historical document about the splitting of the old "monolithic" contrib in the Clojure 1.2 timeframe when many of the initial contrib libraries were created. This info is no longer maintained and may be out of date. See Contrib Libs for up to date info.
If a clojure.contrib namespace is listed here but has no migration details, that means no one has volunteered to maintain that namespace. Part of the rationale for modular contrib is that there should be an active maintainer going forward so that the library can be kept compatible with new versions of Clojure. All the new modular contrib libraries are compatible with Clojure 1.2.0 thru 1.4.0 (and are also being automatically tested with Clojure 1.5 as it is being developed - as well as being tested with a number of different JDKs!).
If a clojure.contrib namespace is not listed here, it is most likely an old namespace that was either migrated somewhere else or deprecated as part of Clojure 1.2 (e.g., clojure.contrib.duck-streams mostly migrated to clojure.java.io, clojure.contrib.pprint migrated to clojure.pprint, clojure.contrib.shell and clojure.contrib.shell-out migrated to clojure.java.shell, clojure.contrib.string migrated to clojure.string, clojure.contrib.http.agent was deprecated - clj-http.
This section aims to document how to migrate from "old" contrib to "new" contrib.
clojure.contrib.accumulators
clojure.contrib.agent-utils
clojure.contrib.base64
Replaced by clojure.data.codec - lead Alex Taggart.
clojure.contrib.classpath
Migrated to clojure.java.classpath - lead Alessandra Sierra.
clojure.contrib.combinatorics
Migrated to clojure.math.combinatorics - lead Mark Engelberg.
clojure.contrib.command-line
Replaced by clojure.tools.cli (based on the clargon library) - lead Gareth Jones.
clojure.contrib.complete
clojure.contrib.complex-numbers
clojure.contrib.cond
clojure.contrib.condition
Replaced by Slingshot - Lead Steve Gilardi
clojure.contrib.core
Partly migrated to clojure.core.incubator - lead Rich Hickey.
clojure.contrib.dataflow
clojure.contrib.datalog
Michael Fogus has a project bacwn on Github based on this library.
clojure.contrib.def
Partly migrated to clojure.core.incubator - lead Rich Hickey.
Notes:
defvar
: as of Clojure 1.3, you can specify a docstring in a def
form: (def my-var "This is my docstring" some-value)
clojure.contrib.error-kit
Replaced by Slingshot - Lead Steve Gilardi
clojure.contrib.except
clojure.contrib.fcase
fcase replaced by Clojure 1.3 clojure.core/condp
. Other macros easily implemented using condp
if desired.
clojure.contrib.find-namespaces
Migrated to clojure.tools.namespace - lead Alessandra Sierra.
clojure.contrib.fnmap
clojure.contrib.gen-html-docs
clojure.contrib.generic
Migrated to clojure.algo.generic - lead Konrad Hinsen.
clojure.contrib.graph
Migrated to clojure.algo.graph - lead Timothy Baldridge.
clojure.contrib.greatest-least
clojure.contrib.import-static
clojure.contrib.jar
clojure.contrib.java-utils
clojure.contrib.jmx
Migrated to clojure.java.jmx - lead Stuart Halloway.
clojure.contrib.json
Migrated to clojure.data.json - lead Alessandra Sierra.
clojure.contrib.lazy-seqs
clojure.contrib.lazy-xml
Migrated to clojure.data.xml - lead Alan Malloy.
clojure.contrib.load-all
clojure.contrib.logging
Migrated to clojure.tools.logging - lead Alex Taggart.
clojure.contrib.macro-utils
Migrated to clojure.tools.macro - lead Konrad Hinsen.
clojure.contrib.macros
Migrated to clojure.tools.macro - lead Konrad Hinsen.
clojure.contrib.map-utils
clojure.contrib.math
Migrated to clojure.math.numeric-tower - lead Mark Engelberg.
clojure.contrib.miglayout
clojure.contrib.mmap
clojure.contrib.mock
clojure.contrib.monadic-io-streams
clojure.contrib.monads
Migrated to clojure.algo.monads - lead Konrad Hinsen.
clojure.contrib.ns-utils
clojure.contrib.parent
clojure.contrib.priority-map
Migrated to clojure.data.priority-map - lead Mark Engelberg.
clojure.contrib.probabilities
clojure.contrib.profile
clojure.contrib.prxml
clojure.contrib.reflect
clojure.contrib.repl-ln
clojure.contrib.repl-utils
Migrated to clojure.repl
and clojure.java.javadoc
. show
functionality similar to clojure.reflect/reflect
. Any equivalents for these? expression-info
, run
, run*
clojure.contrib.seq
clojure.contrib.server-socket
clojure.contrib.set
Migrated to clojure.set
, except proper-subset?
and proper-superset?
, which are easily implemented using subset?
and superset?
clojure.contrib.singleton
clojure.contrib.sql
Migrated to clojure.java.jdbc - lead Sean Corfield.
clojure.contrib.standalone
clojure.contrib.stream-utils
clojure.contrib.strint
Migrated to clojure.core.incubator - lead Rich Hickey.
clojure.contrib.swing-utils
clojure.contrib.trace
Migrating to clojure.tools.trace - lead Luc Prefontaine
clojure.contrib.types
clojure.contrib.with-ns
clojure.contrib.zip-filter
Migrated to clojure.data.zip - lead Aaron Bedra.
This section lists new contrib namespaces that do not correspond to old contrib namespaces and is provided for completeness / documentation purposes.
A Clojure library designed to provide facilities for async programming and communication. - lead Rich Hickey.
clojure.core.cache Extensible caching - lead Michael Fogus.
Contract programming - lead Michael Fogus.
An implementation of the confluently persistent vector data structure introduced in Bagwell, Rompf, "RRB-Trees: Efficient Immutable Vectors", EPFL-REPORT-169879, September, 2011. - lead Michał Marczyk
Logic programming - lead David Nolen.
Structural pattern matching - lead David Nolen.
Pluggable memoization, builds on core.cache - lead Michael Fogus.
Optional type checking for Clojure - lead Ambrose Bonnaire-Sergeant
Unification (like Prolog) - lead Michael Fogus.
Comma-Separated-Value file processing; formerly cljcsv - lead Jonas Enlund.
Finger tree persistent data structures - lead Chris Houser.
Read and write fressian data. See https://github.com/Datomic/fressian/wiki
Data generators (extracted from clojure.test.generative) - lead Stuart Halloway.
Java Beans and properties support - lead Cosmin Stejerean.
Benchmark (and regression) suite for Clojure - lead Stuart Halloway.
Testing library based on data generation (see clojure.data.generators) - lead Stuart Halloway.
REPL client and server - lead Chas Emerick.
Clojure reader in Clojure - lead Nicola Mometto.
An analyzer for Clojure code, host agnostic - lead Nicola Mometto
An analyzer for Clojure on the JVM code, written on top of tools.analyzer - lead Nicola Mometto
clojure.tools.analyzer.js - DEAD
An analyzer for Clojurescript code, written on top of tools.analyzer - lead Nicola Mometto
A JVM bytecode generator, using tools.analyzer.jvm as frontend - lead Nicola Mometto