タグ

ghcに関するilyaletreのブックマーク (21)

  • Compact Regionsについて軽く - Qiita

    現在ghc最新は8.6です。 Compact Regionsはghc-8.2から搭載された機能です。 Compact RegionsはGC中に走査されない、連続したメモリ領域に載ったデータを提供します。 Hackage / compact: Non-GC'd, contiguous storage for immutable data structures サーバーにバッチ処理で生成しておいたデータ(数百MBから数十GBくらいでしょうか)を持たせておくことを考えましょう。そのデータはサーバーがリクエストを捌く際にRead Onlyでアクセスされるとします。 そういうこと自体は問題によりますが、まあよくやることと思います。Redis等にアクセスするにもネットワークは遅すぎる、手元のKVSでも毎回デシリアライズ発生するのは遅すぎるといったケースですね。 しかしGHCのようなGC持つ処理系でサー

    Compact Regionsについて軽く - Qiita
    ilyaletre
    ilyaletre 2019/10/06
    雑感の線形型をGC目線で捉える話でなるほどってなった。プログラマティック取引やるサーバとかまさにGCに苦しむんだなー。
  • HIW 2019で発表された、GHC 8.8で導入された機能 - Haskell-jp

    こんにちは。 今回からいくつか、「Haskell Implementors’ Workshop 2019」に私が先月参加した際のレポートとして、印象深い発表をテーマごとに分けた短い記事を執筆します。 最近公開されたGHC 8.8の話はもちろん、未来のGHCやその他のHaskellの処理系を知るのによいイベントでしたので、その一部だけでも伝われば幸いです。 Link to hereそもそもHaskell Implementors’ Workshop (HIW)とは? シリーズ(?)第1回目なので、簡単にHIWそのものについて紹介しておきましょう。 HIWは、ICFP (International Conference on Functional Programming)という関数型プログラミングについての国際会議に併設された、Haskellの実装者のためのワークショップです。 名前の通り、G

    HIW 2019で発表された、GHC 8.8で導入された機能 - Haskell-jp
    ilyaletre
    ilyaletre 2019/09/18
    HIE活用してIDEバックエンドが今後安定していってくれるならめちゃくちゃ嬉しいな(もうちょい先なのだろうけど。。。)
  • Nix で Haskell IDE Engine をシュッと入れる - ryota-ka's blog

    この記事は以下のページに移転しました. blog.ryota-ka.me みなさん,Haskell やってますか?普通に Haskell IDE Engine を入れようとするとビルドにメッチャ時間がかかって「地獄か?」という感じがするので,Nix でシュッと入れていきましょう. Nix のインストール Nix を入れていない人はいないと思うけど,念の為インストール手順です. 「Nixはこの会社以外で役に立つことはないけど、人生が豊かになるから勉強した方がいい」— ポアソン氏 (@hiroqn) June 28, 2019 $ curl https://nixos.org/nix/install | sh $ nix-channel --add https://nixos.org/channels/nixpkgs-unstable $ nix-channel --update Cachix

    Nix で Haskell IDE Engine をシュッと入れる - ryota-ka's blog
  • Call Arity と融合変換

    GHC は,最適化のため Call Arity と呼ばれるコード解析を行っている.この解析で,自由変数が何個引数を持っていいかを判定し,イータ展開を可能にする.リストにおける融合変換とも密接な関係のある解析だ.こいつの存在とどういうことをやっているかはだいたい知っていたんだけど,ちょっと詳しく知りたい事例があったので調べてみた.そのメモ. なお元ネタは,Breitner (nomeata) 先生の Call Arity . イータ展開と最適化 Haskell は知っての通り関数型プログラミング言語なので,息を吐くように関数を第1級として使うし,標準ライブラリに無数の高階関数がある.関数は全てカリー化されていて,部分適用も可能だ.ただ困ったことに Haskell は実用されており,これらの関数型プログラミング言語で常用されているテクニックで書かれたプログラムで,通常のプログラミング言語程度と

    Call Arity と融合変換
  • Writing efficient free variable traversals — The Glasgow Haskell Compiler

    bgamari - 2019-07-28 Imagine that I show you a fragment of a Haskell program: and pose the question: “what are the variables in this program?” You would likely respond x and y. Now I ask you: what is the difference between those two variables? One answer is that x is bound by the fragment whereas y comes from the fragment’s surrounding context. Variables like y are known as free variables. When co

    ilyaletre
    ilyaletre 2019/07/30
    "Cleaning up the implementation" のあたりがそもそも不思議だった。ASTから自由変数の収集手続きを得るステップと、実際に収集をするステップに分離する、というのが発想の肝なのかな。
  • contributing · Wiki · Glasgow Haskell Compiler / GHC · GitLab

    ilyaletre
    ilyaletre 2019/04/05
    初心者に優しいGHCおじさんたち
  • GHC Infrastructure Update — The Glasgow Haskell Compiler

    Ben Gamari - 2019-04-03 Around five months ago I proposed that we undertake what became a comprehensive rebuild of GHC’s infrastructure. Since November we have been quietly working behind the scenes to make this new infrastructure a reality; this has been a massive project and however I’m happy to say we are now emerging on the other side and we are very happy with the result. In this post I want

    ilyaletre
    ilyaletre 2019/04/04
    インフラ移行に関するいい知見がありそうなので後で読もう(後とはいつだ)
  • GHCの線形型プロトタイプを試すだけ - syocy’s diary

    GHCに線形型を導入すると以下のような良い事があるらしい。 リソース安全性: ファイルハンドル、ソケット、DBコネクションのようなリソースについて、これらを提供するAPIの設計者が安全な使用を強制できる。リソース解放後のアクセス、二重解放、解放忘れを防止することができる。 レイテンシ: リソースAPIの実装をうまくやるとoff-heap(GCの対象外)でリソースを確保・解放できる。GC対象が少なくなることによりGCによってプログラムが停止する時間を減らせる。 並列性: 過剰な直列化を強要しない。リソース安全性を保ちつつもできる限り並列化できる。 詳しくはproposal。 この記事では線形型GHCのプロトタイプ実装および線形型ファイル操作ライブラリのプロトタイプ実装を試してみる。 ここで紹介するものが正式リリースで変更されている可能性は大いにある。 なおcabalのnew APIを使うのが

    GHCの線形型プロトタイプを試すだけ - syocy’s diary
    ilyaletre
    ilyaletre 2019/01/08
    線形型ワールドの通常ワールドの配線が想像していたよりも大変そうだ。あとリンクされてる継続モナドの話が好き。
  • GHC拡張ノック(Part 1) - Haskell-jp

    n番煎じのよく使うGHC拡張の紹介Posted by mizunashi_mana on May 15, 2018Tags: GHC, Language Extensions Haskell1では各処理系で言語拡張を提供し,LANGUAGEプラグマというものを利用することで,言語拡張を利用することが許容されています.Haskellのデファクト標準的な処理系GHCも多くの言語拡張を提供しており,その拡張はGHC拡張と呼ばれています. 今回は,このGHC拡張の簡単な紹介と,個人的に良く使う拡張についての簡単な紹介を,全3回に分けて行いたいと思います.対象としては,GHCでHaskellプログラミングをしたことがあり,通常のHaskellの構文や動作方法が分かっている人を考えています.また,この記事はあくまで簡単な紹介に留めるもので,付随する留意点や詳細な機能説明は,大事な箇所は漏らさないよう注

    GHC拡張ノック(Part 1) - Haskell-jp
    ilyaletre
    ilyaletre 2018/06/06
    わりと使いそうな拡張が説明されていてとてもありがたい。
  • GHC/Typed holes - HaskellWiki

    ilyaletre
    ilyaletre 2018/03/12
    type-hole driven developmentの一例。FreeモナドのFunctor実装が手に汗握る熱い展開だった。
  • HaskellのSTG言語 - 純粋関数型技術メモ

    この記事では GHC 8.0.1 を用いています. STG言語 STG(Spinless Tagless G-machine)とは,遅延評価で高階関数をサポートする関数型言語のための抽象機械である. STG(Shared Term Graph*1)言語はSTG機械のための言語で,GHCでは Haskellソース → Core言語 → STG言語 → C-- → アセンブラ,LLVM というコンパイル過程で中間言語として現れる. STG言語は,ghcで --ddump-stg オプションをつけてコンパイルすると出力される. Core言語 Core言語は概ねHaskellのサブセットであり,脱糖したHaskellとみることができる.Haskellと異なる点は, 多相関数が引数に明示的に型パラメータをとる(@ a) パターンマッチはcase式でのみ可能で,ネストしたパターンは使えない. 変数はリ

    HaskellのSTG言語 - 純粋関数型技術メモ
    ilyaletre
    ilyaletre 2017/12/30
    STG何者かよく知らなかったのですごく面白い記事でした。辞書はただの関数の直積なんだ、とか、caseってすごいプリミティブなんだ、とか、u/r/sを覚えれば結構読めるんだな、とか。
  • にこ、希と一緒に学ぶHaskell(番外)「あまり知られていないGHC拡張の紹介」 - Qiita

    この記事はブログ版の引用です。 ブログ版では、一部のスタイルが装飾されている。 もしくはQiita版では崩れているスタイルが正しく表示されます。 また、ブログ版の内容は優先して修正され、Qiita版の内容は古い場合があります。 この記事はHaskell (その3) Advent Calendar 2017の 21日目の記事です! この記事にはSS表現、ラブライブが含まれます。 これらが苦手な方はブラウザバックを推奨します。 記事一覧 - ことり、穂乃果と一緒に学ぶHaskell(入門) 記事一覧 - にこ、希と一緒に学ぶHaskell(番外) 更新履歴 - μ'sと一緒に学ぶHaskell 前回の型ライブ! 放課後、部室に集まって、よく知られたGHC拡張について語り合う にこっち と うち。 希「GHC拡張っていっぱいあるんやね!」 にこ「Haskell reportに『実験的な機能を取り

    にこ、希と一緒に学ぶHaskell(番外)「あまり知られていないGHC拡張の紹介」 - Qiita
    ilyaletre
    ilyaletre 2017/12/22
    参考リンクで若干脱線してる笑
  • GHC 8.2 以前で FFI を使う際に注意すること - Qiita

    日 LTS 10.0 がリリースされたので格的に GHC 8.2 系が使えるようになりました。やったね! https://www.stackage.org/lts-10.0 ということで、この記事の内容は若干陳腐化しています。 Haskell を生活に使っていると、データベースのような外の世界とやりとりする機会が多いと思います。外の世界と付きあうにあたり避けて通れないのが Foreign Function Interface (FFI) とシステムコールです。 しかし、Haskell で FFI をする際には注意すべき点があります。 GHC threaded RTS と SIGVTALRM (以前僕が遭遇して痛い目にあった) MySQL にアクセスする場合を例に取ります。 Haskell で MySQL を使う場合、メジャーなライブラリとして HDBC-mysqlmysql があ

    GHC 8.2 以前で FFI を使う際に注意すること - Qiita
    ilyaletre
    ilyaletre 2017/12/20
    この結論に至れる解析能力がすごい。
  • GHCの中間言語Coreへの脱糖を覗き見る - Hash λ Bye

    Haskell (その3) Advent Calendar 2017 11日目の記事。(予約投稿知らなかったのでフライングになった) GHCがコンパイルの途中で中間表現として用いるCoreの生成っぷりを観察する。 観察して、あーはいはいなるほどね(わかってない)、と言うだけになりそう。 はじめに GHCはHaskellのソースコードを低レベルなコードへとコンパイルする過程で様々なpass(コンパイルのステージ)を通じてプログラムデータを変換する。 俯瞰図は下記のリンクに詳しい。 Compiling one module: HscMain 僕がGHCの話をどこかで聞きかじってかっこいいな、と思ったのは、 GHCがコンパイラの中間言語として定義しているCoreを知った時。 このCoreと名付けられた中間言語はDesugar passにて生成され、下記のような性質を持っている。 小さな構文 3つ

    GHCの中間言語Coreへの脱糖を覗き見る - Hash λ Bye
    ilyaletre
    ilyaletre 2017/12/11
    Haskell (その3) Advent Calendar 2017用の記事公開された。GHCのCoreをぬるく見学する話。
  • GHCでの中置演算子のパース - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    GHCでの中置演算子のパース - Qiita
    ilyaletre
    ilyaletre 2017/12/06
    そうか、いったん左結合で読んで後で書き換えれば良いのか。parser作る時の参考になった。
  • SULE SLOT: Situs Slot Jackpot dengan Minimal Deposit 10 Ribu

    ilyaletre
    ilyaletre 2017/12/04
    DesugarとSimplifierのこと、実例の観察を通じて教えてくれる良い記事。
  • Dive into GHC: Intermediate Forms

    Dive into GHC: Intermediate Forms In the last blog post, we discussed the high-level API used inside the GHC compiler. This time let’s zoom into the pieces that comprise the frontend of the compilation pipeline, namely: Parsing Renaming Typechecking Desugaring Simplification Code Generation Accompaying Source Code Passes The following functions are the main passes are that are used inside of the c

    ilyaletre
    ilyaletre 2017/10/08
    やっぱりhappyやalexから抜き出したposition情報は適当なコンテナに持たせて、実態となるASTをくるむのか。
  • Dive into GHC: Targeting Core

    Dive into GHC: Targeting Core In the last blog post, we discussed the intermediate structures used in the GHC compiler. This time let’s discuss the Core language. Accompaying Source Code Core GHC’s most central data types. Core is a very small, explicitly-typed, variant of System FC; a typed lambda calculus that differs from the simply typed lambda calculus by the introduction of a mechanism of un

    ilyaletre
    ilyaletre 2017/08/24
    GHC解説の本命っぽい。
  • A Haskell Implementation Reading List

    A Haskell Implementation Reading List A reading list for those interested in the implementation internals of Haskell compilers. The GHC Reading list is more exhaustive, these are simply the papers I think give a good high-level overview of the topics. Typeclass Inference A Theory Of Qualified Types Type Inference For Parametric Type Classes Type Reconstruction For Type Classes Constraints For Type

    ilyaletre
    ilyaletre 2017/06/14
    GHCの実装を知るために有用な資料
  • Detecting Space Leaks

    Summary: Below is a technique for easily detecting space leaks. It's even found a space leak in the base library. Every large Haskell program almost inevitably contains space leaks. Space leaks are often difficult to detect, but relatively easy to fix once detected (typically insert a !). Working with Tom Ellis, we found a fairly simple method to detect such leaks. These ideas have detected four s