Immutant 0.4.0 Released

We're as happy as the Seattle Seahawks after last night's win to announce our second bi-monthly beta release of Immutant - version 0.4.0, hopefully culminating in a 1.0.0 version this fall. 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 accidental complexity in real world applications.

What's in this release?

Highlights include:

Get It

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

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

  • [IMMUTANT-21] - Implement reloading in development mode
  • [IMMUTANT-29] - Support durable topic subscribers
  • [IMMUTANT-96] - message queue names should not contain '/' character
  • [IMMUTANT-101] - Provide easier access to Message properties
  • [IMMUTANT-104] - Pass JobExecutionContext to function called by job
  • [IMMUTANT-105] - Jobs appear to run concurrently even though they implement StatefulJob
  • [IMMUTANT-117] - Deployment takes too long
  • [IMMUTANT-118] - Queued messages don't seem to persist across a server restart
  • [IMMUTANT-119] - Turn daemons api into a protocol
  • [IMMUTANT-120] - Properly apply ~/.lein/profiles.clj to deployed projects
  • [IMMUTANT-121] - Add options to lein plugin's deploy task
  • [IMMUTANT-123] - Allow apps to deploy with immutant-messaging as an explicit dependency

Immutant 0.3.0 Released

We're pleased to announce the third official release of Immutant - version 0.3.0. This is the first in a series of bi-monthly releases culminating in a 1.0.0 version this fall. 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 incidental complexity that comes along with real world applications.

What's in this release?

As we work to harden Immutant, we've focused less on features and more on robustness and developer experience, which we expect to continue through 1.0.0. Highlights of this release include:

  • Immutant namespaces are now published to clojars and can be referenced and used (to some extent) outside of an Immutant container. This is particularly handy for unit testing.
  • Speaking of testing, we've published the library we use to run our own integration tests so that you can, too. We'll describe how to do this in a future post.
  • XA transactions will work seamlessly with any released version of clojure.java.jdbc
  • Dependencies can be added at runtime, via a connected REPL, without requiring a redeploy or restart. See the docs for more details.
  • Immutant and its associated lein plugin work on Windows platforms.
  • Immutant can now be used in "domain mode", a JBoss AS7 cluster management feature, and your application archives can be efficiently replicated across a cluster with minimal redundant packaging.

Get It

The simplest way to install 0.3.0 is via our Leiningen plugin. 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 find us on #immutant on freenode or our mailing lists.

Issues resolved in 0.3.0

  • [IMMUTANT-16] - get the build working on windows
  • [IMMUTANT-74] - Get domain mode working
  • [IMMUTANT-84] - `lein immutant new` creates an invalid project.clj under lein 2.preview7
  • [IMMUTANT-85] - XA should work for both versions of clojure.java.jdbc
  • [IMMUTANT-86] - Depth of queue impacts performance of receive dramatically
  • [IMMUTANT-88] - daemons, jobs, and message processors should use the deployment's module class loader
  • [IMMUTANT-89] - lein-immutant shouldn't fail to validate checksum if no checksum found
  • [IMMUTANT-90] - Add dependencies at runtime, without requiring redeploy or REPL restart
  • [IMMUTANT-91] - Don't include deps in archive, by default
  • [IMMUTANT-93] - NoClassDefFoundError in server.log when app is undeployed
  • [IMMUTANT-94] - Update the plugin to work on windows
  • [IMMUTANT-97] - Update to leiningen-core 2.0.0-preview10
  • [IMMUTANT-98] - Singleton services and jobs fail to start in a single node cluster
  • [IMMUTANT-99] - Fails to build with maven 3.0.4 due to missing polyglot-module-support dep
  • [IMMUTANT-100] - enhance messaging/publish to publish raw Message
  • [IMMUTANT-102] - Publish fntest as a separate project
  • [IMMUTANT-103] - Figure out how to publish Immutant namespaces as standalone jars
  • [IMMUTANT-107] - All deployments should resolve dependencies by default
  • [IMMUTANT-108] - Don't attempt to re-resolve deps if some are missing
  • [IMMUTANT-110] - Add nrepl.el to the interactive doc chapter

Immutant 0.2.0 Released

We're pleased as {{insert clever simile here}} to announce the second official release of Immutant - version 0.2.0. We consider this release to be beta quality, and it lacks some of the features and API stability that will end up in the 1.0.0 release.

What is Immutant?

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

What's in this release?

We've done quite a bit of work since the 0.1.0 release, the most notable being:

  • Improved support for interactive development of your app at runtime via embedded Swank and nREPL services.
  • XA Transaction support - Messaging and Caching resources are now automatically transactional and XA capable. And you can easily create DataSources for your XA compliant SQL databases so that you can then define transactions incorporating all three types of resources in your apps.
  • The lein-immutant plugin now supports both Leiningen 1.x and 2.x.
  • We rewrote our Clojure runtime wrapper to remove all reflection from any non-initialization call paths, greatly improving its performance. This wrapper is what allows us to provide runtime isolation.
  • Our messaging system now implements the request-response pattern for synchronous messaging.
  • Clojure 1.4.0 is now the default Clojure version. Applications can still specify and use other versions.
  • A handful of bug fixes and other improvements - see the full issue list for the details.

What's next?

Now that we have 0.2.0 out the door, we'll be focusing on:

  • Getting Immutant running smoothly on OpenShift
  • Making Immutant modules as usable as possible outside of the container, e.g. remote message publishers and receivers.
  • Performance benchmarking
  • Durable topic subscribers

Get It

The simplest way to install 0.2.0 is via our Leiningen plugin. See our install page for more details. Once you have it installed, take a look at our Getting Started tutorials.

Get In Touch

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

Issues resolved in 0.2.0

  • [IMMUTANT-30] - Implement the request-response messaging pattern
  • [IMMUTANT-48] - Add support for lein profiles
  • [IMMUTANT-56] - Support decoding BytesMessages
  • [IMMUTANT-57] - Assume messages that have no encoding are :text when decoding
  • [IMMUTANT-58] - Handle deployment when pomegranate resolution fails
  • [IMMUTANT-59] - The compile-path should be included in the deployment's resource path
  • [IMMUTANT-60] - Update the bundled clojure to 1.4.0
  • [IMMUTANT-61] - lein-immutant plugin is throwing an exception if it is used as a dev dependency
  • [IMMUTANT-62] - Fix copy and pasta error in swank/nrepl docs
  • [IMMUTANT-63] - Simple dynamic creation of XA datasources
  • [IMMUTANT-64] - Support distributed XA transactions involving db's, msg destinations, and caches
  • [IMMUTANT-65] - Port logging docs from TorqueBox
  • [IMMUTANT-66] - lein-immutant should checksum the downloaded zip
  • [IMMUTANT-67] - Warning is thrown when trying to deploy Ring 1.1.0 powered application
  • [IMMUTANT-69] - Ability to connect to a remote messaging queue in immutant
  • [IMMUTANT-70] - Jump to def (M-.) doesn't work from slime connected to the swank inside AS7
  • [IMMUTANT-71] - Expose :immutant/descriptor values to app
  • [IMMUTANT-72] - Running web/start in swank server results in 404
  • [IMMUTANT-73] - Support specifying a virtual host
  • [IMMUTANT-75] - Upgrade to latest leiningen-core preview
  • [IMMUTANT-76] - Do some reflection hunting
  • [IMMUTANT-77] - Ensure Korma works with an immutant datasource
  • [IMMUTANT-80] - Remove (web/src-dir) since (utilities/app-root) returns the app root
  • [IMMUTANT-81] - Add section to deployment doc on running immutant

Immutant 0.1.0 Released

We're pleased as punch to announce the first official release of Immutant - version 0.1.0. We consider this release to be beta quality, and lacks some of the features and API stability that will end up in the 1.0.0 release.

What is Immutant?

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

What's in this release?

For this first release, we've focused on the basics of application deployment and initialization along with a few components:

What's next?

Now that we have 0.1.0 out the door, we'll be focusing on:

  • XA Transaction support
  • Benchmarking to identify (and resolve!) performance bottlenecks
  • Getting Immutant running on OpenShift
  • General API simplification and improvement

Get It

The simplest way to install 0.1.0 is via our Leiningen plugin. See our install page for more details. Once you have it installed, take a look at our Getting Started tutorials. We'll be updating those and adding more in the next couple of weeks.

Get In Touch

If you have any questions, issues, or other feedback about Immutant, you can find us on #immutant on freenode or our mailing lists. We'll also be at Clojure/West where Jim will be presenting Immutant and we would love to chat with you.