Clojure
Share your thoughts in the 2020 Clojure Community Survey!

Contrib History

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.

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

  • clojure.contrib.classpath

  • clojure.contrib.combinatorics

  • clojure.contrib.command-line

  • clojure.contrib.complete

  • clojure.contrib.complex-numbers

  • clojure.contrib.cond

  • clojure.contrib.condition

  • clojure.contrib.core

  • 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

  • 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

  • clojure.contrib.fnmap

  • clojure.contrib.gen-html-docs

  • clojure.contrib.generic

  • clojure.contrib.graph

  • clojure.contrib.greatest-least

  • clojure.contrib.import-static

  • clojure.contrib.jar

  • clojure.contrib.java-utils

  • clojure.contrib.jmx

  • clojure.contrib.json

  • clojure.contrib.lazy-seqs

  • clojure.contrib.lazy-xml

  • clojure.contrib.load-all

  • clojure.contrib.logging

  • clojure.contrib.macro-utils

  • clojure.contrib.macros

  • clojure.contrib.map-utils

  • clojure.contrib.math

  • clojure.contrib.miglayout

  • clojure.contrib.mmap

  • clojure.contrib.mock

  • clojure.contrib.monadic-io-streams

  • clojure.contrib.monads

  • clojure.contrib.ns-utils

  • clojure.contrib.parent

  • clojure.contrib.priority-map

  • 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

  • clojure.contrib.standalone

  • clojure.contrib.stream-utils

  • clojure.contrib.strint

  • clojure.contrib.swing-utils

  • clojure.contrib.trace

  • clojure.contrib.types

  • clojure.contrib.with-ns

  • clojure.contrib.zip-filter

New Contrib Namespaces

This section lists new contrib namespaces that do not correspond to old contrib namespaces and is provided for completeness / documentation purposes.