Ceylon,Node.js,Atomがいずれも今週,安定版のアップグレードを行った。今回の記事では,これら新バージョンで提供される注目すべき機能や拡張について,まとめてお伝えしよう。
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に加えて,コードリグレッション対策としてbetaとstableという2つのチャネルを新たに導入した。単一のコードベースを使用してリリースを直接作成する方法は,モデル的には単純でオーバーヘッドも少ない反面,リリース公開されたコードに障害が発見された場合の問題は極めて大きい。変更の一部をロールバックして問題を修正したマイナーリリースを新たに作成する時に,最初のリリースとロールバック間の,テストが完了していない新機能が混入する可能性があるからだ。別々のチャネルを用意してベータ版を切り離せば,この問題は解決する。
Atom 1.1では,フォントの測定に新しいアプローチが導入されている。DOMを基本としている点は同じだが,よりコントロールされた方法だ。その背景には,フォントの測定がIDEを遅くするという問題がある。GCによる停止時間の最小化によって,パフォーマンスも改善された。この改善は,新しいコンテンツのレンダリング時に毎回ノードを生成するのではなく,DOM要素を再利用することによって実現されている。Atom 1.1にはその他にも,ファジー検索による検索結果の改善,マークダウンのプレビューでインストール済みテーマが使用されるようになった,などの改良点に加えて,いくつかの修正が行われている。発表記事には,Atomの最新バージョンで提供される機能拡張がすべて示されている。