Function Coloring Debate: Why Context Propagation in Go Is Still an Infection
A viral cross-language essay reignited debate over 'function coloring,' a concept first introduced by Bob Nystrom in February 2015 to describe the incompatibility between async and sync functions. Critics argued that Go avoids the problem by not using async keywords, but a Causality.blog retrospective from April 2026 countered that Go introduced its own form of coloring via context.Context, which must be threaded through every function in the call stack. A September 2026 Jerf.org essay pushed back, claiming context.Context is not a true color because developers can halt its spread using context.Background(), though critics argue this does not eliminate the costly upstream rewrites. Java's Project Loom, which shipped Virtual Threads in Java 21 in September 2023, is cited as strong evidence that context propagation is a genuine engineering burden, since its entire design goal was to have the runtime handle threading automatically. The core argument is that whether propagation is triggered by a keyword or a context object, the real cost lies in rewriting the call tree — and redefining the terminology does not change that reality.
This is an AI-generated summary. ShortSingh links to the original source for the complete article.


Discussion (0)
Log in to join the discussion and vote.
Log in