We're as happy as Burt Reynolds in the 70's to announce our latest release of Immutant - version 0.6.0, hopefully culminating in a 1.0.0 version this fallwinter. As always, view our road map here.

What is Immutant?

Immutant is an application server for Clojure. It's an integrated platform built on JBoss AS7 that aims to reduce the inherent incidental complexity in real world applications.

What's in this release?

This is the second release in a row where we have focused on bug fixes and internal refactoring to clean things up as we approach 1.0.0. Our goal is to have a stable API by the first 1.0.0 beta.

Since 0.5.0, we've made a few API changes, some of which are breaking changes:

  • The immutant.utilities namespace has been renamed to immutant.util.
  • The immutant.daemons namespace has been reorganized - the most noticeable change being the run function has been changed to daemonize.
  • immutant.registry/fetch has been deprecated and replaced with immutant.registry/get.

We've also added a few new features in this release:

  • We now expose MBeans for HornetQ destinations and listeners.
  • immutant.dev/reload-project! will now load any data-readers specified by newly added dependencies.

With this release, we're bucking our trend of increasing the size of the distribution - 0.6.0 is 17Mb smaller than 0.5.0.

Get It

The simplest way to install or upgrade to 0.6.0 is via our Leiningen plugin:

$ lein immutant install 0.6.0

See our install page for more details. Once you have it installed, take a look at our tutorials.

Get In Touch

If you have any questions, issues, or other feedback about Immutant, you can always find us on #immutant on freenode or our mailing lists.

Jim and Toby will both be at Clojure/Conj later this week, so if you are there say 'hi' and watch Jim's talk on REPL driven development with Immutant (AKA "Immutant, I am in You!").

Issues resolved in 0.6.0

  • [IMMUTANT-141] - Expose mbeans for HornetQ destinations
  • [IMMUTANT-151] - include clojure-complete to allow nrepl completion to work
  • [IMMUTANT-154] - dev ns should load new data-readers
  • [IMMUTANT-153] - Don't allow HornetQ to shutdown while processors and queues are still up
  • [IMMUTANT-155] - web/start should be idempotent
  • [IMMUTANT-156] - msg/stop no longer fully stops destinations
  • [IMMUTANT-157] - non-root sub-contexts require a trailing slash
  • [IMMUTANT-158] - it's possible to get message listeners in an inconsistent state
  • [IMMUTANT-159] - msg/start & msg/stop should be synchronous
  • [IMMUTANT-160] - :path-info should be consistent
  • [IMMUTANT-161] - Update the web docs to be clearer about context-paths and path-info
  • [IMMUTANT-162] - Reduce jar duplication within our modules
  • [IMMUTANT-163] - msg/start should be idempotent
  • [IMMUTANT-164] - update docs to mention var quoting to achieve reloadability
  • [IMMUTANT-165] - Deprecate registry/fetch and prefer registry/get instead
  • [IMMUTANT-166] - Rename immutant.utilities to immutant.util
  • [IMMUTANT-167] - Rename daemons functions to be more clear