We're as happy as the owner of this belt to announce Immutant 1.0.1 - "PuntoBueno".

This release is primarily a bug fix release, with a couple of other enhancements thrown in. 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?

In addition to fixes, we added a few backwards-compatible features:

  • Leiningen plugins in your project.clj are now loaded when your app is deployed
  • Custom nREPL handlers and middleware in your project.clj are now activated at deployment
  • Introduced immutant.messaging/with-connection to facilitate better connection re-use
  • Introduced immutant.cache.core/builder to enable advanced configuration of an Infinispan cache
  • The pipeline namespace now provides a fanout function to split a sequence into individual pipeline executions

See below for a full list of issues.

We want to thank everyone who reported issues against 1.0.0. We especially want to thank Chas Emerick and Mariano Guerra for patiently helping us find, recreate, test, and even fix many of the issues resolved in this release.

Get It

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

$ lein immutant install 1.0.1

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

Alternatively, you can try the OpenShift Immutant cartridge, which has been updated to 1.0.1. Our OpenShift clustering tutorial shows you how.

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 1.0.1

  • [IMMUTANT-319] - Race conditions on slow/limited hardware cause destination start failures
  • [IMMUTANT-324] - Cache lookup can return one in a TERMINATED state
  • [IMMUTANT-327] - There should be some documentation around messaging performance with the Messaging API
  • [IMMUTANT-328] - Add support for custom nREPL handlers + middleware
  • [IMMUTANT-329] - Not all JDK-standard packages are available, part deux
  • [IMMUTANT-330] - Leiningen plugins not being loaded upon deployment bums me out
  • [IMMUTANT-334] - compiled classes not available when no profile is applied
  • [IMMUTANT-335] - XA transactions involving caches can yield incorrect data when useSynchronization is true
  • [IMMUTANT-336] - Need a clean way to set *any* ispan cache config parameter
  • [IMMUTANT-337] - `unlisten`ing a listener multiple times produces WARN log msgs
  • [IMMUTANT-339] - Write skew error on Infinispan read
  • [IMMUTANT-341] - Update to leiningen-core 2.3.2
  • [IMMUTANT-342] - Parent directories of cache :persist store aren't being created
  • [IMMUTANT-344] - Write the nrepl port to .nrepl-port
  • [IMMUTANT-345] - Facilitate more JMS connection re-use
  • [IMMUTANT-346] - pipeline ns should provide a fanout fn