stack 1.0.0が出たので私が初めて使った時からの更新をピックアップ

:star: ナウでヤングなHaskeller :sunglasses: に絶賛定着中の[stack](http://docs.haskellstack.org/en/stable/README.html), ついに[v1.0.0](https://github.com/commercialhaskell/stack/releases/tag/v1.0.0)がリリースされました！ :tada:
:santa: クリスマスプレゼント :gift: です！

と、いうわけでタイミングよくネタを頂いたので[私が初めてstackについて記事を書いた時](http://qiita.com/igrep/items/da1d8df6d40eb001a561)からもりもり入った更新のうち、
私が気になったものを[リリースノート](https://github.com/commercialhaskell/stack/releases)から拾って取り上げたいと思います！
当時はまだ[v0.1.3.1](https://github.com/commercialhaskell/stack/releases/tag/v0.1.3.1)だったんですね。
といってもまだたった3ヶ月しか経ってませんけど！

# 設定ファイルのディレクトリ構成が変わった ([v0.1.6.0](https://github.com/commercialhaskell/stack/releases/tag/v0.1.6.0))

当時から使用している方にすれば恐らく一番重要な修正だと思うので一番最初に挙げます。
目的がより明確になるよう、設定ファイル・ディレクトリの名前が次のように変わりました。

- `~/.stack/stack.yaml` :arrow_right: `~/.stack/config.yaml`
- `~/.stack/global/` :arrow_right: `~/.stack/global-project/`
- `/etc/stack/config` :arrow_right: `/etc/stack/config.yaml`

# UbuntuとDebianパッケージのリポジトリのURLが変わった ([v0.1.10.0](https://github.com/commercialhaskell/stack/releases/tag/v0.1.10.0))

これも互換性に絡む修正です。よりDebianのガイドラインに沿うものに変えたそうです。
:warning: **数カ月後に古いものを廃止**する予定だそうなので移行はお早めに。
詳しくは[こちら](http://docs.haskellstack.org/en/stable/install_and_upgrade.html#ubuntu)をご覧ください。

# `--profile` フラグ、`--trace`フラグの追加 ([v1.0.0](https://github.com/commercialhaskell/stack/releases/tag/v1.0.0))

`stack build`コマンドに`--profile`フラグと`--trace`フラグが追加されました。
`--profile`は`--bench`や`--test`と併せて使った時にプロファイリングした結果を吐き出せるようにします。
`--trace`は**例外発生時にスタックトレースを出力できる**ようにするそうです。
どちらもビルドしたコマンドの実行時に必要なRTSオプション（GHCのランタイムシステムに備わった拡張機能を実行するためのもの）を追加することで実現するようです。
（試しに使ってないので間違ってたらごめんなさい）

いずれもこの手の機能がわかりやすい名前のオプションで使えていいですね！ :star2:

# `stack new`コマンドが独自のテンプレートファイルを受け付けるようになった。

テンプレートの作り方は https://github.com/commercialhaskell/stack-templates にある各種 `.hsfiles` ファイルを参考にすればいいでしょう。
ローカルにある`.hsfiles`ファイルだけでなく、リモートサーバーに置いたものでもいいみたいです。
つまり、

```
stack new http://example.com/my-powerful-template.hsfiles
```

でもよいらしいです。

# Windowsのサポートの改善

[v0.1.6.0](https://github.com/commercialhaskell/stack/releases/tag/v0.1.6.0)でWindowsのパスの長さの制限に対応するなど、なんか色々良くなっているみたいです。
また、それまで別途作っていた[MinGHCの機能を全て置き換える](http://neilmitchell.blogspot.co.uk/2015/12/minghc-is-dead-long-live-stack.html)ようになったとか。

# stack evalコマンド ([v0.1.6.0](https://github.com/commercialhaskell/stack/releases/tag/v0.1.6.0))

**ghci**を起動するまでもなくGHCを電卓代わりに使いたい人向けの機能です。
`stack ghc -- -e 'Haskellの式'` 相当のことが `stack eval 'Haskellの式'`で出来ます。

```shell-session
$ stack eval 'take 5 [x * 2 | x <- [2, 4..]]'
[4,8,12,16,20]
```

# hackageへのアップロード時、GPGを用いたパッケージの署名 ([v0.1.10.0](https://github.com/commercialhaskell/stack/releases/tag/v0.1.10.0))

忘れてはなりません。
stackはstackageのパッケージを扱うだけでなく、hackageのパッケージを扱うことも出来ます。
そもそもがcabalのラッパーですからね。
当然のごとくhackageへのアップロードもできるのですが、
`stack upload --sign`とすれば、アップロードするパッケージに対して署名できるようです。
`stack sig sign`とすればアップロードしないで署名だけできる、のかな？

# LTS Haskellのバージョンを変えた時、可能であればコンパイルしたバイナリを再利用する機能 ([v0.1.4.0](https://github.com/commercialhaskell/stack/releases/tag/v0.1.6.0))

新しいLTS Haskellをインストールするたびに古いものを消すとかいうみみっちいことをしなくてよくなるっぽいです。

# とりあえずこの辺にしておきます :sweat_drops:

:bow: 申し訳なくも、リリースノートを読んだだけでちゃんと自分で試せているわけではないので、誤解している部分などあるかもしれませんがご容赦を！

それでは急ぎ足になってしまいましたが2016年もHappy Haskell Stack-ing! :christmas_tree: