新リリース紹介: Ceylon 1.2, Node.js 5.0, Atom 1.1

CeylonNode.jsAtomがいずれも今週,安定版のアップグレードを行った。今回の記事では,これら新バージョンで提供される注目すべき機能や拡張について,まとめてお伝えしよう。

Ceylon 1.2

Ceylon 1.1から1年後にリリースされたバージョン1.2では,次のような機能が提供される。

  • 名前付きコンストラクタ – オーバーローディングに依存しない,小文字で始まる(クラス名以外の)名称を持つ。名前付きコンストラクタは,キーワードnewで宣言する。
  • シリアライズ
  • ネイティブアノテーション
  • 改善されたフローセンシティブな型機能
  • let, switch, if
  • インラインオブジェクト式
  • タプルとエントリのデストラクタ
  • シングルトンのメンバの直接インポート
  • 等々。

immutable mapおよびset,Collection.permutations(), formatFloat()など,新たなAPIも導入されている。Javaコンパイラが改良され,MavenおよびJavaアノテーションとの相互運用性が向上するとともに,Scalaライブラリとの基本的な互換性がサポートされ,コンパイルされたクラスがシリアライズ可能になった。JavaScriptコンパイラは型関数(type function)をサポートしている。デバッガが更新され,モジュールをJava EE WARアーカイブにパックできるようになった。IDEにも多くの拡張機能があり,オンラインIDEが再設計された。Ceylon 1.2の新機能と拡張機能の完全なリストについては,Gavin Kings氏の発表を見るとよいだろう。

Node.js 5.0

小刻みなリリース(0.x.y)を長く続けていたNode.jsは,今年に入ってソースコードのコミットとバージョン更新のペースが向上し,毎月ないし数ヶ月毎に新たなメジャーバージョンが提供されるようになった。Node.js 5.0は,2016年4月にLTS(long time supported)としてリリース予定のv6.0につなぐ,中間バージョンの位置付けにある。安定性を必要とするユーザは,引き続きバージョン4.xを使用するのがよいだろう。

Node.js 5.0は最新機能を確認したい人を対象にしているが,互換性を損なう変更点も非常に多い。さらに,V8の新バージョンを採用したことにより,ネイティブアドオンはすべて再コンパイルが必要になる。こちらの記事には,変更点の全項目が説明されている。

Atom 1.1

今回のリリースは,先日発表されたbetaチャネルによる最初のバージョンになる。Atomチームはmasterに加えて,コードリグレッション対策としてbetastableという2つのチャネルを新たに導入した。単一のコードベースを使用してリリースを直接作成する方法は,モデル的には単純でオーバーヘッドも少ない反面,リリース公開されたコードに障害が発見された場合の問題は極めて大きい。変更の一部をロールバックして問題を修正したマイナーリリースを新たに作成する時に,最初のリリースとロールバック間の,テストが完了していない新機能が混入する可能性があるからだ。別々のチャネルを用意してベータ版を切り離せば,この問題は解決する。

Atom 1.1では,フォントの測定に新しいアプローチが導入されている。DOMを基本としている点は同じだが,よりコントロールされた方法だ。その背景には,フォントの測定がIDEを遅くするという問題がある。GCによる停止時間の最小化によって,パフォーマンスも改善された。この改善は,新しいコンテンツのレンダリング時に毎回ノードを生成するのではなく,DOM要素を再利用することによって実現されている。Atom 1.1にはその他にも,ファジー検索による検索結果の改善,マークダウンのプレビューでインストール済みテーマが使用されるようになった,などの改良点に加えて,いくつかの修正が行われている。発表記事には,Atomの最新バージョンで提供される機能拡張がすべて示されている。