
This page will provide a list of all the "old" contrib library namespaces from the 1.2 monolithic contrib, along with a brief explanation of its status and how to migrate code that depends on functions in each namespace. This page is a work in progress and will need input from all maintainers of the "new" contrib modules as well as folks with historical knowledge of the contrib library. If you have suggestions, updates, or comments on this page, feel free to email sean@worldsingles.com so that we can make this into the best possible migration resource!
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 is a good alternative now, as is http.async.client if you're on Clojure 1.3 or later).
If you can't yet switch to the Modular Contrib but you want to migrate to Clojure 1.3 or 1.4, you might want to look at Allen Rohner's unofficial version of Contrib 1.2 compiled against Clojure 1.3 to get you started.
Explanation of the Status links:
- latest build status - links to the most recent automated test results for a library: shows which versions of Clojure and which JVMs the library is currently compatible with (red dot = fail; blue dot = pass)
- latest release on Maven - links to the most recent publicly available version of the library: shows the GroupId (org.clojure), ArtifactId and Latest Version for use with Maven; to use the library with Leiningen, add a dependency of the form [org.clojure/ArtifactId "Latest Version"] to your project.clj file (e.g., [org.clojure/java.jdbc "0.1.4"])
- report bugs - links to the JIRA bug tracker for that library
Clojure.Contrib Namespaces
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.
- Status: latest build status, latest release on Maven, report bugs.
- clojure.contrib.classpath
- Migrated to clojure.java.classpath - lead Stuart Sierra.
- Status: latest build status, latest release on Maven, report bugs.
- clojure.contrib.combinatorics
- Migrated to clojure.math.combinatorics - lead Mark Engelberg.
- Status: latest build status, latest release on Maven, report bugs.
- clojure.contrib.command-line
- Replaced by clojure.tools.cli (based on the clargon library) - lead Gareth Jones.
- Status: latest build status, latest release on Maven, report bugs.
- 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.
- Status: latest build status, latest release on Maven, report bugs.
- 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.
- Status: latest build status, latest release on Maven, report bugs.
- Notes:
defvar
: as of Clojure 1.3, you can specify a docstring in adef
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 Stuart Sierra.
- Status: latest build status, latest release on Maven, report bugs.
- clojure.contrib.fnmap
- clojure.contrib.gen-html-docs
- clojure.contrib.generic
- Migrated to clojure.algo.generic - lead Konrad Hinsen.
- Status: latest build status, latest release on Maven, report bugs.
- clojure.contrib.graph
- 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.
- Status: latest build status, latest release on Maven, report bugs.
- clojure.contrib.json
- Migrated to clojure.data.json - lead Stuart Sierra.
- Status: latest build status, latest release on Maven, report bugs.
- clojure.contrib.lazy-seqs
- clojure.contrib.lazy-xml
- Migrated to clojure.data.xml - lead Alan Malloy.
- Status: latest build status, latest release on Maven, report bugs.
- clojure.contrib.load-all
- clojure.contrib.logging
- Migrated to clojure.tools.logging - lead Alex Taggart.
- Status: latest build status, latest release on Maven, report bugs.
- clojure.contrib.macro-utils
- Migrated to clojure.tools.macro - lead Konrad Hinsen.
- Status: latest build status, latest release on Maven, report bugs.
- clojure.contrib.macros
- Migrated to clojure.tools.macro - lead Konrad Hinsen.
- Status: latest build status, latest release on Maven, report bugs.
- clojure.contrib.map-utils
- clojure.contrib.math
- Migrated to clojure.math.numeric-tower - lead Mark Engelberg.
- Status: latest build status, latest release on Maven, report bugs.
- 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.
- Status: latest build status, latest release on Maven, report bugs.
- clojure.contrib.ns-utils
- clojure.contrib.parent
- clojure.contrib.priority-map
- Migrated to clojure.data.priority-map - lead Mark Engelberg.
- Status: latest build status, latest release on Maven, report bugs.
- 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.
- Status: latest build status, latest release on Maven, report bugs.
- clojure.contrib.standalone
- clojure.contrib.stream-utils
- clojure.contrib.strint
- Migrated to clojure.core.incubator - lead Rich Hickey.
- Status: latest build status, latest release on Maven, report bugs.
- clojure.contrib.swing-utils
- clojure.contrib.trace
- Migrating to clojure.tools.trace - lead Luc Prefontaine
- Status: latest build status, latest release on Maven, report bugs.
- clojure.contrib.types
- clojure.contrib.with-ns
- clojure.contrib.zip-filter
- Migrated to clojure.data.zip - lead Aaron Bedra.
- Status: latest build status, latest release on Maven, report bugs.
New Contrib Namespaces
This section lists new contrib namespaces that do not correspond to old contrib namespaces (as far as I can tell - Sean!) and is provided for completeness / documentation purposes.
- clojure.core.async
- A Clojure library designed to provide facilities for async programming and communication. - lead Rich Hickey.
- Status: latest build status, latest release on Maven, report bugs.
- clojure.core.cache
- Extensible caching - lead Michael Fogus.
- Status: latest build status, latest release on Maven, report bugs.
- clojure.core.contracts
- Contract programming - lead Michael Fogus.
- Status: latest build status, latest release on Maven, report bugs.
- clojure.core.rrb-vector
- 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
- Status: latest build status, latest release on Maven, report bugs.
- clojure.core.logic
- Logic programming - lead David Nolen.
- Status: latest build status, latest release on Maven, report bugs.
- clojure.core.match
- Structural pattern matching - lead David Nolen.
- Status: latest build status, latest release on Maven, report bugs.
- clojure.core.memoize
- Pluggable memoization, builds on core.cache - lead Michael Fogus.
- Status: latest build status, latest release on Maven, report bugs.
- clojure.core.typed
- Optional type checking for Clojure - lead Ambrose Bonnaire-Sergeant
- Status: latest build status, latest release on Maven, report bugs.
- clojure.core.unify
- Unification (like Prolog) - lead Michael Fogus.
- Status: latest build status, latest release on Maven, report bugs.
- clojure.data.csv
- Comma-Separated-Value file processing; formerly cljcsv - lead Jonas Enlund.
- Status: latest build status, latest release on Maven, report bugs.
- clojure.data.finger-tree
- Finger tree persistent data structures - lead Chris Houser.
- Status: latest build status, latest release on Maven, report bugs.
- clojure.data.fressian
- Read and write fressian data. See https://github.com/Datomic/fressian/wiki
- Status: latest build status, latest release on Maven, report bugs.
- clojure.data.generators
- Data generators (extracted from clojure.test.generative) - lead Stuart Halloway.
- Status: latest build status, latest release on Maven, report bugs (against clojure.test.generative for now).
- clojure.java.data
- Java Beans and properties support - lead Cosmin Stejerean.
- Status: latest build status, latest release on Maven, report bugs.
- clojure.test.benchmark
- Benchmark (and regression) suite for Clojure - lead Stuart Halloway.
- Status: awaiting automated builds, awaiting releases, report bugs.
- clojure.test.generative
- Testing library based on data generation (see clojure.data.generators) - lead Stuart Halloway.
- Status: latest build status, latest release on Maven, report bugs.
- clojure.tools.nrepl
- REPL client and server - lead Chas Emerick.
- Status: latest build status, latest release on Maven, report bugs.
- clojure.tools.reader
- Clojure reader in Clojure - lead Nicola Mometto.
- Status: latest build status, latest release on Maven, report bugs.