GHC 7.6.1 リリース

597 views
Skip to first unread message

shelarcy

unread,
Sep 8, 2012, 5:43:16 PM9/8/12
to haske...@googlegroups.com
こんにちは。

GHC 7.6.1 がリリースされてますね。

http://www.haskell.org/ghc/download_ghc_7_6_1
http://www.haskell.org/pipermail/haskell/2012-September/023493.html

毎度の注意になりますが、GHC は一般ユーザー向けのリリースではありません。GHC 7.6.1 の新機能や改良がどうしても必要だというのでなければ、一般ユーザーの皆さんは11月に予定されている Haskell Platform のリリースまで待って下さい。

http://projects.haskell.org/pipermail/haskell-platform/2012-August/002136.html

今回のリリースの主な変更点は以下の通りです。


* Windows 64 bit 版

今回新しく Windows 64 bit 版が追加されました。

http://www.haskell.org/ghc/download_ghc_7_6_1#windows64

ただし、Haskell Platform に付属するいくつかのライブラリは、まだこの Windows 64 bit 版に対応してません。(cabal コマンド(cabal-install)のビルドに必要な network パッケージもまだ対応できていません。)

http://projects.haskell.org/pipermail/haskell-platform/2012-August/002195.html

現在対応していないライブラリの使用には、例えば Windows 64 bit 環境では意味を成さない stdcall の代わりに ccall を使う等の修正が必要です。

http://hackage.haskell.org/trac/ghc/ticket/3336
http://www.haskell.org/pipermail/cvs-ghc/2012-May/073071.html

 Windows 64 bit 上でのプログラミングに詳しくない方は、無理して GHC の Windows 64 bit 版を使わずに Haskell Platform が出るまでの間待った方が良いでしょう。


* 型エラーを実行時まで遅らせる -fdefer-type-errors

-fdefer-type-errors オプションを使うことで、ソースコード中に型エラーな式があっても、実行時に型エラーな式を実際に評価するまで型エラーの発生を遅らせられるようになりました。(ただし、型エラーな式があってもコンパイル時に何も言わないわけではなくて、型エラーな式の存在を一応警告します。)

http://www.haskell.org/ghc/docs/7.6.1/html/users_guide/defer-type-errors.html
http://hackage.haskell.org/trac/ghc/wiki/DeferErrorsToRuntime

従来 undefined などを使って無理矢理型を合わせていた場面で使うと便利かもしれません。

(なお、これとは別に、Emacs の Agda mode の Hole に相当する機能を入れようという提案もあります。
http://hackage.haskell.org/trac/ghc/wiki/Holes
http://hackage.haskell.org/trac/ghc/ticket/5910


* マクロで定義された関数を呼び出すための CApiFFI

 現在の GHC の FFI では、通常 C のヘッダファイルを無視するようになっています。このため、マクロで関数名が定義されている場合には外部関数を直接呼び出すことができず、Cのソースコードを使って適切な関数を呼び出すためのラッパーを書いてやる必要がありました。

 これは少々不便なので、C の外部関数の呼び出しにマクロで定義された名前を利用するための CApiFFI という言語拡張が追加されました。(リリースノートやユーザーマニュアルでは CAPI と typo していますが、正しくは CApiFFI です。)

 CApiFFI を有効にすることで、マクロで定義された名前を利用する capi という呼び出し規約や、マクロで定義された関数に対して Haskell の型が C のどの型に対応するかを示すための CTYPES 指示文を使うことができます。

http://www.haskell.org/ghc/docs/7.6.1/html/users_guide/ffi.html#ffi-capi
http://www.haskell.org/pipermail/cvs-ghc/2012-February/070723.html


* レコードの更新機能の強化

 レコードの更新機能で、バン!パターンや view パターンを利用できるようになりました。

http://hackage.haskell.org/trac/ghc/ticket/6038
http://www.haskell.org/pipermail/cvs-ghc/2012-August/075439.html


* LambdaCase と MultiWayIf

無名の case 式を書くための LambdaCase という言語拡張と、if を使って条件分岐を列挙することを可能にする MultiWayIf という言語拡張が加わりました。

http://www.haskell.org/ghc/docs/7.6.1/html/users_guide/syntax-extns.html#lambda-case

なお、MultiWayIf をネストして利用した場合には問題があるらしく、今後 MultiWayIf の構文が多少変更されるかもしれません。

http://hackage.haskell.org/trac/ghc/ticket/4359#comment:91


* 型レベル文字列リテラルと型レベル数値リテラル

 DataKinds を使って、"Hello"のような文字列リテラルをSymbol種の文字列型、1のような数値リテラルをNat種の数値型に昇格させられるようになりました。

http://www.haskell.org/ghc/docs/7.6.1/html/users_guide/promotion.html#promoted-literals
http://www.haskell.org/ghc/docs/7.6.1/html/libraries/base-4.6.0.0/GHC-TypeLits.html

 ただし、文字列リテラルや数値リテラルを型として利用できるだけで、値レベルの文字列や数値を型レベルに持って行くための機能は提供されていません。値レベルの文字列や数値を型安全に型レベルに持って行くためには、他の型同様、GADTs を使って定義したデータ型を利用するコードを自分で書く必要があります。

(一応、sigletons というパッケージを使えば、Template Haskell でこの辺の処理をある程度楽に行うことができます。……が、現時点では GHC 7.6.1 の Template Haskell の変更に追従できていないようです。
http://hackage.haskell.org/package/singletons )

 また、型レベルの数に対する処理は(種類が少なく、型と型の等価性に対する判断も十分にできないような)不完全な形でしか提供されていませんし、型レベルの文字列に対する処理は提供されていません。これらを思い通りに扱うためには、型族を使った型関数を適宜自分で定義する必要があります。

 型レベルの数値リテラルに対しては、現在 type-nats branch で、こうした欠点を補うための機能の開発が行われています。今回型レベルの数値リテラルが入ったからといって直ぐに使わずに、type-nats branch での機能の完成と HEAD への統合を待つのも一つの手でしょう。

http://hackage.haskell.org/trac/ghc/wiki/TypeNats

(また、type-prelude パッケージなどの型レベルでプログラミングをするためのライブラリが発展していけば、それらを代わりに利用できるかもしれません。
http://hackage.haskell.org/package/type-prelude


* 多相種の陽な宣言が可能に

 GHC 7.4.1 の PolyKinds は、種変数を使えない不完全なものでした。このため*以外の種を使う場合、種を陽に書く必要のある型族で多相種を使うことができませんでした。ですが、GHC 7.6.1 からは種変数を書くことができるようになったため、多相種を使った型族も定義できるようになりました。

http://www.haskell.org/ghc/docs/7.6.1/html/users_guide/kind-polymorphism.html
http://hackage.haskell.org/trac/ghc/ticket/5862
https://github.com/ghc/testsuite/blob/ghc-7.6/tests/polykinds/PolyKinds12.hs
https://github.com/ghc/testsuite/blob/ghc-7.6/tests/polykinds/MonoidsTF.hs

 ただし、今回導入された種変数と型変数を両方使ったコードには、一見してどちらの変数なのか分かり難いという欠点があります。そこで将来的には、種変数と型変数を分かり易く区別できるような構文を導入することが検討されています。

http://hackage.haskell.org/trac/ghc/wiki/ExplicitTypeApplication


* Template Haskell の多様な種への対応

 Template Haskell が DataKinds や PolyKinds、ConstraintKinds などに対応しました。

http://www.haskell.org/ghc/docs/7.6.1/html/libraries/template-haskell-2.8.0.0/Language-Haskell-TH.html#g:30
http://www.haskell.org/ghc/docs/7.6.1/html/libraries/template-haskell-2.8.0.0/Language-Haskell-TH.html#g:15
https://github.com/ghc/testsuite/commit/d3598538a78cb5c35b6b03802dacd1b661d73a80


* Template Haskell の指示文への対応の強化

 これまでの Template Haskell では、INLINE 指示文や単純な SPECIALIZE 指示文、SPECIALIZE 指示文と INLINE 指示文を組み合わせた SPECAILIZE INLINE 指示文しか扱うことができませんでした。

 今回、指示文への対応が強化され、SPECAILIZE 指示文の残る機能(SPECIALIZE instance 指示文、GHC 7.4.1 で入った SPECILIZE 指示文の段階制御)や書き換え規則、INLINABLE 指示文を扱えるようになりました。

http://www.haskell.org/ghc/docs/7.6.1/html/libraries/template-haskell-2.8.0.0/Language-Haskell-TH.html#g:36
http://www.haskell.org/ghc/docs/7.6.1/html/libraries/template-haskell-2.8.0.0/Language-Haskell-TH.html#t:Pragma
http://hackage.haskell.org/trac/ghc/ticket/7064
http://www.haskell.org/pipermail/cvs-ghc/2012-August/075381.html

http://www.haskell.org/ghc/docs/7.6.1/html/libraries/template-haskell-2.8.0.0/Language-Haskell-TH.html#t:Inline
http://hackage.haskell.org/trac/ghc/ticket/5854
https://github.com/ghc/testsuite/blob/ghc-7.6/tests/th/T5700a.hs


* Generic1 クラスの導出インスタンス宣言対応

 DeriveGeneric 言語拡張で、Generic クラスだけではなく Generic1 クラスに対しても導出インスタンスを生成できるようになりました。

http://www.haskell.org/ghc/docs/7.6.1/html/users_guide/generic-programming.html
https://github.com/ghc/packages-base/blob/ghc-7.6/GHC/Generics.hs#L192

なお、混乱を避けるために、StandaloneDeriving で「データ型やデータ型族の宣言で型変数として定義されている型」を特定の型に固定する(instantiated)ような Generic/Generic1 クラスのインスタンスを導出することはできなくなりました。

http://hackage.haskell.org/trac/ghc/ticket/5939
http://hackage.haskell.org/trac/ghc/ticket/5936


* モジュールでエクスポートされていない構成要素に対する扱いの変更

モジュールでエクスポートされていない構成要素に対して hiding を使った場合、エラーにはせずに、-fwarn-dodgy-imports オプションを有効にした場合に警告を出すよう変更されました。

この変更は Haskell2010 の仕様からは逸脱するものです。ですが、言語拡張とするほどのものではないことと、実際の使用での利便性を考えた結果、言語拡張にはせずに GHC のデフォルトの振る舞いを変えることにしたそうです。

http://hackage.haskell.org/trac/ghc/ticket/7167


* GHCi での値の出力方法が変更可能に

GHCi での値の出力には通常 print 関数、つまり Show クラスの show メソッドを使って値を文字列に変換したものが使われます。この値出力用の関数を、-interactive-print オプションを使って「C a => a -> IO ()」型の任意の関数に置き換えられるようになりました。(C は値を出力する関数で利用する、任意の型クラスです。)

http://www.haskell.org/ghc/docs/7.6.1/html/users_guide/interactive-evaluation.html#ghci-interactive-print

一つ重要なのが、-interactive-print オプションを使って渡せるのは Show クラスを制約とする関数ではなく、任意の C クラスを使った「C a => a -> IO ()」型の関数が使えることです。これにより GenericPretty などのプリティプリンタを使った出力が可能になっています。

http://hackage.haskell.org/package/GenericPretty

{-# LANGUAGE DeriveGeneric #-}
import GHC.Generics
import Text.PrettyPrint.GenericPretty

data Tree a = Leaf a | Node (Tree a) (Tree a) deriving (Generic)
instance Out a => Out (Tree a)

$ ghci -interactive-print=Text.PrettyPrint.GenericPretty.pp Test.hs
~ (snip) ~
*Main> (Leaf "d")
~ (snip) ~
Leaf "d"
*Main> Node (Leaf 12) (Node (Node (Leaf 10) (Leaf 2)) (Leaf (3::Int)))
Node (Leaf 12)
(Node (Node (Leaf 10) (Leaf 2)) (Leaf 3))


* setNumCapabilities 関数でプログラムの実行に使用する CPU コア数を減らせるように

GHC 7.4.1 の setNumCapabilities 関数では、Haskell プログラムの実行に利用する CPU コア数を増やすことはできても、減らすことはできませんでした。今回ようやく、プログラムの実行に利用する CPU コア数を減らすこともできるようになりました。(利用する CPU コア数を減らす際には、当然減らすための後片付けが必要です。利用する CPU コア数を即座に減らせられるわけではない点に、注意してください。)

https://plus.google.com/107890464054636586545/posts/GsfcJfdkEYL
http://www.haskell.org/pipermail/cvs-ghc/2011-December/069032.html

また setNumCapabilities 関数を GHC.Conc モジュールではなく Control.Concurrent モジュールから利用できるようになりました。

http://www.haskell.org/ghc/docs/7.6.1/html/libraries/base-4.6.0.0/Control-Concurrent.html#v:setNumCapabilities


* forkFinally 関数

新しく作成したスレッドで、処理とその後片付けを行うような処理を行う場合、「forkIO (m `finally` k)」のような処理を書くと思います。ですが、実はこのコードには非同期例外をうまく扱えないという問題があります。

そこで Control.Concurrent モジュールに「forkIO (m `finally` k)」相当の処理をより堅牢に行うための、forkFinally 関数が追加されました。

http://www.haskell.org/pipermail/cvs-libraries/2012-June/015662.html
http://www.haskell.org/ghc/docs/7.6.1/html/libraries/base-4.6.0.0/Control-Concurrent.html#v:forkFinally


* 0を分母とする処理で RationZeroDenominator を例外として投げるように

これまで「1%0のような0を分母とする処理」を行った場合、error 関数を使った不特定の例外が投げられていました。今回この問題を修正し、ArithException 型に加わった RationZeroDenominator を例外として投げるようになりました。

  http://www.haskell.org/pipermail/cvs-libraries/2012-July/015739.html

ただ今回、「^」演算子に負の値を与えた場合に、error 関数を使った不特定の例外が投げられる問題の方は修正されませんでした。次のバージョンアップでもこの部分も修正されると良いですね。

https://github.com/ghc/packages-base/blob/ghc-7.6/GHC/Real.lhs#L509


* 古い例外処理機能の除去

 予告通り、Prelude モジュールと Symstem.IO.Error モジュールから catch 関数と try 関数が取り除かれ、Control.OldException モジュールも取り除かれました。これからは Control.Exception モジュールの例外処理機能しか使えなくなります。これまでも何度か注意を促しましたが、古い例外処理機能を使っている方は GHC 7.6.x を同梱した Haskell Platform が出る前に Control.Exception モジュールの例外処理機能に移行するようにしてください。

 なお、古い例外処理機能が取り除かれてたことに伴い、古い例外処理機能だけを提供している処理系に対して互換性を提供することを目的としたextensible-exceptions パッケージも GHC から取り除かれました。extensible-exceptions パッケージの モジュールを使っている方も、base パッケージの Control.Exception モジュールを使うように修正して下さい。

https://github.com/ghc/ghc/commit/b48811c93a2f5f582a52af36239113891f0c6680#L0R375


* Foreing.Marshal.Error の void 関数の非推奨化

 Control.Monad モジュールにより一般的な「Functor f => f a -> f ()」型の void 関数があるため、IO モナドしか扱えない Foreign.Marshal.Error モジュールの void 関数は非推奨化されました。現在、Foreign.Marshal.Error モジュールの void 関数を使っている方は Control.Monad モジュールのものを利用するようにして下さい。

http://www.haskell.org/ghc/docs/7.6.1/html/libraries/base-4.6.0.0/Foreign-Marshal-Error.html


* Data.HashTable モジュールの非推奨化

ついに Data.HashTable が非推奨化されました。次の GHC 7.8.1 で削除される(HEAD では既にコードを削除済み)ので、どうしても HashTable のようなデータ構造を使いたい場合には、hashtables パッケージなどのライブラリにある別実装を使うようにして下さい。

http://www.haskell.org/ghc/docs/7.6.1/html/libraries/base-4.6.0.0/Data-HashTable.html
http://hackage.haskell.org/package/hashtables

(また、HashTable が最適なデータ構造でなければ、containers の Map 型や hashmap パッケージの Map 型など、他のデータ構造を使うのも一つの手だと思います。
http://www.haskell.org/ghc/docs/7.6.1/html/libraries/containers-0.5.0.0/index.html
http://hackage.haskell.org/package/hashmap


* Bits クラスの変更

Data.Bits モジュールの Bits クラスから、 Num クラスをスーパークラスとする制約が取り除かれました。今後 Num クラスの文脈が必要な Bits クラスを使ったコードを書く場合、Bits クラスだけでなく、Bits クラスと Num クラスの両方を文脈とする必要があるので注意して下さい。

http://www.haskell.org/ghc/docs/7.6.1/html/libraries/base-4.6.0.0/Data-Bits.html


* 実行可能ファイルの絶対パスを得るための getExecutablePath 関数

System.Environment モジュールに、実行中の Haskell プログラムの絶対パスを直接得るための getExecutablePath 関数が追加されました。

http://www.haskell.org/ghc/docs/7.6.1/html/libraries/base-4.6.0.0/System-Environment.html#v:getExecutablePath


* Down 型

 Data.Ord モジュールに sort などの関数で「比較を降順に行う」ための Down 型が追加されました。

http://www.haskell.org/ghc/docs/7.6.1/html/libraries/base-4.6.0.0/Data-Ord.html#t:Down


* bytestring への blaze-builder の統合

bytestring パッケージに blaze-builder の Builder が機能として統合されました。この機能は融合変換を提供していない現在の ByteString に対し、差分リスト的な方法で効率的な連結処理などを提供するためのものです。(もちろん、融合変換を提供しているライブラリでも、融合変換がうまくいかないような状況では blaze-builder の恩恵があります。)

ByteString 同士の連結処理を多様する場合、直接 ByteString 同士を連結せずに、Data.ByteString.Lazy.Builderで提供されているBuilderを利用することを考えてみると良いでしょう。

http://www.haskell.org/ghc/docs/7.6.1/html/libraries/bytestring-0.10.0.0/Data-ByteString-Lazy-Builder.html
http://hackage.haskell.org/package/blaze-builder
http://www.mew.org/~kazu/material/2012-builder.pdf

また、Builder では charUtf8 関数や stringUtf8 関数などを通して UTF-8 の文字列を扱うことができます。ByteString に UTF-8 の文字列を渡すために止むを得ず utf8-string パッケージを使っている方も、できればこちらを使うようにした方が良いでしょう。(なお、Text を使えるでのあれば、もちろん ByteString ではなくそちらを使うようにしてください。)

http://www.haskell.org/ghc/docs/7.6.1/html/libraries/bytestring-0.10.0.0/Data-ByteString-Lazy-Builder.html#g:10


* containers 0.5

containers パッケージが、先に HackageDB にアップロードされていた 0.5 にバージョンアップしました。

http://www.haskell.org/pipermail/haskell-cafe/2012-May/101082.html
http://www.haskell.org/ghc/docs/7.6.1/html/libraries/containers-0.5.0.0/index.html


** API の不必要な非互換性を解消

Data.Map、Data.IntMap、Data.Set、Data.IntSet、それぞれのモジュールの間にある不必要な互換性を解消するため、API の刷り合わせが行われました。


** 正格評価版と遅延評価版の区別

これまでデータ構造に格納する要素を遅延評価するか正格評価するか、関数によってまちまちな扱いをしてきました。このやり方には性能上の問題が分かり難いという欠点があります。

そこで、値を遅延評価して格納する遅延評価版のデータ構造と、値を正格評価して格納する正格評価版のデータ構造を、別々のモジュールで提供するようにしました。(なお、キーはどちらでも正格評価されます。)Data.IntMap.Lazy モジュールや Data.Map.Lazy モジュールでは遅延評価版のデータ構造が、Data.IntMap.Strict モジュールや Data.Map.Strict モジュールでは正格評価版のデータ構造が提供されています。また、従来の Data.IntMap モジュールや Data.Map モジュールでは、このうち遅延評価版のモジュールの構成要素がエクスポートされています。


* Haddock 2.12.0

haddock で、URL に対するリンクで任意ラベル(アンカーテキスト)を使えるようになりました。 <http://example.net/ some label> のように記述することで、任意のアンカーテキストを持つ Haddock ドキュメントを作成できるそうです。

http://www.haskell.org/pipermail/haskell-cafe/2012-September/103308.html


目につく変更はこのくらいでしょうか? 全ての変更点についていちいち挙げていくときりがないので、その他の変更について興味のある方はリリースノートやマニュアル内の記述などを参考にしてください。

http://www.haskell.org/ghc/docs/7.6.1/html/users_guide/release-7-6-1.html

今回 ICFP 開催前のリリースを急いだためかリリースノートの記述には漏れがあるので、こちらの変更にも目を通すと良いと思います。

https://github.com/ghc/ghc/commit/b48811c93a2f5f582a52af36239113891f0c6680

(あと、あまり害はないと思いますが、GHC 7.4.1 で既に入った機能を新機能として紹介してしまっている部分もあります……。)


--
shelarcy <shelarcy hotmail.co.jp>
http://page.freett.com/shelarcy/

shelarcy

unread,
Sep 15, 2012, 1:12:03 AM9/15/12
to haske...@googlegroups.com
On Sun, 09 Sep 2012 06:43:16 +0900, shelarcy <shel...@gmail.com> wrote:
>
> 目につく変更はこのくらいでしょうか? 全ての変更点についていちいち挙げていくときりがないので、その他の変更について興味のある方はリリースノートやマニュアル内の記述などを参考にしてください。
>
> http://www.haskell.org/ghc/docs/7.6.1/html/users_guide/release-7-6-1.html

書き忘れていたのですが、この辺も結構大きな変更ですね。


* mdo 式の復活

GHC 6.12.1 で一度非推奨化された mdo 式ですが、代わりに入った rec に表現力の問題があったため、形を多少変えて復活することになりました。再帰的な変数束縛を表すための rec は残ったままですが、mdo 式内では rec を使う必要はないなど、細部の仕様が変更されてます。

http://www.haskell.org/ghc/docs/7.6.1/html/users_guide/syntax-extns.html#recursive-do-notation
http://hackage.haskell.org/trac/ghc/ticket/4148

また、6.12.1 とは逆に DoRec 言語拡張が非推奨化されました。 mdo や rec を使う方は、今後は RecursiveDo 言語拡張を利用するようにして下さい。

https://github.com/ghc/ghc/commit/4f8e86b44ecc31056d0bd7af325b9bb239ddf7a0


* Functor クラスと Monad クラスのインスタンスの定義の移動

Control.Monad.Instances モジュールで提供されていた (->) r 型と ((->) r 型に対する Functor クラスと Monad クラスのインスタンスの定義が GHC.Base モジュールに移動して、Prelude モジュールから利用できるようになりました。

http://www.haskell.org/ghc/docs/7.6.1/html/users_guide/bugs-and-infelicities.html#infelicities-numbers
http://www.haskell.org/pipermail/cvs-libraries/2012-January/014815.html

また、Either 型に対する Functor クラスと Monad クラスのインスタンスの定義も Data.Either モジュールに移動しました。また、Control.Monad.Instances ではこのインスタンスは公開されていなので、Data.Etiher モジュールをインポートして使う必要があります。

http://www.haskell.org/ghc/docs/7.6.1/html/libraries/base-4.6.0.0/src/Data-Either.html#Either
http://www.haskell.org/ghc/docs/7.6.1/html/libraries/base-4.6.0.0/src/Control-Monad-Instances.html

これに伴い、不要になった Control.Monad.Instances モジュールは非推奨化されました。将来的には削除される予定です。

http://www.haskell.org/ghc/docs/7.6.1/html/libraries/base-4.6.0.0/Control-Monad-Instances.html

shelarcy

unread,
Jan 29, 2013, 2:15:04 PM1/29/13
to haske...@googlegroups.com
こんにちは。

GHC 7.6.2 がリリースされました。

http://www.haskell.org/ghc/download_ghc_7_6_2
http://www.haskell.org/pipermail/glasgow-haskell-users/2013-January/023661.html

今回のリリースは純粋にバグ修正を目的としたものです。

http://www.haskell.org/ghc/docs/7.6.2/html/users_guide/release-7-6-2.html
http://hackage.haskell.org/trac/ghc/query?status=closed&group=resolution&order=priority&milestone=7.6.2

毎度の注意になりますが、GHC は一般ユーザー向けのリリースではありません。GHC 7.6.x の新機能や改良がどうしても必要だというのでなければ、一般ユーザーの皆さんは5月に予定されている Haskell Platform 2013.2.0.0 のリリースまで待って下さい。

http://trac.haskell.org/haskell-platform/wiki/ReleaseTimetable

shelarcy

unread,
Jan 30, 2013, 1:46:44 AM1/30/13
to haske...@googlegroups.com
残念ながら GHC 7.6.2 に同梱されている Cabal は最新の 1.16.0.3 ではなく 1.16.0 になってますね。

http://www.haskell.org/ghc/docs/7.6.2/html/libraries/Cabal-1.16.0/index.html
http://hackage.haskell.org/package/Cabal-1.16.0.3

このまま "cabal install cabal-install" で cabal コマンド(cabal-install 1.16.0.2)をインストールしようとすると、Cabal が更新されずに、「パッケージのビルド中にパッケージのそのものの問題とは無関係な警告メッセージが出る」などの問題のある cabal コマンドが作成されてしまいます。

次の Haskell Platform のリリースを待てずに最新版の cabal コマンドを使いたい方は、cabal-install パッケージに付属の bootstrap.sh を使ってインストールするか、バグ修正の入った Cabal 1.16.0.3 と共にインストールするようにしてください。

$ cabal install Cabal-1.16.0.3 cabal-install

http://www.haskell.org/pipermail/cabal-devel/2012-October/009140.html
http://www.haskell.org/pipermail/haskell-cafe/2012-October/104099.html


On Wed, 30 Jan 2013 04:15:04 +0900, shelarcy <shel...@gmail.com> wrote:
> 今回のリリースは純粋にバグ修正を目的としたものです。
>
> http://www.haskell.org/ghc/docs/7.6.2/html/users_guide/release-7-6-2.html
> http://hackage.haskell.org/trac/ghc/query?status=closed&group=resolution&order=priority&milestone=7.6.2
>
> 毎度の注意になりますが、GHC は一般ユーザー向けのリリースではありません。GHC 7.6.x の新機能や改良がどうしても必要だというのでなければ、一般ユーザーの皆さんは5月に予定されている Haskell Platform 2013.2.0.0 のリリースまで待って下さい。
>
> http://trac.haskell.org/haskell-platform/wiki/ReleaseTimetable
>


shelarcy

unread,
Apr 21, 2013, 12:22:09 PM4/21/13
to haske...@googlegroups.com
こんにちは。

GHC 7.6.2 がリリースされました。

http://www.haskell.org/ghc/download_ghc_7_6_3
http://www.haskell.org/pipermail/glasgow-haskell-users/2013-April/023944.html

今回のリリースは純粋にバグ修正を目的としたものです。

http://www.haskell.org/ghc/docs/7.6.3/html/users_guide/release-7-6-3.html
http://www.haskell.org/pipermail/libraries/2013-April/019698.html

なお、今回のリリースでは上のバグ一個を潰しただけで、Cabal のバージョン問題はまだ解決していません。

http://www.haskell.org/ghc/docs/7.6.3/html/libraries/Cabal-1.16.0/index.html
http://www.haskell.org/pipermail/libraries/2013-April/019718.html

あと、書き忘れていましたが、GHC 7.6.1 で Mac OS X 版のインストーラーが、GHC 7.6.2 で Windows 版のインストーラーが提供されなくなっていますね。これは一般ユーザー向けの Haskell Plaform で GHC のバイナリを含めたインストーラーを提供しているので、GHC のリリースではインストーラーを提供するのを止めたということみたいです。(実際、HEAD では Mac OS X 版と Windows 版のインストーラー用のコードが削除されています。)

http://hackage.haskell.org/trac/ghc/ticket/7136
http://www.haskell.org/pipermail/ghc-commits/2013-April/001463.html

というわけで、5月に予定されている Haskell Platform 2013.2.0.0 のリリースをどうしても待てないという方以外は、無理に GHC の新しいバージョンを使おうとはせずに Haskell Platform 2013.2.0.0 を待った方が良いでしょう。(今回 GHC 7.6.3 がリリースされたのと Cabal のバージョン問題があるので、Haskell Platform 2013.2.0.0 のリリースは予定より少し遅れるかもしれません。)

http://trac.haskell.org/haskell-platform/wiki/ReleaseTimetable#PriorReleases

shelarcy

unread,
Apr 21, 2013, 12:24:51 PM4/21/13
to haske...@googlegroups.com
On Mon, 22 Apr 2013 01:22:09 +0900, shelarcy <shel...@gmail.com> wrote:
> というわけで、5月に予定されている Haskell Platform 2013.2.0.0 のリリースをどうしても待てないという方以外は、無理に GHC の新しいバージョンを使おうとはせずに Haskell Platform 2013.2.0.0 を待った方が良いでしょう。(今回 GHC 7.6.3 がリリースされたのと Cabal のバージョン問題があるので、Haskell Platform 2013.2.0.0 のリリースは予定より少し遅れるかもしれません。)
>
> http://trac.haskell.org/haskell-platform/wiki/ReleaseTimetable#PriorReleases

あっ、リンク先を少しミスっていました。すぐ上にありますが、こっちが正しいリンク先です。

http://trac.haskell.org/haskell-platform/wiki/ReleaseTimetable#a2013.2.0.0
Reply all
Reply to author
Forward
0 new messages