LoginSignup
10
11

More than 5 years have passed since last update.

Dart1.7リリースノート

Last updated at Posted at 2014-10-17

先日Dart1.7のリリースノートが発表されました。言語自体への目立った新機能の追加はないですが、apt-get対応やhomebrew対応、"pub global"の正式実装など周辺環境の改善が多く、新たにDartを始めやすい環境が整いつつあると感じました。以下は個別の解説です。

dart:asyncに関する変更

ZoneにerrorCallbackメソッドを追加

FutureやStreamの中でthrowされたエラーがエラーハンドルされる前に割り込みの処理を入れられるようになりました。

AsyncError errorCallback(Object error, StackTrace stackTrace)

主な使い道はZoneを継承した独自のZoneに置けるエラー処理だと思います。errorCallbackの返り値がnullである場合は、そのまま本来のエラーハンドラに同じ引数が渡されます。逆にnullでないAsyncErrorオブジェクトを返した場合は、その新しいオブジェクトが元のエラーの代わりにエラーハンドラに渡されます。

新メソッドの追加ですので、名前衝突していない限り既存のコードに影響はないです

dart:ioに関する変更

HttpClientのclose処理に関する変更

詳細はこちらに別記されています。これまでHttpClientはアイドルタイムアウト時間が設定されている場合、HttpClient#closeを呼びださなくても自動でシャットダウンしていましたが、1.7からはcloseの呼び出しが必須となりました。

アイドルタイムアウトのみを設定していたコードでは修正の必要があります。

HttpServerにautoCompressプロパティを追加

これまでは常に有効となっていたコンテンツの圧縮の有効・無効を設定できるようになりました。これからはデフォルトで圧縮しない設定になります。Dart1.7にアップデートしてHttpServerの挙動が変わったと思ったらここをtrueにしてみるといいかもしれません。

dart:isolateに関する変更

Isolate.spawnUriメソッドにpausedとpackageRootの2つのオプショナル引数を追加

これは地味に大きな変更かもしれません。

packageRootパラメータはfileもしくはhttphttpsでなくてはなりません。 末尾に/がついていなくても自動で付与されます。また、spawnされて起動する新しいIsolateでの外部パッケージのインポート("package:foo/bar.dart"のような) は、packageRoot.resolve("foo/bar.dart")として解決されます。省略した場合はspawn元と同じものが使われます。

次にpausedですが、これがtrueである場合は起動されるIsolateはポーズされた状態で起動されます。つまり、 isolate.pause(isolate.pauseCapability)が呼ばれたような状態で起動されます。この状態で起動できることにより、Isolateの実行前にセットアップなどの処理が行えるのが利点です。改めて実行させるにはisolate.resume(isolate.pauseCapability)を呼び出せばいいです。

ちなみにpackageRootpausedはまだすべてのプラットフォームで実装されているわけではないので、実行環境によりエラーとなる可能性があります。

pubに関する変更

実行可能なパッケージをPATHから実行できるようにする変更

pub globalについてはこちらを御覧ください。また、この機能に関するブログ記事があります。

1.6までは、pub global activate hogehogeされたパッケージを実行するにはpub global run hogehogeと呼びださなければなりませんでしたが、次の方法により直接hogehogeと呼び出せるようになります。

  1. pubのキャッシュにPATHを通す
    デフォルトでは~/.pub-cache/binです。
  2. activateする
    pub global activate hogehogeとすることで実行可能にできます。

CLIとしてのDartの使い勝手があがることで今後の普及に一役買いそうです。

dart2jsに関する変更

同一ページでの複数のdeferred loadingが有効になった

1つのページに複数のDartアプリがあり、それぞれでdeferred loadingが正しく機能するようになりました(何かバグがあったんだろうか・・・)

ソフトウェア配布に関する変更

Debianリポジトリが追加された

Debian系OSにおいてapt-getでDartSDK(DartiumやDartEditorはまだ)がインストールできるようになりました。が、最初にリポジトリの追加のためのセットアップ作業が必要なのでこちらを参考にしてください。

MacユーザーのためにHomebrewをサポートした

以前からhomebrewでDartがインストールできるようになってましたが、Dart開発チームでも使うようになったみたいで、公式にサポートするようにしたみたいです。


以上Dart1.7の主な変更点です。今回は控えめなアップデートですが、この後には待望の async/awaitが待っているのでDartisansとして目が離せないですね

10
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
11