Haxl A Big Hammer for Concurrency
summary
Haxl flips the default from sequential to concurrent by turning IO into data and using an applicative-do compiler extension so independent effects run automatically, with a user-supplied fetch implementation that batches or forks requests. It adds a per-request cache that makes recorded runs reproducible for unit tests and debugging. Deployed in production, it runs on thousands of machines serving over a million requests per second across hundreds of thousands of lines of Haskell and reduces latency while handling hundreds of changes per day.
AI-written summary · about
chapters (57)
- 0:00Intro
- 0:33Slow IO
- 1:07Real world changes
- 1:57Problems are related
- 2:16What are you talking about
- 2:31Every language has some way
- 3:15Theres a bunch of problems
- 3:47Refactoring
- 4:32Side effects
- 4:56No side effects
- 8:36Fake World
- 8:47Mock API
- 10:13Debugging
- 10:31Logging
- 12:08Big Hammers
- 12:52Distributed Source Control
- 15:14What is Haxl
- 15:33Example
- 16:08Get Latest Version
- 16:41Get Hosts
- 16:51Get Version
- 17:06Update Version
- 17:24Script
- 19:22Dependencies
- 20:05Parallelization
- 20:23How does it work
- 21:07Haxl vs Garbage Collection
- 21:54Concurrent
- 22:26How does concurrency work
- 25:19Sequential
- 25:31Applicative
- 26:44Explicit Concurrent
- 27:12Applicative Operator
- 29:11Dependency Graph
- 30:15Limitations
- 31:02Refactoring the code
- 33:20Haxl update
- 33:51New contract
- 34:41Batching tradeoff
- 36:08Recap
- 37:53Data is malleable
- 38:03Internal cache
- 38:41Modularity
- 38:58Caching
- 40:03Cache
- 40:35Unit Tests
- 40:59Cache Request
- 41:13Synthetic Test Data
- 42:18Why we made Haxl
- 42:34Sigma
- 43:17Haskell
- 43:45Performance
- 44:07Stats
- 44:35Github
- 44:47Hacks
- 45:24Summary
- 45:48RunAxle
related talks
01h 02mHPX - A C++ Library for Parallelism and Concurrency
01h 06mAsynchronous Computation in C++
46mUniversal Highload Patterns: A Game Server Example in Haskell
15mTowards Safe HPC: Productivity and Performance via Rust Interfaces for a Distribu...
18mA better way of doing Async Rust
59mC++ on its way to exascale and beyond
01h 07mAnother fundamental shift in Parallelism Paradigm?
01h 06mTrue parallelism, with no concept of threads
