Welcome to Imprint

Notes on systems, compilers, and the occasional tangent.

I'm an early-career engineer who writes to think. Expect {distributed, operating, database} systems, neuro, and whatever I'm currently building or breaking.

Read Musings 8 musings

dfs and bfs in the wild

I've been building a static analysis tool that detects concurrency bugs in Go programs. One of the rules it enforces is if a goroutine loops over a channel using for range, that channel needs to be closed at some point, otherwise the goroutine will block forever and leak. For example: go func() { for range ch { } }() To check whether close(ch) actually happens, the tool looks at the code's co

Read Article

CFG, Data Flow Analysis and SSA

Compilers use static analysis to determine where transformations can be safely applied. Control flow and data flow analysis are two techniques often used in compiler optimization. Control-flow analysis seeks to understand the flow of control between operations, and data-flow analysis(DFA) analyses the flow of actual values through the code and operations. SSA is an intermediate representation that

Read Article