We're as happy as this penguin to announce Immutant 1.1.0 - "CelloPudding".
This is a feature and bug fix release. As always, view our road map here.
What is Immutant?
What's in this release?
- We've upgraded Infinispan to its latest version: 6.0.0.Final. This is primarily to support using Immutant as a data store for Datomic and offers more stability improvements over the previous release.
- We've shaved a few seconds off the boot process during application
deployment. Part of gaining this speedup was no longer loading
clojure.tools.logging, so if your app relies on it, it needs to be listed among your dependencies.
- We've tried to reduce the "noise" in our log output. This is part of an ongoing process to log appropriate information at the right severity level. Feedback always appreciated in this regard.
- You can now alter the logging level for the console output (and
server.log) by setting the
jboss.logging.levelsystem property or by passing
immutant runtask of our plugin (assuming you are running version 1.2.0 of the plugin or newer).
- Keyword arguments to our functions are now validated, reducing the risk of unexpected behavior due to typos.
- We've expanded our messaging api to include per-queue address settings, inspired by Chas' work.
- Fressian is now a supported codec for messaging and caching, inspired by Ian's work.
- Immutant now implements the
URLClasspathprotocol introduced in version
0.2.2of java.classpath enabling an accurate view of your app's isolated classpath within Immutant via a Clojure core library.
- In the interest of speeding up our incremental builds, we've dropped support for apps using Clojure 1.3. They may still work, but that version is no longer a part of our integration tests.
- We've also dropped support for our full distribution. We only ship a slim distro now, providing only the minimal JBoss services required to support our Clojure libraries. Over time, Immutant has diverged significantly from the main trunk of JBoss AS development now known as WildFly. For those seeking a full, modern JEE stack, WildFly is the best option. We're expecting future versions of Immutant to more seamlessly integrate with it.
The simplest way to install or upgrade to 1.1.0 is via our Leiningen plugin:
$ lein immutant install 1.1.0
Our plans are to begin development on version 2.x of Immutant, with a specific emphasis on the ability to optionally embed Immutant libraries within your app, as opposed to deploying them to a container. The latter will continue to be supported, of course, as there are applications for which it makes sense, but we want to explore the idea of embedding not only web features but messaging, caching and scheduling as well. We plan to devote time in the next few weeks figuring out what this will look like. Expect a blog post with more details soon.
Get In Touch
Issues resolved in 1.1.0
- [IMMUTANT-261] - add cluster tests
- [IMMUTANT-320] - Consider supporting per-queue address-settings
- [IMMUTANT-338] - Loading runtime/bootstrap is slower than a turtle drinking molasses on christmas
- [IMMUTANT-359] - Remove deprecated functions
- [IMMUTANT-373] - Upgrade Infinispan to 6.0.0
- [IMMUTANT-376] - Bump up immutant.web's ring dep to 1.2.1
- [IMMUTANT-379] - loading immutant.xa before runtime initialization causes immutant.xa.transactions/manager to be nil
- [IMMUTANT-380] - Support data.fressian as a codec
- [IMMUTANT-381] - Update to leiningen-core 2.3.4
- [IMMUTANT-382] - Update HornetQ to 2.3.1.Final
- [IMMUTANT-383] - at-exit fn seems to execute at point where clojure runtime not available
- [IMMUTANT-387] - Drop support for clojure 1.3.0
- [IMMUTANT-389] - AbstractMethodError when using transactions (database)
- [IMMUTANT-391] - messaging.core/delayed shouldn't call the given fn on a realized? call
- [IMMUTANT-392] - Disable the full build, and adjust for having just a slim build
- [IMMUTANT-393] - Spruce up docs around running Immutant
- [IMMUTANT-394] - Enable org.clojure/java.classpath to work inside Immutant
- [IMMUTANT-395] - Support fn definitions in :nrepl-middleware
- [IMMUTANT-396] - msg/start docs should mention that :durable and :selector are only for queues
- [IMMUTANT-397] - Consider validating options passed to various fns
- [IMMUTANT-398] - Reduce logging noise