Monger is an idiomatic Clojure MongoDB driver for a more civilized age.
It has batteries included, offers powerful expressive query DSL, strives to support every MongoDB 2.0+ feature and has sane defaults.
It also has solid documentation.
Langohr no longer implements automatic connection recovery
of its own. The feature is still there and there should be no
behaviour changes but the functionality has now been pushed
“upstream” in the Java client, so Langohr now relies on it
to do all the work.
There is two public API changes:
com.novemberain.langohr.Recoverable is gone, langohr.core/on-recovery
now uses com.rabbitmq.client.Recoverable instead in its signature.
Server-named queues will change after recovery. Use langohr.core/on-queue-recovery
to register a listener for queue name change.
Cassaforte is a Clojure client for
Apache Cassandra and DataStax Enterprise. It is built around CQL 3 and focuses on ease
of use. You will likely find that using Cassandra from Clojure has
never been so easy.
2.0.0 is a major release that introduces breaking API changes, new features and
compatibility with Cassandra 2.1.
Providing a :cipher-suites key in the :ssl connection option allows to specify cipher suites
that are enabled when connecting to a cluster with SSL.
The value of this key is a Seq of Strings (e.g. a vector) where each item specifies a cipher suite:
The :cipher-suites key is optional and may be omitted, in which case Datastax Java driver’s
default cipher suites (com.datastax.driver.core.SSLOptions/DEFAULT_SSL_CIPHER_SUITES) are enabled.
This can be used to work around the need to install Java Cryptography Extension (JCE) Unlimited Strength
Jurisdiction Policy Files required by the default set of cipher suites. TLS_RSA_WITH_AES_128_CBC_SHA
is a suite in the default set that works with the standard JCE. E.g. by specifying just that one,
as in the code example, the standard JCE is enough.
To preserve Cassandra 2.0 compatibility yet continue using the most recent Cassandra Java driver
Cassaforte now uses native protocol v2 by default. v3 can be opted into
using the :protocol-version connection option (with value of 3).
Double Licensed Under APL 2.0 and EPL 1.0
The project is now double-licensed under the Eclipse Public License 1.0
and Apache Public License 2.0. The codebase now includes APL 2.0 headers.
License files for both APL 2.0 and EPL 1.0 are included
in the distribution.
Fetch Size Support
(Internal to the client) automatic paging of result set rows now can be configured
or disabled altogether, e.g. when running into problems similar to CASSANDRA-6722.
clojurewerkz.cassaforte.client/with-fetch-size is a macro that does that:
(require'[clojurewerkz.cassaforte.client:ascc]);; alter page size(cc/with-fetch-size8192(comment "SELECT queries go here"));; disable internal client paging(cc/with-fetch-sizeInteger/MAX_VALUE(comment "SELECT queries go here"))
Default fetch size is unaltered (Cassaforte relies on the Java driver default). This setting
only makes sense for a certain subset of SELECT queries.
Clojure 1.4 and 1.5 Support Dropped
Cassaforte now requires Clojure 1.6.0.
Collections Converted to Clojure Data Structures
Cassandra maps, sets and lists are now automatically converted to their
immutable Clojure counterparts.
It is now possible to connect to a node and switch to a namespace
using a URI string:
(ns cassaforte.docs(:require[clojurewerkz.cassaforte.client:ascc]));; connects to node 127.0.0.1:9042 and uses "new_cql_keyspace" as keyspace(cc/connect-with-uri"cql://127.0.0.1:9042/new_cql_keyspace")
:compression is a new option that can be used when connecting:
Buffy is a Clojure library to working with binary data, writing complete
binary protocol implementations in Clojure, storing complex data
structures in an off-heap cache, reading binary files and doing everything
you would usually do with byte buffers.
Buffy is built on top of Netty byte buffers, which addresses many long standing issues
Buffy enables you to access buffers in the similar way you work with
the regular Clojure data structures. You can get and set fields separately from one
another, give names to different parts of binary representation and so on:
partial deserialization (read and deserialise parts of a byte buffer)
named access (access parts of your buffer by names)
composing/decomposing from key/value pairs
many useful default types that you can combine and extend easily
Data types used in Buffy buffers include:
primitive types, such as int32, boolean, byte, short, medium, float, and long
repeated type (repeat any primitive arbitrary amount of times in payload)
enum type (for mapping between human-readable and binary representation of constants)
The 1.0 release
Starting with the 1.0 release Buffy API is considered to be moderately stable. Releases can
be expected to follow a very SemVer-like change strategy. Most of the work now will
go into minor improvements based on community feedback.