We're happy, happy, happy to announce Immutant 1.0.2 - "HamBiscuit".
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:
- It's now possible to use Immutant's integrated Infinispan data grid as a Datomic data store. We'll provide more details on this in a future blog post.
- We now expose the max number of HTTP connections as a system property.
- We've attempted to make the
immutant.cache
API more functional by introducing a swap! function. - We've extended the fanout capabilities of pipelines.
- We now default
:nrepl-port
to 0 when the:dev
profile is active.
The last item deserves some emphasis. What it means is that unless you
explicitly set :nrepl-port
to nil
in either project.clj
or
profiles.clj
, you'll get a dedicated nREPL service for any app you
deploy to your Immutant with the :dev
profile active. When
developing, this is convenient and desired, but it means you should
probably take care to deploy your app to production without activating
the :dev
profile, i.e. use the with-profile
Leiningen subtask. The
risk of not doing so is still small as the OS-assigned port is bound
to localhost by default and unlikely to be exposed.
The rest was mostly
doc enhancements and bug
fixes, listed below. We wanted to give a special shout-out to
Ian Eslick for not only contributing the fix
for IMMUTANT-365 but
also helping us make the
lein-immutant plugin's test
task more robust. Thanks!
Get It
The simplest way to install or upgrade to 1.0.2 is via our Leiningen plugin:
$ lein immutant install 1.0.2
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 1.0.2
- [IMMUTANT-292] - Configure an Immutant cluster as a Datomic data store
- [IMMUTANT-349] - daemons/create should accept a keyword for a daemon name
- [IMMUTANT-350] - Can't seem to queue custom edn tagged elements
- [IMMUTANT-351] - 'unlisten'ing a listener doesn't remove its MBean
- [IMMUTANT-352] - Provide configuration option for binding REPL endpoints to different interfaces
- [IMMUTANT-353] - Invalid cache replication modes should toss an exception
- [IMMUTANT-355] - Expose number of HTTP service threads as a parameter
- [IMMUTANT-358] - Expose a 'keys' fn to list jboss service names in the registry
- [IMMUTANT-363] - provide a wrapping function that applies fanout to a pipeline step externally
- [IMMUTANT-364] - Unscheduling a job hangs in a cluster
- [IMMUTANT-365] - Applications using the servlet interface cannot use servlet-sessions as documented
- [IMMUTANT-367] - Update to leiningen-core 2.3.3
- [IMMUTANT-368] - Doc the test task's unique context path (app-uri) better
- [IMMUTANT-369] - Restore mbeans for jobs
- [IMMUTANT-370] - Implement cache/swap! in terms of cache/put-if-replace
- [IMMUTANT-371] - message-seq only uses options for the first receive, not subsequent ones
- [IMMUTANT-372] - Default :nrepl-port to 0 when dev profile is active