We're as happy as these twin girls to announce Immutant 1.1.1 - "BlueChicago".

This is primarily a bug fix release and, unless any new bugs are reported against it, possibly our last 1.x release. We are now focusing our efforts on The Deuce. We will make every reasonable effort to fix any bugs reported against 1.x, but we will only be adding features to 2.x. 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?

See the details below, but highlights include:

  • Previous versions of Immutant hang on boot under Java 8. This is now fixed.
  • Clojure 1.6.0 is now the default when not specified, and we dropped support for 1.3.1 (you can still use it, we just don't test against it).
  • We unregister JDBC drivers at undeployment now, reducing the potential for memory leaks.
  • Recreating an Immutant cache with different options wasn't actually reconfiguring it. This is now fixed.
  • Any plugins that "hook" leiningen.core.main tasks in an app's project.clj could fail to deploy, usually with a bultitude error. Now fixed.

Get It

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

$ lein immutant install 1.1.1

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

What's next?

As we said above, we'll be focusing on Immutant 2, with a tentative release season beginning this summer.

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.1.1

  • [IMMUTANT-324] - Cache lookup can return one in a TERMINATED state
  • [IMMUTANT-386] - Enable messaging to be XA aware outside of container
  • [IMMUTANT-400] - ring request body can't be read multiple times
  • [IMMUTANT-401] - errors during loading of ring options (handler/init/destroy) are ignored
  • [IMMUTANT-402] - Honor nrepl options in the project.clj :ring map
  • [IMMUTANT-403] - cache/swap! on an inexistent key blocks forever
  • [IMMUTANT-406] - :last-value-queue fails with default :address-full-message-policy of :page
  • [IMMUTANT-407] - Plugins in project.clj that hook any leiningen.core.main tasks cause deployment to fail
  • [IMMUTANT-408] - Pipelines that should return nil instead return the deref timeout value
  • [IMMUTANT-409] - log message when msg/unlisten is called
  • [IMMUTANT-411] - Mention in the docs that listening with :concurrency on a topic may be a bad idea
  • [IMMUTANT-412] - Unable to deploy ima multiple times using deployment descriptors
  • [IMMUTANT-413] - web/run fails when not passed a Var as the handler
  • [IMMUTANT-415] - Jobs: allow configuration of thread pool size
  • [IMMUTANT-416] - auto nrepl starting in dev mode can't be disabled
  • [IMMUTANT-417] - Permgen leaks due to JDBC
  • [IMMUTANT-418] - Support Java 8
  • [IMMUTANT-420] - api doc src links don't work for protocol functions
  • [IMMUTANT-421] - Update to clojure 1.6.0
  • [IMMUTANT-423] - cache/create doesn't reconfigure an existing cache
  • [IMMUTANT-425] - Deploying archives still resolves plugin dependencies
  • [IMMUTANT-426] - expose :max-redelivery-delay in hornetq/set-address-options