London

Stephen Diehl

Elite
@sdiehl

I build software.

write-you-a-haskell. Building a modern functional compiler from first principles. (http://dev.stephendiehl.com/fun/)

3.5k

wiwinwlh. What I Wish I Knew When Learning Haskell

2.7k

kaleidoscope. Haskell LLVM JIT Compiler Tutorial

1k

bulletproofs. Bulletproofs are short non-interactive zero-knowledge proofs that require no trusted setup

554

typechecker-zoo. A menagerie of cute implementations of modern typechecking algorithms

435

numpile. A tiny 1000 line LLVM-based numeric specializer for scientific Python code.

412

gevent-tutorial. Gevent tutorial for the Working Python Developer

381

wasm. Haskell compiler infastructure for WebAssembly

354

tinyjit. Haskell JIT

187

minichat. Minimal realtime chat application ( Tutorial )

132

mlir-egglog. A toy compiler for NumPy array expressions that uses e-graphs and MLIR

122

kaylee. MapReduce with ZeroMQ

121

repline. Haskeline wrapper for GHCi-like REPL interfaces

108

papers.

95

tiny-graphrag. A tiny 1000 line implementation of GraphRAG in Python

95

zkp. A framework to execute and verify algorithms using Groth16 zkSNARKs.

89

arithmetic-circuits. Arithmetic circuits for zero knowledge proof systems

83

dive-into-ghc. Dive into GHC

83

cabal-edit. A utility for managing Hackage dependencies and manipulating Cabal files from the command line.

77

zurihac-crypto. Small minimal examples of modern cryptographic techniques in Haskell

77

schnorr-nizk. Schnorr Protocol for Non-interactive Zero-Knowledge Proofs

76

sympy-mcp. A MCP server for symbolic manipulation of mathematical expressions

75

usolver. A model context protocol server for solving combinatorial optimization problems with logical and numerical constraints.

65

haskell-vim-proto. Basic starter config for Vim and Haskell

63

double-ratchet. Double ratchet algorithm for E2E encryption

60

pairing. Optimised bilinear pairings over elliptic curves

55

galois-field. Finite field and algebraic extension field arithmetic

53

zeromq-chat. A gevent + Django + Socket.IO + ZeroMQ chat example

53

sonic. Zero-Knowledge SNARKs from Linear-Size Universal and Updatable Structured Reference Strings

48

aos-signature. Abe-Ohkubo-Suzuki Linkable Ring Signatures

48

pynanomsg. Python bindings for nanomsg

46

elliptic-curve. A polymorphic interface for elliptic curve operations

44

subpy. Python subsets

41

vim-ormolu. Plugin for formatting Haskell source code

41

llvm-tutorial-standalone. DEPRECATED (Use: https://github.com/llvm-hs/llvm-hs-kaleidoscope )

37

oblivious-transfer. Oblivious transfer for multiparty computation

37

cats. Generate commutative diagrams inside of Pandoc with Tikz

34

pyrewrite. Python term rewriting

30

compiler-crates. Minimal examples of crates useful for compiler development

30

prm. Library for training process reward models

29

hakyll-bootstrap. Basic Hakyll + Bootstrap site

29

paris-fp. Paris Functional Programming Meetup

27

dotfiles. My config files

25

llvm-codegen. Code generation utils for LLVM

23

numpush. Shared Memory Numpy ( Deprecated, See https://github.com/ContinuumIO/blaze )

22

tiny-r1. Recreating the minimal training methods of DeepSeek-R1 for small langauge models.

22

tiny-gpt2. A reference implementation of GPT-2 in Python, for teaching ML compilers

22

shamir. Shamir Secret Sharing

21

galois-fft. Finite field polynomial arithmetic based on fast Fourier transforms

19

datetime. Financial datetimes and holiday recurrence rules

18

haskell-picosat. Haskell bindings for PicoSAT solver

17

awesome-crypto-critique. Awesome critique of crypto / web3. Aim for this to be high quality and constructive (where possible!)

16

beamer_template. A toolchain to make beautiful Beamer presentations without fussing with LaTeX.

12

gevent_viz. Visualize gevent Greenlet context switches

7
54
Apply