今月の初め，Clojureコミュニティの主要な開発者のひとりであるAlex Miller氏が，Clojureの最新バージョンを発表した。小規模な拡張や16件のバグフィックスも含まれているClojure 1.8の中で，注目すべき新機能はダイレクトリンク，文字列関数，そしてソケットサーバだ。

歴史あるLispプログラミング言語の現代的ダイアレクトであるClojureがデビューしたのは2007年の10月，最初の安定リリース版が提供されたのが2009年である。それ以来，ほぼ1年に1回のペースでリリース候補が採用されているが，最新のコメントによると，6ヶ月毎の新規リリースを目標にしているという。

3つの新機能の関連性はあまりないが，いずれもClojureユーザにとって大きなメリットがある。そのひとつであるダイレクトリンクは，通常の関数が２段階で間接呼び出しされるのに対して，直接的かつ静的な呼び出しを行なうことで，パフォーマンスの向上を実現するものだ。これにはまた，JVMがJIT(Just In Time)コンパイルでコードを最適化することができるというメリットもある。このアプローチのデメリットのひとつは，メソッドのダイナミズムが失われることだ。実行時にメソッドを再定義することはできなくなる。ただし，特定の関数に対してメタデータ“^redef”アノテーションをマークすれば，選択的にこのフラグをオフにすることが可能だ。バージョン1.8ではClojureのすべての関数に対して，このフラグがデフォルトでオンになっている。

もうひとつ，ネイティブな文字列関数として，index-of, last-index-of, starts-with?, ends-with?, includes? が追加された。この機能はこれまで，Java Stringクラスのメソッドを(Java InteropというJavaネイティブ相互運用機能を通じて)直接呼び出さなくてはならなかったものだ。ダイレクトリンクの目的とは対照的に，新しい文字列関数は，既存の手段に比べると多少パフォーマンスが悪くなっている。しかしながら，これら関数が提供されることによる開発の容易化のため，この機能はClojure JIRAチケット中最も多い29票を集めている。これらの機能はClojureScriptにも追加されている。

最後の新しいソケットサーバは，コマンド行あるいはコンフィギュレーションファイル内で関数名を指定するだけで，任意のClojureアプリケーション用のソケットサーバ生成を可能にする機能だ。これを新しいclojure.core.server/repl関数と併用することで，デバッグあるいはデプロイメントを目的とした，実行中のアプリケーションとのインタラクションが可能になる。変数値のチェックや，さらには実行時の関数再定義などは，REPLモジュールで可能だ。しかし２つの理由から，この機能を本番環境で使用することは望ましくない。ひとつは，実行中のアプリケーションに対話可能なオープンサーバを用意することから，必然的に生じるセキュリティ上の懸念であり，もうひとつは，ダイレクトリンクが有効な場合(パフォーマンスが重要ならばその可能性は高い)はメソッドの再定義が動作しないため，REPLサーバにはあまり価値がないことだ。

これら機能以外にも，Clojure 1.8には多数の変更が加えられている。その内容は公式リリースノートで確認可能だ。