We're as happy as something something to announce our latest release of Immutant - version 0.7.0, hopefully culminating in a 1.0.0 version late winter. 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?

Since 0.6.0, we've made a couple of changes that could potentially break your applications:

  • Immutant no longer looks in the root of the application for an immutant.clj initialization file. Instead, it looks on the classpath for an 'immutant.init' namespace. For your apps to run under 0.7.0, you'll need to move immutant.clj to src/immutant/init.clj and change its ns declaration to immutant.init. See the mailing list for more information.
  • Deployment descriptors are now evaluated instead of just being read in. This allows for dynamic configuration within the descriptor based on external data (system properties, environment variables). If you are using the plugin to deploy and have upgraded it to 0.14.0, this will not affect you. If you are creating descriptors via some other method, you will now need to quote any symbols in it.

We've also added a few new features:

  • If you are working with queues or topics that don't match the Immutant naming convention of containing 'queue' or 'topic', you can now mark them as queues or topics using the immutant.messaging/as-queue or immutant.messaging/as-topic functions.
  • Messages can now be encoded as edn, which is great for interoperating with other systems/languages. If you are working with ruby applications, TorqueBox 2.2.0 and up can natively consume and produce edn messages.

Get It

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

$ lein immutant install 0.7.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.

Issues resolved in 0.7.0

  • [IMMUTANT-122] - nrepl socket remains open after undeploy
  • [IMMUTANT-132] - Move immutant.clj to an immutant.init ns
  • [IMMUTANT-168] - Document HornetQ destination and listener mbeans
  • [IMMUTANT-169] - strip immutant dependencies from the app's dep list
  • [IMMUTANT-170] - support edn as a message encoding
  • [IMMUTANT-173] - Get the build working with a 1.5.0-beta
  • [IMMUTANT-176] - resource dirs in the app root should have classpath precendence over dependency jars
  • [IMMUTANT-178] - Ability to explicitly declare queue vs topic instead of forcing naming
  • [IMMUTANT-180] - Don't rely on jboss.home.dir to find clojure.jar
  • [IMMUTANT-181] - Eval deployment descriptors
  • [IMMUTANT-183] - Listening to a remote destination from inside the container does not work
  • [IMMUTANT-184] - Can not schedule job from nREPL
  • [IMMUTANT-185] - PUT and DELETE requests are always rejected
  • [IMMUTANT-186] - move .tmp_jar_mounts out of the project root and to a real tmp dir