ナウでヤングなHaskeller に絶賛定着中のstack, ついにv1.0.0がリリースされました!
クリスマスプレゼント です!
と、いうわけでタイミングよくネタを頂いたので私が初めてstackについて記事を書いた時からもりもり入った更新のうち、
私が気になったものをリリースノートから拾って取り上げたいと思います!
当時はまだv0.1.3.1だったんですね。
といってもまだたった3ヶ月しか経ってませんけど!
設定ファイルのディレクトリ構成が変わった (v0.1.6.0)
当時から使用している方にすれば恐らく一番重要な修正だと思うので一番最初に挙げます。
目的がより明確になるよう、設定ファイル・ディレクトリの名前が次のように変わりました。
-
~/.stack/stack.yaml
~/.stack/config.yaml
-
~/.stack/global/
~/.stack/global-project/
-
/etc/stack/config
/etc/stack/config.yaml
UbuntuとDebianパッケージのリポジトリのURLが変わった (v0.1.10.0)
これも互換性に絡む修正です。よりDebianのガイドラインに沿うものに変えたそうです。
数カ月後に古いものを廃止する予定だそうなので移行はお早めに。
詳しくはこちらをご覧ください。
--profile
フラグ、--trace
フラグの追加 (v1.0.0)
stack build
コマンドに--profile
フラグと--trace
フラグが追加されました。
--profile
は--bench
や--test
と併せて使った時にプロファイリングした結果を吐き出せるようにします。
--trace
は例外発生時にスタックトレースを出力できるようにするそうです。
どちらもビルドしたコマンドの実行時に必要なRTSオプション(GHCのランタイムシステムに備わった拡張機能を実行するためのもの)を追加することで実現するようです。
(試しに使ってないので間違ってたらごめんなさい)
いずれもこの手の機能がわかりやすい名前のオプションで使えていいですね!
stack new
コマンドが独自のテンプレートファイルを受け付けるようになった。
テンプレートの作り方は https://github.com/commercialhaskell/stack-templates にある各種 .hsfiles
ファイルを参考にすればいいでしょう。
ローカルにある.hsfiles
ファイルだけでなく、リモートサーバーに置いたものでもいいみたいです。
つまり、
stack new http://example.com/my-powerful-template.hsfiles
でもよいらしいです。
Windowsのサポートの改善
v0.1.6.0でWindowsのパスの長さの制限に対応するなど、なんか色々良くなっているみたいです。
また、それまで別途作っていたMinGHCの機能を全て置き換えるようになったとか。
stack evalコマンド (v0.1.6.0)
ghciを起動するまでもなくGHCを電卓代わりに使いたい人向けの機能です。
stack ghc -- -e 'Haskellの式'
相当のことが stack eval 'Haskellの式'
で出来ます。
$ stack eval 'take 5 [x * 2 | x <- [2, 4..]]'
[4,8,12,16,20]
hackageへのアップロード時、GPGを用いたパッケージの署名 (v0.1.10.0)
忘れてはなりません。
stackはstackageのパッケージを扱うだけでなく、hackageのパッケージを扱うことも出来ます。
そもそもがcabalのラッパーですからね。
当然のごとくhackageへのアップロードもできるのですが、
stack upload --sign
とすれば、アップロードするパッケージに対して署名できるようです。
stack sig sign
とすればアップロードしないで署名だけできる、のかな?
LTS Haskellのバージョンを変えた時、可能であればコンパイルしたバイナリを再利用する機能 (v0.1.4.0)
新しいLTS Haskellをインストールするたびに古いものを消すとかいうみみっちいことをしなくてよくなるっぽいです。
とりあえずこの辺にしておきます
申し訳なくも、リリースノートを読んだだけでちゃんと自分で試せているわけではないので、誤解している部分などあるかもしれませんがご容赦を!
それでは急ぎ足になってしまいましたが2016年もHappy Haskell Stack-ing!