RSS Amplifier

Blog

Simon Marlow

simonmar.github.ioRSS feed ↗10 posts

Written by

Latest posts

Browsing Stackage with VS Code and Glean

Browsing Stackage with VS Code and Glean June 11, 2025 Have you ever wished you could browse all the Haskell packages together in your IDE, with full navigation using go-to-definition and find-references? Here’s a demo of something I hacked together while at ZuriHac 2025 over the weekend: Video In the previous post I talked about how to index all of Hackage (actually Stackage, strictly speaking,…

Indexing Hackage: Glean vs. hiedb

Indexing Hackage: Glean vs. hiedb May 22, 2025 I thought it might be fun to try to use Glean to index as much of Hackage as I could, and then do some rough comparisons against hiedb and also play around to see what interesting queries we could run against a database of all the code in Hackage. This project was mostly just for fun: Glean is not going to replace hiedb any time soon, for reasons that…

Rethinking Static Reference Tables in GHC

Rethinking Static Reference Tables in GHC June 22, 2018 It seems rare these days to be able to make an improvement that’s unambiguously better on every axis. Most changes involve a tradeoff of some kind. With a compiler, the tradeoff is often between performance and code size (e.g. specialising code to make it faster leaves us with more code), or between performance and complexity (e.g. adding a…

Fixing 17 space leaks in GHCi, and keeping them fixed

Fixing 17 space leaks in GHCi, and keeping them fixed June 20, 2018 In this post I want to tackle a couple of problems that have irritated me from time to time when working with Haskell. GHC provides some powerful tools for debugging space leaks, but sometimes they’re not enough . The heap profiler shows you what’s in the heap, but it doesn’t provide detailed visibility into the chain of…

Hotswapping Haskell

Hotswapping Haskell October 17, 2017 This is a guest post by Jon Coens . Jon worked on the Haxl project since the beginning in 2013, and nowadays he works on broadening Haskell use within Facebook. From developing code through deployment, Facebook needs to move fast. This is especially true for one of our anti-abuse systems that deploys hundreds of code changes every day. Releasing a large…

Asynchronous Exceptions in Practice

Asynchronous Exceptions in Practice January 24, 2017 Asynchronous exceptions are a controversial feature of Haskell. You can throw an exception to another thread, at any time; all you need is its ThreadId : throwTo :: Exception e => ThreadId -> e -> IO () The other thread will receive the exception immediately, whatever it is doing. So you have to be ready for an asynchronous exception to fire at…

Haskell in the Datacentre

Haskell in the Datacentre December 8, 2016 At Facebook we run Haskell on thousands of servers, together handling over a million requests per second. Obviously we’d like to make the most efficient use of hardware and get the most throughput per server that we can. So how do you tune a Haskell-based server to run well? Over the past few months we’ve been tuning our server to squeeze out as much…

Haskell positions at Facebook

Haskell positions at Facebook August 24, 2016 Want to write Haskell for a living? At Facebook we’re looking for Spam Fighters. A large part of this job involves writing Haskell code to run on our Sigma/Haxl platform. It’s a fascinating and exciting area to work in, using state of the art tools and systems, working with amazing people, and of course you get to write Haskell every day. Come and see…

Stack traces in GHCi, coming in GHC 8.0.1

Stack traces in GHCi, coming in GHC 8.0.1 February 12, 2016 tl;dr In the upcoming GHC 8.0.1 release, if you start GHCi with ghci -fexternal-interpreter -prof (any packages you use must be built for profiling), then you get access to detailed stack traces for all the code you load into GHCi. Stack traces can be accessed via assert , error , Debug.Trace.traceStack , and the API in GHC.Stack .…

Fun With Haxl (Part 1)

Fun With Haxl (Part 1) October 20, 2015 This is a blog-post version of a talk I recently gave at the Haskell eXchange 2015 . The video of the talk is here , but there were a lot of questions during the talk which aren’t very audible on the video, so hopefully this post will be useful to folks who weren’t at the event. If you want to play with the examples yourself, the code is available on github…

Simon Marlow · RSS Amplifier