- https://prime.haskell.org/
- Haskell Source Navigation
- kolmodin/cabal-install-trace
- bitc/hdevtools
- dan-t/cabal-bounds
- A series about optimization
- On sufficiently smart compilers
- Haskellの父Simon PJ氏、GHCの内部実装について日本のHaskellerと激論を交わす
- SPJとHaskellのエコシステム(和訳) - Qiita
- 翻訳: The Architecture of Open Source Applications (Volume 2): The Glasgow Haskell Compiler
GHC
- GHC
- これから Haskell を書くにあたって
- GHC Documentation
- GHC Speed
- Glasgow Haskell Compiler Users Guide
- GHCのこと
- 栄光のグラスゴーHaskellコンパイルシステム利用の手引き
- GHCの最新のソースコードをビルドし、すこしいじる - Qiita
- GHCへの変更提案とパッチ送付の手順例 - Haskell-jp
- GHC(Haskell)の上流リポジトリ等がGitLabに移行しました - Qiita
- GHCのソースコードのノートを読むやつを作った - The curse of λ
- 続くといいな日記 – GHC のノートコメントについてのあれこれ
- def-/ghc-vis
- Hacking on GHC Has Never Been Easier! - Vaibhav Sagar
- Haskell Hierarchical Libraries
- Naïve Haskell data representation
- Haskell Compiler (compiler)
- Value vs Monomorphism Restriction
- Announcing ghc-exactprint: A New Foundation For Refactoring Tools
- Compile-time arity checking for abstract binding trees
- ImpredicativePolymorphism/Impredicative-2015: impredicativity.pdf
- Static linking with ghc
- ViewPatterns and lambda expansion
- takenobu-hs/haskell-ghc-illustrated
- The GHC reading list
- The GHC Commentary
- Safe Haskell
- Cost of Proxy
- How to reduce compilation times of Haskell projects
- 2016 - Jasper Van der Jeugt - Haskell: mistakes I made (and how to fix them)
- GHC on m68k
- Thoughts on an InlineDoBind extension
- GHCでコンパイルするプログラムでヒープメモリサイズを制限する
- Improving Type Error Localization for Languages with Type Inference
- Anders Hejlsberg on Modern Compiler Construction
- Debugging tcIfaceGlobal errors in GHC: a study in interpreting trace output
- What is the Difference Between GHC and the HaLVM?
- Roles: a new feature of GHC
- A Debugging Horror Story: Fixing a Tricky GHC Bug
- Why TAB cycle indentation for Haskell is a hard problem
- alanz/ghc-exactprint
- The rapid package
- hexena
- A non-trivial term-constraint oracle, and a new Haskell teaching tool
- phadej/overlap.hs
- Optional Type Classes for Haskell
- {-# OPTIONS_GHC -fno-warn-orphans #-}
- Types are calling conventions
- Optimizing incremental compilation
- 01 The State of GHC
- Haskell: ghcでスタティックリンクする
- Levity Polymorphism (extended version)
- Compiling without continuations
- scaling ghc –make
- Dynamic Witnesses for Static Type Errors (or, Ill-Typed Programs Usually Go Wrong)
- Trees That Grow
- ghc-simple
- Desugaring Haskell’s do-notation Into Applicative Operations
- haskell-suite/haskell-names
- Averaging unsigned numbers in Haskell
- Hash-consingのためのinternパッケージ
- Bootstrapping Haskell: part 1
- CPP – Haskell – Aelve Guide
- Haskell without GMP
- IntelLabs/flrc: Haskell Research Compiler
- The Haskell Concurrency Primitive Shootout – codeburst
- Simon Peyton Jones - Compiling without continuations - YouTube
- Richard A. Eisenberg - Levity Polymorphism - YouTube
- Deriving type classes in Haskell is slow · taylor.fausak.me
- Have Your Cookie and Eat it Too – Josef Svenningsson
- Controlling Fusion In Haskell
- GHCで自動的にメモ化される条件 - Qiita
- Replacing GHCi’s pretty-printer
- What is New in Cross Compiling Haskell – zw3rk – Medium
- GHC Cross Compiler Binary Distributions – zw3rk – Medium
- Tweag I/O - Announcing the GHC DevOps Group
- Building GHC: The Stages
- Levity polymorphismについて軽く - Qiita
- haskell - What is Levity polymorphism - Stack Overflow
- Relocatable GHC Cross Compiler Binary Distributions
- Building GHC: The Stages – zw3rk – Medium
- Contributing to GHC – zw3rk – Medium
- GHCでの中置演算子のパース - Qiita
- GHCの中間言語Coreへの脱糖を覗き見る - Hash λ Bye
-
[Compact Regions: Success, Failure, and Questions Front Row](http://tech.frontrowed.com/2018/03/06/compact-regions-success-failure-questions/) - Fūzetsu’s Corner - Trying out GHC compact regions for improved latency (Pusher case study).
- Well-Typed - The Haskell Consultants: The problem with adding functions to compact regions
- How QuantifiedConstraints can let us put join back in Monad - Ryan Scott
- osa1 - Three runtime optimizations done by GHC’s GC
- Sequent Calculus as a Compiler Intermediate Language
- libuv based I/O manager - YouTube
- Introduction to Vectorization : haskell
- Stop supporting older GHCs
- GHC-Core-Literature-Review/doc.pdf at master · xnning/GHC-Core-Literature-Review
- Rethinking Static Reference Tables in GHC · Simon Marlow
- GHCinception: Running GHCi in GHCi
- Enable All The Warnings – Mercury – Medium
- GHC Commentary: The Layout of Heap Objects
- GHC 8.x 勉強会に行ってきた
- Type Theory Behind Glasgow Haskell Compiler Internals : haskell
- How much space does an 8-bit integer occupy in C and Haskell?
- 6 ways to manage allocated memory in Haskell
- Neil Mitchell’s Haskell Blog: Announcing ghc-lib
- GHC/RTSのGCについて - Qiita
- Levity polymorphism対応の型クラスと、定数メソッド - Qiita
- Stack: building GHC from source
- Initial Hacking of GHC for GCC Link-time Optimization - Brandon.Si(mmons)
- GHC’s Specializer: Much More Than You Wanted to Know :: Reasonably Polymorphic
- A modern look at GRIN, an optimizing functional language back end
- GHC LLVM LTO Experiments Scratch Notes
- Oleg’s gists - Compatibility packages
- HaskellでAtCoderの問題を解く(入力の高速化編) - Qiita
- How I Intend to Help Steer GHC :: Reasonably Polymorphic
- Improvements in GHC’s testsuite infrastructure — The Glasgow Haskell Compiler
- Writing efficient free variable traversals — The Glasgow Haskell Compiler
- gc-benchmarks/README.md at master · pepeiborra/gc-benchmarks
- GHC Development
- Andreas Klebingers Blog - Opinion piece on GHC backends.
- Haskell compilation pipeline and STG language - Superstring Theory - Medium
- Well-Typed - The Haskell Consultants: Eventful GHC
- HIW 2019で発表された、GHC 8.8で導入された機能 - Haskell-jp
- Well-Typed - The Haskell Consultants: Low-latency garbage collector merged for GHC 8.10
- Runtime Support for Multicore Haskell: a Retrospective | SIGPLAN Blog
- Keeping Compilation Fast
- Winter is coming even more quickly – Blog – Joachim Breitner’s Homepage
- サンクの構造を見る - Qiita
- 2019年に「すごいHaskellたのしく学ぼう」を { -# OPTIONS -Wall -Werror #- } を付けて読む - Qiita
- Developing GHC for a Living. Interview with V. Zavialov.
- Generating small binaries in Haskell
- Haskellの文字列リテラルはGHCでどのようにコンパイルされるか - Qiita
- Channable - Lessons in Managing Haskell Memory
- Well-Typed - The Haskell Consultants: DWARF support in GHC (part 1)
- Speeding up the Sixty compiler | Olle Fredriksson’s blog
- mpickering - Tools for working on GHC
- Error Messages in Haskell, and how to Improve them
- Lower Your Guards
- Haskell の Fixity Resolution を試してみる - Qiita
- Improving Haskell’s big numbers support - IOHK Blog
- IDE 2020: Measuring memory usage of Haskell values and patching GHC
- Well-Typed - The Haskell Consultants: Understanding Memory Fragmentation
- Using a development version of GHC with nix
- Nix scaffolding for running Haskell plugins
- Build Haskell fast
- GHC Core by example, episode 1: Hello, Core! - Alp’s notes
- IHP: Integrated Haskell Platform, a batteries-included web framework built on purely functional programming technologies
- Haskell/GHCでの浮動小数点数の扱い - Qiita
- Apple Silicon MacでGHC masterをビルドするメモ - Qiita
- GHCデバッグ日誌
- Well-Typed - The Haskell Consultants: A First Look at Info Table Profiling
- Well-Typed - The Haskell Consultants: GHC activities report: December–January 2020/2021
- GHC Reading Guide
- Well-Typed - The Haskell Consultants: Memory Fragmentation: A Deeper Look With ghc-debug
- Haskell Executable Sizes | Dan Fithian
- Well-Typed - The Haskell Consultants: GHC activities report: February–March 2021
- Well-Typed - The Haskell Consultants: Improvements to memory usage in GHC 9.2
- Well-Typed - The Haskell Consultants: Using GHC low-latency garbage collection in production
- GHCに初めてコントリビュートした/最近のGHC動向 | 雑記帳
- Hacking on GHC - First Steps - Ben’s Blog
- SSA transformation for GHC’s native code generator (Part 2) - Ben’s Blog
- The tale of keepAlive# — The Glasgow Haskell Compiler
- Towards system profiler support for GHC - Well-Typed: The Haskell Consultants
- [1806.03476] Type variables in patterns
- Testing an Optimising Compiler by Generating Random Lambda Terms
- GHCのバックエンドについて | 雑記帳
- Type-checking plugins, Part I: Why write a type-checking plugin? - Tweag
- fumieval/Haskell-breaking-changes
- GHCのIOマネージャの歴史と僕の苦悩 - あどけない話
- AndrasKovacs/smalltt: Demo for high-performance type theory elaboration
- Notes on distributing cross-platform haskell binaries through Steam
GHC API
- mvdan/hint
- Dynamic loading of Haskell modules
- Kwang’s Haskell Blog - Fun with hint
- Adding documentation to the GHC API
- How to integrate GHC API programs with Cabal : Inside 214-1E
GHC Plugins
- 続くといいな日記 – リテラルをコンパイラ時にチェックする
- mikeizbicki/HerbiePlugin
- GHC type checker plugins: adding new type-level operations
- Solving GHCs KnownNat constraints
- Oleg’s gists - Idiom brackets via source plugin
- mpickering - Plugins
- GHC Source Plugin 作ってみた - Qiita
- Running HLint as a GHC source plugin - DEV
- The blog of wjwh - Preliminary benchmarking results for a Haskell I/O manager backend based on io_uring
- The new GHC diagnostic infrastructure - Well-Typed: The Haskell Consultants
- GHC Source Pluginによるシンボルの削除 - Qiita
Blackhole
- Blackhole : 無限再帰停止機構
- main is usually a function: Thunks and lazy blackholes: an introduction to GHC at runtime
Under the Core
- Into the Core - Squeezing Haskell into Nine Constructors by Simon Peyton Jones
- Haskellのコンパイル中に現れるSTGと, GDBで見るC-backendなC–
- Working with GHC Core
- Dive into GHC: Intermediate Forms
- Dive into GHC: Pipeline
- Dive into GHC: Targeting Core
- quchen/stgi
- [Haskell-cafe] ANN:
dump-core
a prettier GHC core viewer - ZuriHac 2016 - Low-level Haskell: An Interactive Tour Through the STG
- Turn GHC into a frontend for miniSTG
- veggies: Haskell code generation from scratch – Blog – Joachim Breitner’s Homepage
- Announcing simplexhc
- HaskellのSTG言語 - 純粋技術メモ
- C–で末尾再帰の最適化を試してみる - Qiita
- C–(あるいはCmm)を中間表現とするBrainf*ckコンパイラを作成する - (1) 人力コンパイル
- Whole STG program compiler (status report) | Csaba Hruska on Patreon
- Haskell to Core: Understanding Haskell Features Through Their Desugaring
Runtime System
最適化
- GHC optimisations
- Memory footprints of some common data types
- Weigh your Haskell code
- Fun with RULES Pragma
- Rewrite Rulesについて軽く
- mpickering - Inlining and Specialisation
- Why does this Haskell code run slower with -O?
- GHC optimization and fusion
- Worker-Wrapper transformationについて軽く
- 24 days of Hackage, 2015: day 19: ghc-core-html, list-fusion-probe; checking GHC’s fusion rewrite rules for erasing intermediate data from existence
- Correctness of short cut fusion
- HaskellのFusionがあれば速度と抽象化を両立できる
- 🎥 Dan Doel - Introduction to Low Level Haskell Optimization
- Natural Transformations as Rewrite Rules and Monad Composition
- An optimization using the foldr fusion law |
- INLIN(E)ing: A case study
- Speed up your Haskell programs with one weird trick
- Notes on fusion
- GHC, One compiler to RULE them all | Alexandre Moine’s blog
- Henri’s Blog - Making Haskell as fast as C: Imperative programming in Haskell
- Haskell: journey from 144 min to 17 min · pl-rants
- Kinds are calling conventions
- Help! My Haskell program consumes more memory the longer it runs – jacobstanley.io
- 続くといいな日記 – State モナドの代わりに Reader モナドを使う
パフォーマンス
- Haskell で高速なプログラムを書くときに注意すること
- Haskellコードの高速化
- Making Efficient use of memory in Haskell
- GHC performance over time
- Thinking About Performance
- High-Performance Haskell
- When competing with C, fudge the benchmark – Franklin He – Medium
- Are Mutable References Fast? – Hacker Noon
- On Competing with C Using Haskell – Two Wrongs
- jship - Writing Performant Haskell (1 of 6): Intro
- Performance debugging in aeson
- The Haskell performance checklist
- Haskell Performance Debugging
- vincenthz/hs-gauge: criterion fork on a diet
- Haskell のパフォーマンスをデバッグする
- Fūzetsu’s Corner - GHC can output profiling information as JSON and you should use it.
- Compact Regionsについて軽く - Qiita
- Haskellで解くAtCoder - The curse of λ
- HaskellでAtCoderに参戦して水色になった | 雑記帳
- 【低レベルHaskell】Haskell (GHC) でもインラインアセンブリに肉薄したい! - Qiita
- Beating C with 80 lines of Haskell: wc
- Well-Typed - The Haskell Consultants: A Summer of Runtime Performance
- mpickering - Introducing hs-speedscope - a way to visualise time profiles
スペースリーク
- GHC とスペースとリーク
- [翻訳]Space leak zoo
- Space Leak Zoo開園
- Space Leak Zoo
- スレッドリーク
- 僕が人生で起こした唯一のスペースリーク
- スペースリーク、その傾向と対策
- Pinpointing space leaks in big programs
- A Haskell space leak
- にせ末尾再帰
- More space leaks: Alex/Happy edition
- Nested monadic loops may cause space leaks
- Another space leak: QuickCheck edition
Profiling
- GHCヒーププロファイリングの手引き
- Memory profiling in Haskell
- viewprofでGHCの.profファイルを見やすくする
- weigh: Measuring allocations in Haskell
- GHCでプロファイルが取れない - Could not find module …
- nomeata/ghc-heap-view
- Time and allocation profiling in Haskell
- Top tips and tools for optimising Haskell
- Profiling in Haskell for a 10x Speedup - Bits, Bytes, and Words
$ # To build with profiling enabled:
$ stack build --executable-profiling --library-profiling --ghc-options="-fprof-auto -rtsopts"
$ # To profile:
$ stack exec -- <your program> +RTS <profiling options>
haskell - Profiling builds with stack - Stack Overflow
開発
- Contributing to GHC
- Haskell GHC開発に関する情報源いろいろ
- Haskell GHCをソースからビルドする手順 - Qiita
- Haskell GHCのソースコードレビューを見ることができます - Qiita
- Haskell GHCへの機能提案とその議論を見ることができます - Qiita
- Haskell GHCに、GithubでPull Requestを送ることができます - Qiita
- The Architecture of Open Source Applications - The Glasgow Haskell Compiler
- GHC has begun to accept Pull Requests on Github : haskell
- GHC development flow
- GHC Development: OutsideIn
- GHC Speed – Gipeda
GC
- Haskell、OCaml、RacketでGCのレイテンシを測る | コンピュータサイエンス | POSTD
- Optimising Garbage Collection Overhead in Sigma
- Low latency, large working set, and GHC’s garbage collector: pick two of three
7.10
- Functor-Applicative-Monad Proposal
- New in GHC 7.10: Partial Type Signatures
- Foldable Traversable In Prelude
- Foldable for non-Haskellers: Haskell’s controversial FTP proposal
- Using Stack with GHC 7.10.3
- Why does multiplication only short circuit on one side
8.0
- GHC plans for 8.0.1
- Planning for the 7.12 release
- A small Haskell extension
- OverloadedRecordFields design
- GADTs meet their match
- The design of the Strict Haskell pragma
- Strict Haskell
- Custom Type Errors
- Pattern Synonyms in GHC 8.0
- Visible Type Application (Extended version)
- Stack traces in GHCi, coming in GHC 8.0.1
- New type of ($) operator in GHC 8.0 is problematic
- GHC 8.0.1/base-4.9.0.0の新機能まとめ
- 2016 04 28 - Alexander Bernauer - A Tour of GHC 8 0
- [ANNOUNCE] GHC 8.0.1 is available!
- GHC 8.0.1 is available!
- Stackage LTS and GHC 8.0
- [Haskell-cafe] Announce: Haskell Platform 8.0.1
- Moving Stackage Nightly to GHC 8.0
- What’s new with GHC generics in 8.0
8.2
LLVM
- LLVM フレームワークで実用的なコンパイラーを作成する: 第 1 回
- Implementing a JIT Compiled Language with Haskell and LLVM
- llvm-hs/llvm-hs - Haskell bindings for LLVM
言語拡張
- GHC拡張ノック(Part 1) - Haskell-jp
- Language.Haskell.Extension
- GHCanIUse
- 24 Days of GHC Extensions
- Language extensions
- 見せてやろうGHCが持つ真のチカラを! GHCの言語拡張を一覧する方法について。
- GHC拡張FunctionalDependenciesとは
- Haskellの言語拡張たち
- StrictData拡張について
- ApplicativeDo 拡張について
- 非可述多相に触れる: GHC の ImpredicativeTypes 拡張 - Qiita
- LambdaCase in the wild
- Deriving Via
- Popularity of Haskell Extensions
- A Guide to GHC’s Extensions - Jannis’ Word Discounter
- Haskell Extensions.ipynb
- 独断と偏見で語るGHCのderiving系拡張 - Qiita
- Extensions :: Kowainik
- GHC拡張のTypeApplicationsについて - Qiita
- Golfing language extensions - DEV
- 新しいGHC拡張、NoFieldSelectorsについて - モナドとわたしとコモナド
Pattern Synonyms
- Pattern Synonyms
- Pattern synonymsの使い道
- Pattern Synonymsで遊ぶ - Qiita
- Haskell Explained · PatternSynonyms for expressive code
- Kwang’s Haskell Blog - Pattern Synonyms
Backpack
- Backpack and separate compilation
- 03 Backpack to Work: Towrads Backpack in Practice
- Try Backpack: ghc –backpack
- Designing the Backpack signature ecosystem : Inside 214-1E
- Backpack to Work: Towards Practical Mixin Linking for Haskell
- Haskell Backpack 覚え書き
- Queensland FP Lab - Backpack for initial and final encodings
- Picnic: put containers into a backpack
- Well-Typed - The Haskell Consultants: Unrolling data with Backpack
正格評価
Bang patterms
Proposals
- Default superclass instances
- Adding dependent types to Haskell
- Applicative do-notation
- MonadFail proposal (MFP)
- Monad of no return Proposal (MRP)
- Left-Associative Semigroup Operator Alias
- ghc-proposals/0000-overloaded-application.rst at overloadedapplication · cdsmith/ghc-proposals
- ghc-proposals/0000-or-patterns.rst at or_patterns · osa1/ghc-proposals
- Monad of no return/» Proposal (MRP)
Quantified constraints
- Quantified constraints by Gertjan423 · Pull Request #109 · ghc-proposals/ghc-proposals
- Quantified Class Constraints
- How to derive Generic for (some) GADTs using QuantifiedConstraints - Ryan Scott