祝 Elm 0.19 リリース!
https://elm-lang.org/blog/small-assets-without-the-headache
New version of @elmlang out today!
— Evan Czaplicki (@czaplic) 2018年8月21日
Compiler generates small assets by default.
Just add the --optimize flag!https://t.co/N1Mkbv0OzC pic.twitter.com/PXyQMlYY31
1年半ウォッチしていたので覚えている範囲で書いてみる。
追記
↓ここに全部書いてあるじゃん。というか上の記事からリンクされてたし、この記事いらないじゃん。
コンパイルが速くなった
タプルで大量にパターンマッチした時に遅くなる件も改善。
--optimize でサイズの最適化
出力される JS のサイズが小さくなる。 関数単位のデッドコード除去が可能(Google Closure Library の advanced compile 相当) Debug モジュールを使用していると --optimize できないので注意。
単一コンストラクタでメモリを消費しなくなった
これは --optimize をつけた時だったかな、覚えてない。
type T = T Foo
みたいにした時に T で包むのを省略する。
シングルバイナリになった
Elm Platform はもうない。 elm-make
の代わりに elm make
と打つ。
コマンドラインの刷新
--warn
が消えたelm init
で最低限のプロジェクトを生成できるようになったelm install
をプロジェクトを初期化せずにelm make
で全部やるようになった
elm-package.json が elm.json になった
アプリケーション用とライブラリ用で書き方が変わる。
アプリケーションの場合はバージョンが固定されて lock ファイルになる。
test-dependencies
という項目ができたのでテスト用にもう一つ JSON を用意する必要がなくなった。
初期状態でインストールされるのは elm/core
と elm/json
の2つで、 HTML などは手動でインストールする必要がある。
elm-stuff の役割が変わった
パッケージやそのビルド生成物は ~/.elm
にキャッシュされることになった。
CI とか Docker の設定で注意が必要かもしれない。
ユーザー定義の演算子が禁止された
もう作れない。
いくつかの演算子が消えた
!
はもうない%
はmodBy
とremainderBy
になった
トリッキーな関数が消えた
flip
curry
uncurry
人類には早かった。
シャドーイングが禁止された
同スコープに定義されている関数と同名のローカル変数を作ることができない。
公式リポジトリが elm-lang から elm になった。
ついでにバージョンが 1.0.0 にリセット。
Browser が登場
Html.program 系の関数がここに集約された。 Navigation, Mouse, Keyboard, Dom もここに統合された。 Navigation 相当の機能は fullscreen の時のみ使用可能。
Html.Events のデコーダーが柔軟になった
「デコードした時に特定の条件だった時に preventDefault しない」のようなことが可能になった。
DOM のイベントを同期的に実行するようになった
ブラウザのセキュリティ機能で、ユーザーインタラクションの直後じゃないとコピペなどが正しくハンドリングされない問題を解消した。
Debug モジュールの刷新
- Debug.crash が Debug.todo になった。
- toString が Debug モジュールに入った。
String.fromInt, String.fromFloat
toString
は使わない。
型を変えた時に人知れず表示がバグっていたので嬉しい。
(,) が消えた
今は Tuple.pair
。
Html.Lazy が 8 引数まで拡張された
今まで3だった。
Array, Dict, Set の実装が新しくなった
速くなった。 Array は今までバグがあった。
Random の実装が新しくなった
PCG アルゴリズムを使うようになった。
Time の実装が新しくなった
より実用的になって elm/time として生まれ変わった。
Color が core から消えた
旧石器時代からあったやつ。
Regex が core から消えた
Parser を使って欲しそう。
elm-tools/parser が elm/parser に昇格
API も色々刷新された。
再帰的な関数のバグが直った
どれのことだったか忘れた。
リテラルで巨大なリストを作れないバグが直った
[1,2,3, ... 5800 ]
みたいなやつ。
Module.Record.property を正しくパースするようになった
定数を使う時に苦労していたので地味に嬉しい。
エラーメッセージがさらに改善された
どれのことだったか忘れた。
Native -> Kernel
Native モジュールが Kernel モジュールに名称変更。 JS を書くのが許されているのは elm と elm-exploration の2つだけ。
ドキュメントが充実した
公式サイト・ガイド、コアライブラリの解説が増えた。
Union Type という表記が消えた
名称が紛らわしかった。今は Custom Type と書いてある。