Browse files

README: Update with latest release & dependency information

  • Loading branch information...
stuartsierra committed Nov 2, 2012
1 parent 4470daf commit 504d6f12042e7edcf11b8fbe69768e1e90fc1cb0
Showing with 58 additions and 24 deletions.
  1. +58 −24
@@ -11,38 +11,45 @@ It has nothing to do with Leiningen, Maven, JAR files, or
Releases and Dependency Information
-* [Latest stable release is 0.2.0](
+* [Latest stable release is 0.2.1](
* [All Released Versions](
[Leiningen]( dependency information:
- [org.clojure/tools.namespace "0.2.0"]
+ [org.clojure/tools.namespace "0.2.1"]
[Maven]( dependency information:
- <version>0.2.0-SNAPSHOT</version>
+ <version>0.2.1</version>
-Development Snapshots
+### Development Snapshots ###
-* Git master branch is **0.2.1-SNAPSHOT**
+* Git master branch is at **0.2.2-SNAPSHOT**
* [Development Snapshot Versions](
-* [Instructions for Development Snapshot Repositories](
+Leiningen information for development snapshots:
+ :dependencies [[org.clojure/tools.namespace "0.2.2-SNAPSHOT"]]
+ :repositories {"sonatype-oss-public"
+ ""}
+See also [Maven Settings and Repositories]( on
[API Documentation](
@@ -75,6 +82,10 @@ see below. c.t.n.repl is built out of smaller parts:
You can recombine these parts in other ways, but c.t.n.repl is the
primary public entry-point to their functionality.
+**New in 0.2.2-SNAPSHOT:** The namespace ****
+contains utilities to aid in moving and renaming Clojure namespaces.
+This code is ALPHA and subject to change.
Reloading Code: Motivation
@@ -115,6 +126,7 @@ compile. I wrote tools.namespace to help speed up this development
Reloading Code: Usage
@@ -153,13 +165,15 @@ state stored in a Var that got deleted by `refresh`.
This brings us to the next section:
Reloading Code: Preparing Your Application
Being able to safely destroy and reload namespaces without breaking
your application requires some discipline and careful design. It won't
"just work" on any Clojure project.
### No Global State
The first rule for making your application reload-safe is **no global
@@ -186,19 +200,14 @@ Typically you'll still need one global `def` somewhere, perhaps in the
REPL itself, to hold the current application instance. See "Managing
Reloads" below.
### Managed Lifecycle
The second rule for making your application reload-safe is having a
consistent way to **start and stop the entire system**. I like to do
this with a protocol implemented by each major component in the
- (defprotocol Lifecycle
- (start [component])
- (stop [component]))
-Smaller applications can probably get along fine with just a pair of
+system, but smaller applications can probably get along fine with just
+a pair of functions.
The point is that you need a convenient way to destroy all the
built-up state of your application and then *recreate it from
@@ -236,6 +245,7 @@ but see warnings below.)
After that, you've got a squeaky-clean new instance of your app
running, in a fraction of the time it takes to restart the JVM.
### Handling Errors
If an exception is thrown while loading a namespace, `refresh` stops,
@@ -272,6 +282,7 @@ If your current REPL namespace is one of those that has not yet been
reloaded, then you will need to call `refresh` by its fully-qualified
name ``.
### Managing Reloads
Some projects have a "project REPL" or a "scratch" namespace where you
@@ -287,6 +298,7 @@ will break if the namespace *containing* the alias is not reloaded
@@ -327,6 +339,7 @@ This won't work if the namespace containing `restart` could get
reloaded. After `refresh`, the namespace containing `restart` has been
dropped, but the function continues to run in the *old* namespace.
### Warnings for Aliases
Namespace aliases created at the REPL will still refer to the *old* namespace after `refresh`. For example:
@@ -354,6 +367,7 @@ The only way out is to remove the alias before recreating it:
user=> (alias 'foo '
### Warnings for Protocols
When reloading namespaces which contain protocols, be careful that you
@@ -393,23 +407,43 @@ To avoid this problem, always create new instances of records after a
-Change Log
+Change Log
+* Version 0.2.2-SNAPSHOT (in development)
+ * Add ``
+ * Fix [TNS-4], reflection warnings
+* Version 0.2.1 on 26-Oct-2012
+ * Restore deprecated 0.1.x APIs in ``
+ * Fix [TNS-3], actually use `refresh-dirs`
* Version 0.2.0 on 05-Oct-2012
* **Breaking API changes** from previous versions
* New dependency tracking & reloading features
+ * Eliminate dependency on [java.classpath]
* Version 0.1.3 on 24-Apr-2012
+ * Workaround for Clojure 1.2 reader bug
* Version 0.1.2 on 10-Feb-2012
+ * Eliminate reflection warnings
* Version 0.1.1 on 18-May-2011
* Version 0.1.0 on 24-Apr-2011
* Source-compatible with clojure.contrib.find-namespaces in old clojure-contrib 1.2.0
-Copyright and License
-Copyright © 2012 Stuart Sierra
+Copyright and License
-Licensed under the [Eclipse Public License Version 1.0](
+Copyright © 2012 Stuart Sierra All rights reserved. The use and
+distribution terms for this software are covered by the
+[Eclipse Public License 1.0] which can be found in the file
+epl-v10.html at the root of this distribution. By using this software
+in any fashion, you are agreeing to be bound by the terms of this
+license. You must not remove this notice, or any other, from this
+[Eclipse Public License 1.0]:

0 comments on commit 504d6f1

Please sign in to comment.