はじめに

12月3日に Stack version 1.9.3 がリリースされました。

更新は stack upgrade コマンドを実行します。

$ stack upgrade
...

$ stack --numeric-version
1.9.3

今回はバグフィックスが3点のみです。

Changelog (翻訳)

バグフィックス

  • Stack をコンパイルする際に .git ディレクトリが含まれていない場合、コンパイルに失敗する問題を修正しました。詳細: #4364

この問題は Stack をビルドする人の話なので、普通の人は問題になりませんが、githash を使っている人は自分のアプリケーションでも起こりうる問題なので注意です。

Stack はバージョン情報に git の情報を含めるために gitrev を使っていたのですが、現在は開発が止まっているようで githash に切り替えました。(Switch to githash to include some unmerged bugfixes in gitrev #4130)

今回の問題を修正するために実装された tGitInfoCwdTry 関数を使うことで .git ディレクトリが存在しない場合でもコンパイルできるようになります。

参考リンク


  • GHC が生成する hi-dump ファイルの addDependentFile 関連のフォーマット変更 (ハッシュを含むようになった) に対応しました。詳細: yesodweb/yesod#1551

Yesod で報告された問題に対する修正です。.hi-dump フォーマットが変わったので、それに対応しました。shakespeare の問題なので主に Yesod ユーザに影響があるかと思われます。以下のバージョンを利用すればこの問題は解決するため、この現象で悩んでいる人は stack と shakespeare の両方を更新しましょう。

  • stack >= 1.9.3
  • shakespeare >= 2.0.19

stack は GHC が出力する hi ファイルの情報を内部で利用しているため、このようなことが起きます。(ビルド時にデフォルトで -ddump-hi -ddump-to-file オプションが追加されています)

-ddump-to-file が自動的に追加されてしまうせいで -ddump-splices の結果を表示しようとしてもコンソールに出力されなかったりして不便だったので出力先のディレクトリを指定できるようにしました。たぶん次のメジャーリリースで使えるようになると思います。

参考リンク


  • テンプレートファイルのファイル名に変数が利用できるようになりました

こんな感じで使えます。

{-# START_FILE {{name}}.cabal #-}
name: {{name}}
version: 0.0

参考リンク


Changelog (オリジナル)

Bug fixes

  • Stack can now be compiled again inside a directory that does not contain a .git directory, see #4364
  • Handle a change in GHC’s hi-dump format around addDependentFile, which now includes a hash. See yesodweb/yesod#1551
  • Allow variables to appear in template file names.